]> _ Git - bloomsburie.git/commitdiff
#6989
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 7 Feb 2025 18:32:35 +0000 (19:32 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 7 Feb 2025 18:32:35 +0000 (19:32 +0100)
2174 files changed:
.idea/deployment.xml
CubeIT/cli.php [new file with mode: 0644]
CubeIT/common.php [new file with mode: 0644]
CubeIT/css/admin/common.css [new file with mode: 0644]
CubeIT/css/admin/translations.css [new file with mode: 0644]
CubeIT/css/admin/tree.css [new file with mode: 0644]
CubeIT/css/bannerCookies.css [new file with mode: 0644]
CubeIT/css/cms.css [new file with mode: 0644]
CubeIT/css/cube.css [new file with mode: 0644]
CubeIT/css/fileManager.css [new file with mode: 0644]
CubeIT/css/multiform.css [new file with mode: 0644]
CubeIT/css/orderform.css [new file with mode: 0644]
CubeIT/css/popup.css [new file with mode: 0644]
CubeIT/css/selectlist.css [new file with mode: 0644]
CubeIT/css/slideshow.css [new file with mode: 0644]
CubeIT/css/taghandler.css [new file with mode: 0644]
CubeIT/images/close.svg [new file with mode: 0644]
CubeIT/images/download.png [new file with mode: 0644]
CubeIT/images/external.png [new file with mode: 0644]
CubeIT/images/files/audio.png [new file with mode: 0644]
CubeIT/images/files/blank.png [new file with mode: 0644]
CubeIT/images/files/document.png [new file with mode: 0644]
CubeIT/images/files/executable.png [new file with mode: 0644]
CubeIT/images/files/html.png [new file with mode: 0644]
CubeIT/images/files/image.png [new file with mode: 0644]
CubeIT/images/files/package.png [new file with mode: 0644]
CubeIT/images/files/presentation.png [new file with mode: 0644]
CubeIT/images/files/spreadsheet.png [new file with mode: 0644]
CubeIT/images/files/text.png [new file with mode: 0644]
CubeIT/images/files/video.png [new file with mode: 0644]
CubeIT/images/filesmanager/delete.png [new file with mode: 0644]
CubeIT/images/flags/ad.png [new file with mode: 0644]
CubeIT/images/flags/ae.png [new file with mode: 0644]
CubeIT/images/flags/af.png [new file with mode: 0644]
CubeIT/images/flags/ag.png [new file with mode: 0644]
CubeIT/images/flags/ai.png [new file with mode: 0644]
CubeIT/images/flags/al.png [new file with mode: 0644]
CubeIT/images/flags/am.png [new file with mode: 0644]
CubeIT/images/flags/an.png [new file with mode: 0644]
CubeIT/images/flags/ao.png [new file with mode: 0644]
CubeIT/images/flags/ar.png [new file with mode: 0644]
CubeIT/images/flags/as.png [new file with mode: 0644]
CubeIT/images/flags/at.png [new file with mode: 0644]
CubeIT/images/flags/au.png [new file with mode: 0644]
CubeIT/images/flags/aw.png [new file with mode: 0644]
CubeIT/images/flags/ax.png [new file with mode: 0644]
CubeIT/images/flags/az.png [new file with mode: 0644]
CubeIT/images/flags/ba.png [new file with mode: 0644]
CubeIT/images/flags/bb.png [new file with mode: 0644]
CubeIT/images/flags/bd.png [new file with mode: 0644]
CubeIT/images/flags/be.png [new file with mode: 0644]
CubeIT/images/flags/bf.png [new file with mode: 0644]
CubeIT/images/flags/bg.png [new file with mode: 0644]
CubeIT/images/flags/bh.png [new file with mode: 0644]
CubeIT/images/flags/bi.png [new file with mode: 0644]
CubeIT/images/flags/bj.png [new file with mode: 0644]
CubeIT/images/flags/bm.png [new file with mode: 0644]
CubeIT/images/flags/bn.png [new file with mode: 0644]
CubeIT/images/flags/bo.png [new file with mode: 0644]
CubeIT/images/flags/br.png [new file with mode: 0644]
CubeIT/images/flags/bs.png [new file with mode: 0644]
CubeIT/images/flags/bt.png [new file with mode: 0644]
CubeIT/images/flags/bv.png [new file with mode: 0644]
CubeIT/images/flags/bw.png [new file with mode: 0644]
CubeIT/images/flags/by.png [new file with mode: 0644]
CubeIT/images/flags/bz.png [new file with mode: 0644]
CubeIT/images/flags/ca.png [new file with mode: 0644]
CubeIT/images/flags/catalonia.png [new file with mode: 0644]
CubeIT/images/flags/cc.png [new file with mode: 0644]
CubeIT/images/flags/cd.png [new file with mode: 0644]
CubeIT/images/flags/cf.png [new file with mode: 0644]
CubeIT/images/flags/cg.png [new file with mode: 0644]
CubeIT/images/flags/ch.png [new file with mode: 0644]
CubeIT/images/flags/ci.png [new file with mode: 0644]
CubeIT/images/flags/ck.png [new file with mode: 0644]
CubeIT/images/flags/cl.png [new file with mode: 0644]
CubeIT/images/flags/cm.png [new file with mode: 0644]
CubeIT/images/flags/cn.png [new file with mode: 0644]
CubeIT/images/flags/co.png [new file with mode: 0644]
CubeIT/images/flags/cr.png [new file with mode: 0644]
CubeIT/images/flags/cs.png [new file with mode: 0644]
CubeIT/images/flags/cu.png [new file with mode: 0644]
CubeIT/images/flags/cv.png [new file with mode: 0644]
CubeIT/images/flags/cx.png [new file with mode: 0644]
CubeIT/images/flags/cy.png [new file with mode: 0644]
CubeIT/images/flags/cz.png [new file with mode: 0644]
CubeIT/images/flags/de.png [new file with mode: 0644]
CubeIT/images/flags/dj.png [new file with mode: 0644]
CubeIT/images/flags/dk.png [new file with mode: 0644]
CubeIT/images/flags/dm.png [new file with mode: 0644]
CubeIT/images/flags/do.png [new file with mode: 0644]
CubeIT/images/flags/dz.png [new file with mode: 0644]
CubeIT/images/flags/ec.png [new file with mode: 0644]
CubeIT/images/flags/ee.png [new file with mode: 0644]
CubeIT/images/flags/eg.png [new file with mode: 0644]
CubeIT/images/flags/eh.png [new file with mode: 0644]
CubeIT/images/flags/england.png [new file with mode: 0644]
CubeIT/images/flags/er.png [new file with mode: 0644]
CubeIT/images/flags/es.png [new file with mode: 0644]
CubeIT/images/flags/et.png [new file with mode: 0644]
CubeIT/images/flags/europeanunion.png [new file with mode: 0644]
CubeIT/images/flags/fam.png [new file with mode: 0644]
CubeIT/images/flags/fi.png [new file with mode: 0644]
CubeIT/images/flags/fj.png [new file with mode: 0644]
CubeIT/images/flags/fk.png [new file with mode: 0644]
CubeIT/images/flags/fm.png [new file with mode: 0644]
CubeIT/images/flags/fo.png [new file with mode: 0644]
CubeIT/images/flags/fr.png [new file with mode: 0644]
CubeIT/images/flags/ga.png [new file with mode: 0644]
CubeIT/images/flags/gb.png [new file with mode: 0644]
CubeIT/images/flags/gd.png [new file with mode: 0644]
CubeIT/images/flags/ge.png [new file with mode: 0644]
CubeIT/images/flags/gf.png [new file with mode: 0644]
CubeIT/images/flags/gh.png [new file with mode: 0644]
CubeIT/images/flags/gi.png [new file with mode: 0644]
CubeIT/images/flags/gl.png [new file with mode: 0644]
CubeIT/images/flags/gm.png [new file with mode: 0644]
CubeIT/images/flags/gn.png [new file with mode: 0644]
CubeIT/images/flags/gp.png [new file with mode: 0644]
CubeIT/images/flags/gq.png [new file with mode: 0644]
CubeIT/images/flags/gr.png [new file with mode: 0644]
CubeIT/images/flags/gs.png [new file with mode: 0644]
CubeIT/images/flags/gt.png [new file with mode: 0644]
CubeIT/images/flags/gu.png [new file with mode: 0644]
CubeIT/images/flags/gw.png [new file with mode: 0644]
CubeIT/images/flags/gy.png [new file with mode: 0644]
CubeIT/images/flags/hk.png [new file with mode: 0644]
CubeIT/images/flags/hm.png [new file with mode: 0644]
CubeIT/images/flags/hn.png [new file with mode: 0644]
CubeIT/images/flags/hr.png [new file with mode: 0644]
CubeIT/images/flags/ht.png [new file with mode: 0644]
CubeIT/images/flags/hu.png [new file with mode: 0644]
CubeIT/images/flags/id.png [new file with mode: 0644]
CubeIT/images/flags/ie.png [new file with mode: 0644]
CubeIT/images/flags/il.png [new file with mode: 0644]
CubeIT/images/flags/in.png [new file with mode: 0644]
CubeIT/images/flags/io.png [new file with mode: 0644]
CubeIT/images/flags/iq.png [new file with mode: 0644]
CubeIT/images/flags/ir.png [new file with mode: 0644]
CubeIT/images/flags/is.png [new file with mode: 0644]
CubeIT/images/flags/it.png [new file with mode: 0644]
CubeIT/images/flags/jm.png [new file with mode: 0644]
CubeIT/images/flags/jo.png [new file with mode: 0644]
CubeIT/images/flags/jp.png [new file with mode: 0644]
CubeIT/images/flags/ke.png [new file with mode: 0644]
CubeIT/images/flags/kg.png [new file with mode: 0644]
CubeIT/images/flags/kh.png [new file with mode: 0644]
CubeIT/images/flags/ki.png [new file with mode: 0644]
CubeIT/images/flags/km.png [new file with mode: 0644]
CubeIT/images/flags/kn.png [new file with mode: 0644]
CubeIT/images/flags/kp.png [new file with mode: 0644]
CubeIT/images/flags/kr.png [new file with mode: 0644]
CubeIT/images/flags/kw.png [new file with mode: 0644]
CubeIT/images/flags/ky.png [new file with mode: 0644]
CubeIT/images/flags/kz.png [new file with mode: 0644]
CubeIT/images/flags/la.png [new file with mode: 0644]
CubeIT/images/flags/lb.png [new file with mode: 0644]
CubeIT/images/flags/lc.png [new file with mode: 0644]
CubeIT/images/flags/li.png [new file with mode: 0644]
CubeIT/images/flags/lk.png [new file with mode: 0644]
CubeIT/images/flags/lr.png [new file with mode: 0644]
CubeIT/images/flags/ls.png [new file with mode: 0644]
CubeIT/images/flags/lt.png [new file with mode: 0644]
CubeIT/images/flags/lu.png [new file with mode: 0644]
CubeIT/images/flags/lv.png [new file with mode: 0644]
CubeIT/images/flags/ly.png [new file with mode: 0644]
CubeIT/images/flags/ma.png [new file with mode: 0644]
CubeIT/images/flags/mc.png [new file with mode: 0644]
CubeIT/images/flags/md.png [new file with mode: 0644]
CubeIT/images/flags/me.png [new file with mode: 0644]
CubeIT/images/flags/mg.png [new file with mode: 0644]
CubeIT/images/flags/mh.png [new file with mode: 0644]
CubeIT/images/flags/mk.png [new file with mode: 0644]
CubeIT/images/flags/ml.png [new file with mode: 0644]
CubeIT/images/flags/mm.png [new file with mode: 0644]
CubeIT/images/flags/mn.png [new file with mode: 0644]
CubeIT/images/flags/mo.png [new file with mode: 0644]
CubeIT/images/flags/mp.png [new file with mode: 0644]
CubeIT/images/flags/mq.png [new file with mode: 0644]
CubeIT/images/flags/mr.png [new file with mode: 0644]
CubeIT/images/flags/ms.png [new file with mode: 0644]
CubeIT/images/flags/mt.png [new file with mode: 0644]
CubeIT/images/flags/mu.png [new file with mode: 0644]
CubeIT/images/flags/mv.png [new file with mode: 0644]
CubeIT/images/flags/mw.png [new file with mode: 0644]
CubeIT/images/flags/mx.png [new file with mode: 0644]
CubeIT/images/flags/my.png [new file with mode: 0644]
CubeIT/images/flags/mz.png [new file with mode: 0644]
CubeIT/images/flags/na.png [new file with mode: 0644]
CubeIT/images/flags/nc.png [new file with mode: 0644]
CubeIT/images/flags/ne.png [new file with mode: 0644]
CubeIT/images/flags/nf.png [new file with mode: 0644]
CubeIT/images/flags/ng.png [new file with mode: 0644]
CubeIT/images/flags/ni.png [new file with mode: 0644]
CubeIT/images/flags/nl.png [new file with mode: 0644]
CubeIT/images/flags/no.png [new file with mode: 0644]
CubeIT/images/flags/np.png [new file with mode: 0644]
CubeIT/images/flags/nr.png [new file with mode: 0644]
CubeIT/images/flags/nu.png [new file with mode: 0644]
CubeIT/images/flags/nz.png [new file with mode: 0644]
CubeIT/images/flags/om.png [new file with mode: 0644]
CubeIT/images/flags/pa.png [new file with mode: 0644]
CubeIT/images/flags/pe.png [new file with mode: 0644]
CubeIT/images/flags/pf.png [new file with mode: 0644]
CubeIT/images/flags/pg.png [new file with mode: 0644]
CubeIT/images/flags/ph.png [new file with mode: 0644]
CubeIT/images/flags/pk.png [new file with mode: 0644]
CubeIT/images/flags/pl.png [new file with mode: 0644]
CubeIT/images/flags/pm.png [new file with mode: 0644]
CubeIT/images/flags/pn.png [new file with mode: 0644]
CubeIT/images/flags/pr.png [new file with mode: 0644]
CubeIT/images/flags/ps.png [new file with mode: 0644]
CubeIT/images/flags/pt.png [new file with mode: 0644]
CubeIT/images/flags/pw.png [new file with mode: 0644]
CubeIT/images/flags/py.png [new file with mode: 0644]
CubeIT/images/flags/qa.png [new file with mode: 0644]
CubeIT/images/flags/re.png [new file with mode: 0644]
CubeIT/images/flags/ro.png [new file with mode: 0644]
CubeIT/images/flags/rs.png [new file with mode: 0644]
CubeIT/images/flags/ru.png [new file with mode: 0644]
CubeIT/images/flags/rw.png [new file with mode: 0644]
CubeIT/images/flags/sa.png [new file with mode: 0644]
CubeIT/images/flags/sb.png [new file with mode: 0644]
CubeIT/images/flags/sc.png [new file with mode: 0644]
CubeIT/images/flags/scotland.png [new file with mode: 0644]
CubeIT/images/flags/sd.png [new file with mode: 0644]
CubeIT/images/flags/se.png [new file with mode: 0644]
CubeIT/images/flags/sg.png [new file with mode: 0644]
CubeIT/images/flags/sh.png [new file with mode: 0644]
CubeIT/images/flags/si.png [new file with mode: 0644]
CubeIT/images/flags/sj.png [new file with mode: 0644]
CubeIT/images/flags/sk.png [new file with mode: 0644]
CubeIT/images/flags/sl.png [new file with mode: 0644]
CubeIT/images/flags/sm.png [new file with mode: 0644]
CubeIT/images/flags/sn.png [new file with mode: 0644]
CubeIT/images/flags/so.png [new file with mode: 0644]
CubeIT/images/flags/sr.png [new file with mode: 0644]
CubeIT/images/flags/st.png [new file with mode: 0644]
CubeIT/images/flags/sv.png [new file with mode: 0644]
CubeIT/images/flags/sy.png [new file with mode: 0644]
CubeIT/images/flags/sz.png [new file with mode: 0644]
CubeIT/images/flags/tc.png [new file with mode: 0644]
CubeIT/images/flags/td.png [new file with mode: 0644]
CubeIT/images/flags/tf.png [new file with mode: 0644]
CubeIT/images/flags/tg.png [new file with mode: 0644]
CubeIT/images/flags/th.png [new file with mode: 0644]
CubeIT/images/flags/tj.png [new file with mode: 0644]
CubeIT/images/flags/tk.png [new file with mode: 0644]
CubeIT/images/flags/tl.png [new file with mode: 0644]
CubeIT/images/flags/tm.png [new file with mode: 0644]
CubeIT/images/flags/tn.png [new file with mode: 0644]
CubeIT/images/flags/to.png [new file with mode: 0644]
CubeIT/images/flags/tr.png [new file with mode: 0644]
CubeIT/images/flags/tt.png [new file with mode: 0644]
CubeIT/images/flags/tv.png [new file with mode: 0644]
CubeIT/images/flags/tw.png [new file with mode: 0644]
CubeIT/images/flags/tz.png [new file with mode: 0644]
CubeIT/images/flags/ua.png [new file with mode: 0644]
CubeIT/images/flags/ug.png [new file with mode: 0644]
CubeIT/images/flags/um.png [new file with mode: 0644]
CubeIT/images/flags/us.png [new file with mode: 0644]
CubeIT/images/flags/uy.png [new file with mode: 0644]
CubeIT/images/flags/uz.png [new file with mode: 0644]
CubeIT/images/flags/va.png [new file with mode: 0644]
CubeIT/images/flags/vc.png [new file with mode: 0644]
CubeIT/images/flags/ve.png [new file with mode: 0644]
CubeIT/images/flags/vg.png [new file with mode: 0644]
CubeIT/images/flags/vi.png [new file with mode: 0644]
CubeIT/images/flags/vn.png [new file with mode: 0644]
CubeIT/images/flags/vu.png [new file with mode: 0644]
CubeIT/images/flags/wales.png [new file with mode: 0644]
CubeIT/images/flags/wf.png [new file with mode: 0644]
CubeIT/images/flags/ws.png [new file with mode: 0644]
CubeIT/images/flags/ye.png [new file with mode: 0644]
CubeIT/images/flags/yt.png [new file with mode: 0644]
CubeIT/images/flags/za.png [new file with mode: 0644]
CubeIT/images/flags/zm.png [new file with mode: 0644]
CubeIT/images/flags/zw.png [new file with mode: 0644]
CubeIT/images/loader.gif [new file with mode: 0644]
CubeIT/images/markitup/bold.png [new file with mode: 0644]
CubeIT/images/markitup/br.png [new file with mode: 0644]
CubeIT/images/markitup/code.png [new file with mode: 0644]
CubeIT/images/markitup/file.png [new file with mode: 0644]
CubeIT/images/markitup/h1.png [new file with mode: 0644]
CubeIT/images/markitup/h2.png [new file with mode: 0644]
CubeIT/images/markitup/h3.png [new file with mode: 0644]
CubeIT/images/markitup/h4.png [new file with mode: 0644]
CubeIT/images/markitup/h5.png [new file with mode: 0644]
CubeIT/images/markitup/h6.png [new file with mode: 0644]
CubeIT/images/markitup/html.png [new file with mode: 0644]
CubeIT/images/markitup/italic.png [new file with mode: 0644]
CubeIT/images/markitup/link.png [new file with mode: 0644]
CubeIT/images/markitup/list-bullet.png [new file with mode: 0644]
CubeIT/images/markitup/list-numeric.png [new file with mode: 0644]
CubeIT/images/markitup/picture.png [new file with mode: 0644]
CubeIT/images/markitup/preview.png [new file with mode: 0644]
CubeIT/images/markitup/quotes.png [new file with mode: 0644]
CubeIT/images/markitup/slideshow.png [new file with mode: 0644]
CubeIT/images/markitup/stroke.png [new file with mode: 0644]
CubeIT/images/markitup/underline.png [new file with mode: 0644]
CubeIT/images/markitup/url.png [new file with mode: 0644]
CubeIT/images/markitup/webvideo.png [new file with mode: 0644]
CubeIT/images/online-offline.png [new file with mode: 0644]
CubeIT/images/silk/accept.png [new file with mode: 0644]
CubeIT/images/silk/add.png [new file with mode: 0644]
CubeIT/images/silk/anchor.png [new file with mode: 0644]
CubeIT/images/silk/application.png [new file with mode: 0644]
CubeIT/images/silk/application_add.png [new file with mode: 0644]
CubeIT/images/silk/application_cascade.png [new file with mode: 0644]
CubeIT/images/silk/application_delete.png [new file with mode: 0644]
CubeIT/images/silk/application_double.png [new file with mode: 0644]
CubeIT/images/silk/application_edit.png [new file with mode: 0644]
CubeIT/images/silk/application_error.png [new file with mode: 0644]
CubeIT/images/silk/application_form.png [new file with mode: 0644]
CubeIT/images/silk/application_form_add.png [new file with mode: 0644]
CubeIT/images/silk/application_form_delete.png [new file with mode: 0644]
CubeIT/images/silk/application_form_edit.png [new file with mode: 0644]
CubeIT/images/silk/application_form_magnify.png [new file with mode: 0644]
CubeIT/images/silk/application_get.png [new file with mode: 0644]
CubeIT/images/silk/application_go.png [new file with mode: 0644]
CubeIT/images/silk/application_home.png [new file with mode: 0644]
CubeIT/images/silk/application_key.png [new file with mode: 0644]
CubeIT/images/silk/application_lightning.png [new file with mode: 0644]
CubeIT/images/silk/application_link.png [new file with mode: 0644]
CubeIT/images/silk/application_osx.png [new file with mode: 0644]
CubeIT/images/silk/application_osx_terminal.png [new file with mode: 0644]
CubeIT/images/silk/application_put.png [new file with mode: 0644]
CubeIT/images/silk/application_side_boxes.png [new file with mode: 0644]
CubeIT/images/silk/application_side_contract.png [new file with mode: 0644]
CubeIT/images/silk/application_side_expand.png [new file with mode: 0644]
CubeIT/images/silk/application_side_list.png [new file with mode: 0644]
CubeIT/images/silk/application_side_tree.png [new file with mode: 0644]
CubeIT/images/silk/application_split.png [new file with mode: 0644]
CubeIT/images/silk/application_tile_horizontal.png [new file with mode: 0644]
CubeIT/images/silk/application_tile_vertical.png [new file with mode: 0644]
CubeIT/images/silk/application_view_columns.png [new file with mode: 0644]
CubeIT/images/silk/application_view_detail.png [new file with mode: 0644]
CubeIT/images/silk/application_view_gallery.png [new file with mode: 0644]
CubeIT/images/silk/application_view_icons.png [new file with mode: 0644]
CubeIT/images/silk/application_view_list.png [new file with mode: 0644]
CubeIT/images/silk/application_view_tile.png [new file with mode: 0644]
CubeIT/images/silk/application_xp.png [new file with mode: 0644]
CubeIT/images/silk/application_xp_terminal.png [new file with mode: 0644]
CubeIT/images/silk/arrow_branch.png [new file with mode: 0644]
CubeIT/images/silk/arrow_divide.png [new file with mode: 0644]
CubeIT/images/silk/arrow_down.png [new file with mode: 0644]
CubeIT/images/silk/arrow_in.png [new file with mode: 0644]
CubeIT/images/silk/arrow_inout.png [new file with mode: 0644]
CubeIT/images/silk/arrow_join.png [new file with mode: 0644]
CubeIT/images/silk/arrow_left.png [new file with mode: 0644]
CubeIT/images/silk/arrow_merge.png [new file with mode: 0644]
CubeIT/images/silk/arrow_out.png [new file with mode: 0644]
CubeIT/images/silk/arrow_redo.png [new file with mode: 0644]
CubeIT/images/silk/arrow_refresh.png [new file with mode: 0644]
CubeIT/images/silk/arrow_refresh_small.png [new file with mode: 0644]
CubeIT/images/silk/arrow_right.png [new file with mode: 0644]
CubeIT/images/silk/arrow_rotate_anticlockwise.png [new file with mode: 0644]
CubeIT/images/silk/arrow_rotate_clockwise.png [new file with mode: 0644]
CubeIT/images/silk/arrow_switch.png [new file with mode: 0644]
CubeIT/images/silk/arrow_turn_left.png [new file with mode: 0644]
CubeIT/images/silk/arrow_turn_right.png [new file with mode: 0644]
CubeIT/images/silk/arrow_undo.png [new file with mode: 0644]
CubeIT/images/silk/arrow_up.png [new file with mode: 0644]
CubeIT/images/silk/asterisk_orange.png [new file with mode: 0644]
CubeIT/images/silk/asterisk_yellow.png [new file with mode: 0644]
CubeIT/images/silk/attach.png [new file with mode: 0644]
CubeIT/images/silk/award_star_add.png [new file with mode: 0644]
CubeIT/images/silk/award_star_bronze_1.png [new file with mode: 0644]
CubeIT/images/silk/award_star_bronze_2.png [new file with mode: 0644]
CubeIT/images/silk/award_star_bronze_3.png [new file with mode: 0644]
CubeIT/images/silk/award_star_delete.png [new file with mode: 0644]
CubeIT/images/silk/award_star_gold_1.png [new file with mode: 0644]
CubeIT/images/silk/award_star_gold_2.png [new file with mode: 0644]
CubeIT/images/silk/award_star_gold_3.png [new file with mode: 0644]
CubeIT/images/silk/award_star_silver_1.png [new file with mode: 0644]
CubeIT/images/silk/award_star_silver_2.png [new file with mode: 0644]
CubeIT/images/silk/award_star_silver_3.png [new file with mode: 0644]
CubeIT/images/silk/basket.png [new file with mode: 0644]
CubeIT/images/silk/basket_add.png [new file with mode: 0644]
CubeIT/images/silk/basket_delete.png [new file with mode: 0644]
CubeIT/images/silk/basket_edit.png [new file with mode: 0644]
CubeIT/images/silk/basket_error.png [new file with mode: 0644]
CubeIT/images/silk/basket_go.png [new file with mode: 0644]
CubeIT/images/silk/basket_put.png [new file with mode: 0644]
CubeIT/images/silk/basket_remove.png [new file with mode: 0644]
CubeIT/images/silk/bell.png [new file with mode: 0644]
CubeIT/images/silk/bell_add.png [new file with mode: 0644]
CubeIT/images/silk/bell_delete.png [new file with mode: 0644]
CubeIT/images/silk/bell_error.png [new file with mode: 0644]
CubeIT/images/silk/bell_go.png [new file with mode: 0644]
CubeIT/images/silk/bell_link.png [new file with mode: 0644]
CubeIT/images/silk/bin.png [new file with mode: 0644]
CubeIT/images/silk/bin_closed.png [new file with mode: 0644]
CubeIT/images/silk/bin_empty.png [new file with mode: 0644]
CubeIT/images/silk/bomb.png [new file with mode: 0644]
CubeIT/images/silk/book.png [new file with mode: 0644]
CubeIT/images/silk/book_add.png [new file with mode: 0644]
CubeIT/images/silk/book_addresses.png [new file with mode: 0644]
CubeIT/images/silk/book_delete.png [new file with mode: 0644]
CubeIT/images/silk/book_edit.png [new file with mode: 0644]
CubeIT/images/silk/book_error.png [new file with mode: 0644]
CubeIT/images/silk/book_go.png [new file with mode: 0644]
CubeIT/images/silk/book_key.png [new file with mode: 0644]
CubeIT/images/silk/book_link.png [new file with mode: 0644]
CubeIT/images/silk/book_next.png [new file with mode: 0644]
CubeIT/images/silk/book_open.png [new file with mode: 0644]
CubeIT/images/silk/book_previous.png [new file with mode: 0644]
CubeIT/images/silk/box.png [new file with mode: 0644]
CubeIT/images/silk/brick.png [new file with mode: 0644]
CubeIT/images/silk/brick_add.png [new file with mode: 0644]
CubeIT/images/silk/brick_delete.png [new file with mode: 0644]
CubeIT/images/silk/brick_edit.png [new file with mode: 0644]
CubeIT/images/silk/brick_error.png [new file with mode: 0644]
CubeIT/images/silk/brick_go.png [new file with mode: 0644]
CubeIT/images/silk/brick_link.png [new file with mode: 0644]
CubeIT/images/silk/bricks.png [new file with mode: 0644]
CubeIT/images/silk/briefcase.png [new file with mode: 0644]
CubeIT/images/silk/bug.png [new file with mode: 0644]
CubeIT/images/silk/bug_add.png [new file with mode: 0644]
CubeIT/images/silk/bug_delete.png [new file with mode: 0644]
CubeIT/images/silk/bug_edit.png [new file with mode: 0644]
CubeIT/images/silk/bug_error.png [new file with mode: 0644]
CubeIT/images/silk/bug_go.png [new file with mode: 0644]
CubeIT/images/silk/bug_link.png [new file with mode: 0644]
CubeIT/images/silk/building.png [new file with mode: 0644]
CubeIT/images/silk/building_add.png [new file with mode: 0644]
CubeIT/images/silk/building_delete.png [new file with mode: 0644]
CubeIT/images/silk/building_edit.png [new file with mode: 0644]
CubeIT/images/silk/building_error.png [new file with mode: 0644]
CubeIT/images/silk/building_go.png [new file with mode: 0644]
CubeIT/images/silk/building_key.png [new file with mode: 0644]
CubeIT/images/silk/building_link.png [new file with mode: 0644]
CubeIT/images/silk/bullet_add.png [new file with mode: 0644]
CubeIT/images/silk/bullet_arrow_bottom.png [new file with mode: 0644]
CubeIT/images/silk/bullet_arrow_down.png [new file with mode: 0644]
CubeIT/images/silk/bullet_arrow_top.png [new file with mode: 0644]
CubeIT/images/silk/bullet_arrow_up.png [new file with mode: 0644]
CubeIT/images/silk/bullet_black.png [new file with mode: 0644]
CubeIT/images/silk/bullet_blue.png [new file with mode: 0644]
CubeIT/images/silk/bullet_delete.png [new file with mode: 0644]
CubeIT/images/silk/bullet_disk.png [new file with mode: 0644]
CubeIT/images/silk/bullet_error.png [new file with mode: 0644]
CubeIT/images/silk/bullet_feed.png [new file with mode: 0644]
CubeIT/images/silk/bullet_go.png [new file with mode: 0644]
CubeIT/images/silk/bullet_green.png [new file with mode: 0644]
CubeIT/images/silk/bullet_key.png [new file with mode: 0644]
CubeIT/images/silk/bullet_orange.png [new file with mode: 0644]
CubeIT/images/silk/bullet_picture.png [new file with mode: 0644]
CubeIT/images/silk/bullet_pink.png [new file with mode: 0644]
CubeIT/images/silk/bullet_purple.png [new file with mode: 0644]
CubeIT/images/silk/bullet_red.png [new file with mode: 0644]
CubeIT/images/silk/bullet_star.png [new file with mode: 0644]
CubeIT/images/silk/bullet_toggle_minus.png [new file with mode: 0644]
CubeIT/images/silk/bullet_toggle_plus.png [new file with mode: 0644]
CubeIT/images/silk/bullet_white.png [new file with mode: 0644]
CubeIT/images/silk/bullet_wrench.png [new file with mode: 0644]
CubeIT/images/silk/bullet_yellow.png [new file with mode: 0644]
CubeIT/images/silk/cake.png [new file with mode: 0644]
CubeIT/images/silk/calculator.png [new file with mode: 0644]
CubeIT/images/silk/calculator_add.png [new file with mode: 0644]
CubeIT/images/silk/calculator_delete.png [new file with mode: 0644]
CubeIT/images/silk/calculator_edit.png [new file with mode: 0644]
CubeIT/images/silk/calculator_error.png [new file with mode: 0644]
CubeIT/images/silk/calculator_link.png [new file with mode: 0644]
CubeIT/images/silk/calendar.png [new file with mode: 0644]
CubeIT/images/silk/calendar_add.png [new file with mode: 0644]
CubeIT/images/silk/calendar_delete.png [new file with mode: 0644]
CubeIT/images/silk/calendar_edit.png [new file with mode: 0644]
CubeIT/images/silk/calendar_link.png [new file with mode: 0644]
CubeIT/images/silk/calendar_view_day.png [new file with mode: 0644]
CubeIT/images/silk/calendar_view_month.png [new file with mode: 0644]
CubeIT/images/silk/calendar_view_week.png [new file with mode: 0644]
CubeIT/images/silk/camera.png [new file with mode: 0644]
CubeIT/images/silk/camera_add.png [new file with mode: 0644]
CubeIT/images/silk/camera_delete.png [new file with mode: 0644]
CubeIT/images/silk/camera_edit.png [new file with mode: 0644]
CubeIT/images/silk/camera_error.png [new file with mode: 0644]
CubeIT/images/silk/camera_go.png [new file with mode: 0644]
CubeIT/images/silk/camera_link.png [new file with mode: 0644]
CubeIT/images/silk/camera_small.png [new file with mode: 0644]
CubeIT/images/silk/cancel.png [new file with mode: 0644]
CubeIT/images/silk/car.png [new file with mode: 0644]
CubeIT/images/silk/car_add.png [new file with mode: 0644]
CubeIT/images/silk/car_delete.png [new file with mode: 0644]
CubeIT/images/silk/cart.png [new file with mode: 0644]
CubeIT/images/silk/cart_add.png [new file with mode: 0644]
CubeIT/images/silk/cart_delete.png [new file with mode: 0644]
CubeIT/images/silk/cart_edit.png [new file with mode: 0644]
CubeIT/images/silk/cart_error.png [new file with mode: 0644]
CubeIT/images/silk/cart_go.png [new file with mode: 0644]
CubeIT/images/silk/cart_put.png [new file with mode: 0644]
CubeIT/images/silk/cart_remove.png [new file with mode: 0644]
CubeIT/images/silk/cd.png [new file with mode: 0644]
CubeIT/images/silk/cd_add.png [new file with mode: 0644]
CubeIT/images/silk/cd_burn.png [new file with mode: 0644]
CubeIT/images/silk/cd_delete.png [new file with mode: 0644]
CubeIT/images/silk/cd_edit.png [new file with mode: 0644]
CubeIT/images/silk/cd_eject.png [new file with mode: 0644]
CubeIT/images/silk/cd_go.png [new file with mode: 0644]
CubeIT/images/silk/chart_bar.png [new file with mode: 0644]
CubeIT/images/silk/chart_bar_add.png [new file with mode: 0644]
CubeIT/images/silk/chart_bar_delete.png [new file with mode: 0644]
CubeIT/images/silk/chart_bar_edit.png [new file with mode: 0644]
CubeIT/images/silk/chart_bar_error.png [new file with mode: 0644]
CubeIT/images/silk/chart_bar_link.png [new file with mode: 0644]
CubeIT/images/silk/chart_curve.png [new file with mode: 0644]
CubeIT/images/silk/chart_curve_add.png [new file with mode: 0644]
CubeIT/images/silk/chart_curve_delete.png [new file with mode: 0644]
CubeIT/images/silk/chart_curve_edit.png [new file with mode: 0644]
CubeIT/images/silk/chart_curve_error.png [new file with mode: 0644]
CubeIT/images/silk/chart_curve_go.png [new file with mode: 0644]
CubeIT/images/silk/chart_curve_link.png [new file with mode: 0644]
CubeIT/images/silk/chart_line.png [new file with mode: 0644]
CubeIT/images/silk/chart_line_add.png [new file with mode: 0644]
CubeIT/images/silk/chart_line_delete.png [new file with mode: 0644]
CubeIT/images/silk/chart_line_edit.png [new file with mode: 0644]
CubeIT/images/silk/chart_line_error.png [new file with mode: 0644]
CubeIT/images/silk/chart_line_link.png [new file with mode: 0644]
CubeIT/images/silk/chart_organisation.png [new file with mode: 0644]
CubeIT/images/silk/chart_organisation_add.png [new file with mode: 0644]
CubeIT/images/silk/chart_organisation_delete.png [new file with mode: 0644]
CubeIT/images/silk/chart_pie.png [new file with mode: 0644]
CubeIT/images/silk/chart_pie_add.png [new file with mode: 0644]
CubeIT/images/silk/chart_pie_delete.png [new file with mode: 0644]
CubeIT/images/silk/chart_pie_edit.png [new file with mode: 0644]
CubeIT/images/silk/chart_pie_error.png [new file with mode: 0644]
CubeIT/images/silk/chart_pie_link.png [new file with mode: 0644]
CubeIT/images/silk/clock.png [new file with mode: 0644]
CubeIT/images/silk/clock_add.png [new file with mode: 0644]
CubeIT/images/silk/clock_delete.png [new file with mode: 0644]
CubeIT/images/silk/clock_edit.png [new file with mode: 0644]
CubeIT/images/silk/clock_error.png [new file with mode: 0644]
CubeIT/images/silk/clock_go.png [new file with mode: 0644]
CubeIT/images/silk/clock_link.png [new file with mode: 0644]
CubeIT/images/silk/clock_pause.png [new file with mode: 0644]
CubeIT/images/silk/clock_play.png [new file with mode: 0644]
CubeIT/images/silk/clock_red.png [new file with mode: 0644]
CubeIT/images/silk/clock_stop.png [new file with mode: 0644]
CubeIT/images/silk/cog.png [new file with mode: 0644]
CubeIT/images/silk/cog_add.png [new file with mode: 0644]
CubeIT/images/silk/cog_delete.png [new file with mode: 0644]
CubeIT/images/silk/cog_edit.png [new file with mode: 0644]
CubeIT/images/silk/cog_error.png [new file with mode: 0644]
CubeIT/images/silk/cog_go.png [new file with mode: 0644]
CubeIT/images/silk/coins.png [new file with mode: 0644]
CubeIT/images/silk/coins_add.png [new file with mode: 0644]
CubeIT/images/silk/coins_delete.png [new file with mode: 0644]
CubeIT/images/silk/color_swatch.png [new file with mode: 0644]
CubeIT/images/silk/color_wheel.png [new file with mode: 0644]
CubeIT/images/silk/comment.png [new file with mode: 0644]
CubeIT/images/silk/comment_add.png [new file with mode: 0644]
CubeIT/images/silk/comment_delete.png [new file with mode: 0644]
CubeIT/images/silk/comment_edit.png [new file with mode: 0644]
CubeIT/images/silk/comments.png [new file with mode: 0644]
CubeIT/images/silk/comments_add.png [new file with mode: 0644]
CubeIT/images/silk/comments_delete.png [new file with mode: 0644]
CubeIT/images/silk/compress.png [new file with mode: 0644]
CubeIT/images/silk/computer.png [new file with mode: 0644]
CubeIT/images/silk/computer_add.png [new file with mode: 0644]
CubeIT/images/silk/computer_delete.png [new file with mode: 0644]
CubeIT/images/silk/computer_edit.png [new file with mode: 0644]
CubeIT/images/silk/computer_error.png [new file with mode: 0644]
CubeIT/images/silk/computer_go.png [new file with mode: 0644]
CubeIT/images/silk/computer_key.png [new file with mode: 0644]
CubeIT/images/silk/computer_link.png [new file with mode: 0644]
CubeIT/images/silk/connect.png [new file with mode: 0644]
CubeIT/images/silk/contrast.png [new file with mode: 0644]
CubeIT/images/silk/contrast_decrease.png [new file with mode: 0644]
CubeIT/images/silk/contrast_high.png [new file with mode: 0644]
CubeIT/images/silk/contrast_increase.png [new file with mode: 0644]
CubeIT/images/silk/contrast_low.png [new file with mode: 0644]
CubeIT/images/silk/control_eject.png [new file with mode: 0644]
CubeIT/images/silk/control_eject_blue.png [new file with mode: 0644]
CubeIT/images/silk/control_end.png [new file with mode: 0644]
CubeIT/images/silk/control_end_blue.png [new file with mode: 0644]
CubeIT/images/silk/control_equalizer.png [new file with mode: 0644]
CubeIT/images/silk/control_equalizer_blue.png [new file with mode: 0644]
CubeIT/images/silk/control_fastforward.png [new file with mode: 0644]
CubeIT/images/silk/control_fastforward_blue.png [new file with mode: 0644]
CubeIT/images/silk/control_pause.png [new file with mode: 0644]
CubeIT/images/silk/control_pause_blue.png [new file with mode: 0644]
CubeIT/images/silk/control_play.png [new file with mode: 0644]
CubeIT/images/silk/control_play_blue.png [new file with mode: 0644]
CubeIT/images/silk/control_repeat.png [new file with mode: 0644]
CubeIT/images/silk/control_repeat_blue.png [new file with mode: 0644]
CubeIT/images/silk/control_rewind.png [new file with mode: 0644]
CubeIT/images/silk/control_rewind_blue.png [new file with mode: 0644]
CubeIT/images/silk/control_start.png [new file with mode: 0644]
CubeIT/images/silk/control_start_blue.png [new file with mode: 0644]
CubeIT/images/silk/control_stop.png [new file with mode: 0644]
CubeIT/images/silk/control_stop_blue.png [new file with mode: 0644]
CubeIT/images/silk/controller.png [new file with mode: 0644]
CubeIT/images/silk/controller_add.png [new file with mode: 0644]
CubeIT/images/silk/controller_delete.png [new file with mode: 0644]
CubeIT/images/silk/controller_error.png [new file with mode: 0644]
CubeIT/images/silk/creditcards.png [new file with mode: 0644]
CubeIT/images/silk/cross.png [new file with mode: 0644]
CubeIT/images/silk/css.png [new file with mode: 0644]
CubeIT/images/silk/css_add.png [new file with mode: 0644]
CubeIT/images/silk/css_delete.png [new file with mode: 0644]
CubeIT/images/silk/css_go.png [new file with mode: 0644]
CubeIT/images/silk/css_valid.png [new file with mode: 0644]
CubeIT/images/silk/cup.png [new file with mode: 0644]
CubeIT/images/silk/cup_add.png [new file with mode: 0644]
CubeIT/images/silk/cup_delete.png [new file with mode: 0644]
CubeIT/images/silk/cup_edit.png [new file with mode: 0644]
CubeIT/images/silk/cup_error.png [new file with mode: 0644]
CubeIT/images/silk/cup_go.png [new file with mode: 0644]
CubeIT/images/silk/cup_key.png [new file with mode: 0644]
CubeIT/images/silk/cup_link.png [new file with mode: 0644]
CubeIT/images/silk/cursor.png [new file with mode: 0644]
CubeIT/images/silk/cut.png [new file with mode: 0644]
CubeIT/images/silk/cut_red.png [new file with mode: 0644]
CubeIT/images/silk/database.png [new file with mode: 0644]
CubeIT/images/silk/database_add.png [new file with mode: 0644]
CubeIT/images/silk/database_connect.png [new file with mode: 0644]
CubeIT/images/silk/database_delete.png [new file with mode: 0644]
CubeIT/images/silk/database_edit.png [new file with mode: 0644]
CubeIT/images/silk/database_error.png [new file with mode: 0644]
CubeIT/images/silk/database_gear.png [new file with mode: 0644]
CubeIT/images/silk/database_go.png [new file with mode: 0644]
CubeIT/images/silk/database_key.png [new file with mode: 0644]
CubeIT/images/silk/database_lightning.png [new file with mode: 0644]
CubeIT/images/silk/database_link.png [new file with mode: 0644]
CubeIT/images/silk/database_refresh.png [new file with mode: 0644]
CubeIT/images/silk/database_save.png [new file with mode: 0644]
CubeIT/images/silk/database_table.png [new file with mode: 0644]
CubeIT/images/silk/date.png [new file with mode: 0644]
CubeIT/images/silk/date_add.png [new file with mode: 0644]
CubeIT/images/silk/date_delete.png [new file with mode: 0644]
CubeIT/images/silk/date_edit.png [new file with mode: 0644]
CubeIT/images/silk/date_error.png [new file with mode: 0644]
CubeIT/images/silk/date_go.png [new file with mode: 0644]
CubeIT/images/silk/date_link.png [new file with mode: 0644]
CubeIT/images/silk/date_magnify.png [new file with mode: 0644]
CubeIT/images/silk/date_next.png [new file with mode: 0644]
CubeIT/images/silk/date_previous.png [new file with mode: 0644]
CubeIT/images/silk/delete.png [new file with mode: 0644]
CubeIT/images/silk/disconnect.png [new file with mode: 0644]
CubeIT/images/silk/disk.png [new file with mode: 0644]
CubeIT/images/silk/disk_multiple.png [new file with mode: 0644]
CubeIT/images/silk/door.png [new file with mode: 0644]
CubeIT/images/silk/door_in.png [new file with mode: 0644]
CubeIT/images/silk/door_open.png [new file with mode: 0644]
CubeIT/images/silk/door_out.png [new file with mode: 0644]
CubeIT/images/silk/drink.png [new file with mode: 0644]
CubeIT/images/silk/drink_empty.png [new file with mode: 0644]
CubeIT/images/silk/drive.png [new file with mode: 0644]
CubeIT/images/silk/drive_add.png [new file with mode: 0644]
CubeIT/images/silk/drive_burn.png [new file with mode: 0644]
CubeIT/images/silk/drive_cd.png [new file with mode: 0644]
CubeIT/images/silk/drive_cd_empty.png [new file with mode: 0644]
CubeIT/images/silk/drive_delete.png [new file with mode: 0644]
CubeIT/images/silk/drive_disk.png [new file with mode: 0644]
CubeIT/images/silk/drive_edit.png [new file with mode: 0644]
CubeIT/images/silk/drive_error.png [new file with mode: 0644]
CubeIT/images/silk/drive_go.png [new file with mode: 0644]
CubeIT/images/silk/drive_key.png [new file with mode: 0644]
CubeIT/images/silk/drive_link.png [new file with mode: 0644]
CubeIT/images/silk/drive_magnify.png [new file with mode: 0644]
CubeIT/images/silk/drive_network.png [new file with mode: 0644]
CubeIT/images/silk/drive_rename.png [new file with mode: 0644]
CubeIT/images/silk/drive_user.png [new file with mode: 0644]
CubeIT/images/silk/drive_web.png [new file with mode: 0644]
CubeIT/images/silk/dvd.png [new file with mode: 0644]
CubeIT/images/silk/dvd_add.png [new file with mode: 0644]
CubeIT/images/silk/dvd_delete.png [new file with mode: 0644]
CubeIT/images/silk/dvd_edit.png [new file with mode: 0644]
CubeIT/images/silk/dvd_error.png [new file with mode: 0644]
CubeIT/images/silk/dvd_go.png [new file with mode: 0644]
CubeIT/images/silk/dvd_key.png [new file with mode: 0644]
CubeIT/images/silk/dvd_link.png [new file with mode: 0644]
CubeIT/images/silk/email.png [new file with mode: 0644]
CubeIT/images/silk/email_add.png [new file with mode: 0644]
CubeIT/images/silk/email_attach.png [new file with mode: 0644]
CubeIT/images/silk/email_delete.png [new file with mode: 0644]
CubeIT/images/silk/email_edit.png [new file with mode: 0644]
CubeIT/images/silk/email_error.png [new file with mode: 0644]
CubeIT/images/silk/email_go.png [new file with mode: 0644]
CubeIT/images/silk/email_link.png [new file with mode: 0644]
CubeIT/images/silk/email_open.png [new file with mode: 0644]
CubeIT/images/silk/email_open_image.png [new file with mode: 0644]
CubeIT/images/silk/emoticon_evilgrin.png [new file with mode: 0644]
CubeIT/images/silk/emoticon_grin.png [new file with mode: 0644]
CubeIT/images/silk/emoticon_happy.png [new file with mode: 0644]
CubeIT/images/silk/emoticon_smile.png [new file with mode: 0644]
CubeIT/images/silk/emoticon_surprised.png [new file with mode: 0644]
CubeIT/images/silk/emoticon_tongue.png [new file with mode: 0644]
CubeIT/images/silk/emoticon_unhappy.png [new file with mode: 0644]
CubeIT/images/silk/emoticon_waii.png [new file with mode: 0644]
CubeIT/images/silk/emoticon_wink.png [new file with mode: 0644]
CubeIT/images/silk/error.png [new file with mode: 0644]
CubeIT/images/silk/error_add.png [new file with mode: 0644]
CubeIT/images/silk/error_delete.png [new file with mode: 0644]
CubeIT/images/silk/error_go.png [new file with mode: 0644]
CubeIT/images/silk/exclamation.png [new file with mode: 0644]
CubeIT/images/silk/eye.png [new file with mode: 0644]
CubeIT/images/silk/feed.png [new file with mode: 0644]
CubeIT/images/silk/feed_add.png [new file with mode: 0644]
CubeIT/images/silk/feed_delete.png [new file with mode: 0644]
CubeIT/images/silk/feed_disk.png [new file with mode: 0644]
CubeIT/images/silk/feed_edit.png [new file with mode: 0644]
CubeIT/images/silk/feed_error.png [new file with mode: 0644]
CubeIT/images/silk/feed_go.png [new file with mode: 0644]
CubeIT/images/silk/feed_key.png [new file with mode: 0644]
CubeIT/images/silk/feed_link.png [new file with mode: 0644]
CubeIT/images/silk/feed_magnify.png [new file with mode: 0644]
CubeIT/images/silk/female.png [new file with mode: 0644]
CubeIT/images/silk/film.png [new file with mode: 0644]
CubeIT/images/silk/film_add.png [new file with mode: 0644]
CubeIT/images/silk/film_delete.png [new file with mode: 0644]
CubeIT/images/silk/film_edit.png [new file with mode: 0644]
CubeIT/images/silk/film_error.png [new file with mode: 0644]
CubeIT/images/silk/film_go.png [new file with mode: 0644]
CubeIT/images/silk/film_key.png [new file with mode: 0644]
CubeIT/images/silk/film_link.png [new file with mode: 0644]
CubeIT/images/silk/film_save.png [new file with mode: 0644]
CubeIT/images/silk/find.png [new file with mode: 0644]
CubeIT/images/silk/flag_blue.png [new file with mode: 0644]
CubeIT/images/silk/flag_green.png [new file with mode: 0644]
CubeIT/images/silk/flag_orange.png [new file with mode: 0644]
CubeIT/images/silk/flag_pink.png [new file with mode: 0644]
CubeIT/images/silk/flag_purple.png [new file with mode: 0644]
CubeIT/images/silk/flag_red.png [new file with mode: 0644]
CubeIT/images/silk/flag_yellow.png [new file with mode: 0644]
CubeIT/images/silk/folder.png [new file with mode: 0644]
CubeIT/images/silk/folder_add.png [new file with mode: 0644]
CubeIT/images/silk/folder_bell.png [new file with mode: 0644]
CubeIT/images/silk/folder_brick.png [new file with mode: 0644]
CubeIT/images/silk/folder_bug.png [new file with mode: 0644]
CubeIT/images/silk/folder_camera.png [new file with mode: 0644]
CubeIT/images/silk/folder_database.png [new file with mode: 0644]
CubeIT/images/silk/folder_delete.png [new file with mode: 0644]
CubeIT/images/silk/folder_edit.png [new file with mode: 0644]
CubeIT/images/silk/folder_error.png [new file with mode: 0644]
CubeIT/images/silk/folder_explore.png [new file with mode: 0644]
CubeIT/images/silk/folder_feed.png [new file with mode: 0644]
CubeIT/images/silk/folder_find.png [new file with mode: 0644]
CubeIT/images/silk/folder_go.png [new file with mode: 0644]
CubeIT/images/silk/folder_heart.png [new file with mode: 0644]
CubeIT/images/silk/folder_image.png [new file with mode: 0644]
CubeIT/images/silk/folder_key.png [new file with mode: 0644]
CubeIT/images/silk/folder_lightbulb.png [new file with mode: 0644]
CubeIT/images/silk/folder_link.png [new file with mode: 0644]
CubeIT/images/silk/folder_magnify.png [new file with mode: 0644]
CubeIT/images/silk/folder_page.png [new file with mode: 0644]
CubeIT/images/silk/folder_page_white.png [new file with mode: 0644]
CubeIT/images/silk/folder_palette.png [new file with mode: 0644]
CubeIT/images/silk/folder_picture.png [new file with mode: 0644]
CubeIT/images/silk/folder_star.png [new file with mode: 0644]
CubeIT/images/silk/folder_table.png [new file with mode: 0644]
CubeIT/images/silk/folder_user.png [new file with mode: 0644]
CubeIT/images/silk/folder_wrench.png [new file with mode: 0644]
CubeIT/images/silk/font.png [new file with mode: 0644]
CubeIT/images/silk/font_add.png [new file with mode: 0644]
CubeIT/images/silk/font_delete.png [new file with mode: 0644]
CubeIT/images/silk/font_go.png [new file with mode: 0644]
CubeIT/images/silk/group.png [new file with mode: 0644]
CubeIT/images/silk/group_add.png [new file with mode: 0644]
CubeIT/images/silk/group_delete.png [new file with mode: 0644]
CubeIT/images/silk/group_edit.png [new file with mode: 0644]
CubeIT/images/silk/group_error.png [new file with mode: 0644]
CubeIT/images/silk/group_gear.png [new file with mode: 0644]
CubeIT/images/silk/group_go.png [new file with mode: 0644]
CubeIT/images/silk/group_key.png [new file with mode: 0644]
CubeIT/images/silk/group_link.png [new file with mode: 0644]
CubeIT/images/silk/heart.png [new file with mode: 0644]
CubeIT/images/silk/heart_add.png [new file with mode: 0644]
CubeIT/images/silk/heart_delete.png [new file with mode: 0644]
CubeIT/images/silk/help.png [new file with mode: 0644]
CubeIT/images/silk/hourglass.png [new file with mode: 0644]
CubeIT/images/silk/hourglass_add.png [new file with mode: 0644]
CubeIT/images/silk/hourglass_delete.png [new file with mode: 0644]
CubeIT/images/silk/hourglass_go.png [new file with mode: 0644]
CubeIT/images/silk/hourglass_link.png [new file with mode: 0644]
CubeIT/images/silk/house.png [new file with mode: 0644]
CubeIT/images/silk/house_go.png [new file with mode: 0644]
CubeIT/images/silk/house_link.png [new file with mode: 0644]
CubeIT/images/silk/html.png [new file with mode: 0644]
CubeIT/images/silk/html_add.png [new file with mode: 0644]
CubeIT/images/silk/html_delete.png [new file with mode: 0644]
CubeIT/images/silk/html_go.png [new file with mode: 0644]
CubeIT/images/silk/html_valid.png [new file with mode: 0644]
CubeIT/images/silk/image.png [new file with mode: 0644]
CubeIT/images/silk/image_add.png [new file with mode: 0644]
CubeIT/images/silk/image_delete.png [new file with mode: 0644]
CubeIT/images/silk/image_edit.png [new file with mode: 0644]
CubeIT/images/silk/image_link.png [new file with mode: 0644]
CubeIT/images/silk/images.png [new file with mode: 0644]
CubeIT/images/silk/index.html [new file with mode: 0644]
CubeIT/images/silk/information.png [new file with mode: 0644]
CubeIT/images/silk/ipod.png [new file with mode: 0644]
CubeIT/images/silk/ipod_cast.png [new file with mode: 0644]
CubeIT/images/silk/ipod_cast_add.png [new file with mode: 0644]
CubeIT/images/silk/ipod_cast_delete.png [new file with mode: 0644]
CubeIT/images/silk/ipod_sound.png [new file with mode: 0644]
CubeIT/images/silk/joystick.png [new file with mode: 0644]
CubeIT/images/silk/joystick_add.png [new file with mode: 0644]
CubeIT/images/silk/joystick_delete.png [new file with mode: 0644]
CubeIT/images/silk/joystick_error.png [new file with mode: 0644]
CubeIT/images/silk/key.png [new file with mode: 0644]
CubeIT/images/silk/key_add.png [new file with mode: 0644]
CubeIT/images/silk/key_delete.png [new file with mode: 0644]
CubeIT/images/silk/key_go.png [new file with mode: 0644]
CubeIT/images/silk/keyboard.png [new file with mode: 0644]
CubeIT/images/silk/keyboard_add.png [new file with mode: 0644]
CubeIT/images/silk/keyboard_delete.png [new file with mode: 0644]
CubeIT/images/silk/keyboard_magnify.png [new file with mode: 0644]
CubeIT/images/silk/layers.png [new file with mode: 0644]
CubeIT/images/silk/layout.png [new file with mode: 0644]
CubeIT/images/silk/layout_add.png [new file with mode: 0644]
CubeIT/images/silk/layout_content.png [new file with mode: 0644]
CubeIT/images/silk/layout_delete.png [new file with mode: 0644]
CubeIT/images/silk/layout_edit.png [new file with mode: 0644]
CubeIT/images/silk/layout_error.png [new file with mode: 0644]
CubeIT/images/silk/layout_header.png [new file with mode: 0644]
CubeIT/images/silk/layout_link.png [new file with mode: 0644]
CubeIT/images/silk/layout_sidebar.png [new file with mode: 0644]
CubeIT/images/silk/lightbulb.png [new file with mode: 0644]
CubeIT/images/silk/lightbulb_add.png [new file with mode: 0644]
CubeIT/images/silk/lightbulb_delete.png [new file with mode: 0644]
CubeIT/images/silk/lightbulb_off.png [new file with mode: 0644]
CubeIT/images/silk/lightning.png [new file with mode: 0644]
CubeIT/images/silk/lightning_add.png [new file with mode: 0644]
CubeIT/images/silk/lightning_delete.png [new file with mode: 0644]
CubeIT/images/silk/lightning_go.png [new file with mode: 0644]
CubeIT/images/silk/link.png [new file with mode: 0644]
CubeIT/images/silk/link_add.png [new file with mode: 0644]
CubeIT/images/silk/link_break.png [new file with mode: 0644]
CubeIT/images/silk/link_delete.png [new file with mode: 0644]
CubeIT/images/silk/link_edit.png [new file with mode: 0644]
CubeIT/images/silk/link_error.png [new file with mode: 0644]
CubeIT/images/silk/link_go.png [new file with mode: 0644]
CubeIT/images/silk/lock.png [new file with mode: 0644]
CubeIT/images/silk/lock_add.png [new file with mode: 0644]
CubeIT/images/silk/lock_break.png [new file with mode: 0644]
CubeIT/images/silk/lock_delete.png [new file with mode: 0644]
CubeIT/images/silk/lock_edit.png [new file with mode: 0644]
CubeIT/images/silk/lock_go.png [new file with mode: 0644]
CubeIT/images/silk/lock_open.png [new file with mode: 0644]
CubeIT/images/silk/lorry.png [new file with mode: 0644]
CubeIT/images/silk/lorry_add.png [new file with mode: 0644]
CubeIT/images/silk/lorry_delete.png [new file with mode: 0644]
CubeIT/images/silk/lorry_error.png [new file with mode: 0644]
CubeIT/images/silk/lorry_flatbed.png [new file with mode: 0644]
CubeIT/images/silk/lorry_go.png [new file with mode: 0644]
CubeIT/images/silk/lorry_link.png [new file with mode: 0644]
CubeIT/images/silk/magifier_zoom_out.png [new file with mode: 0644]
CubeIT/images/silk/magnifier.png [new file with mode: 0644]
CubeIT/images/silk/magnifier_zoom_in.png [new file with mode: 0644]
CubeIT/images/silk/male.png [new file with mode: 0644]
CubeIT/images/silk/map.png [new file with mode: 0644]
CubeIT/images/silk/map_add.png [new file with mode: 0644]
CubeIT/images/silk/map_delete.png [new file with mode: 0644]
CubeIT/images/silk/map_edit.png [new file with mode: 0644]
CubeIT/images/silk/map_go.png [new file with mode: 0644]
CubeIT/images/silk/map_magnify.png [new file with mode: 0644]
CubeIT/images/silk/medal_bronze_1.png [new file with mode: 0644]
CubeIT/images/silk/medal_bronze_2.png [new file with mode: 0644]
CubeIT/images/silk/medal_bronze_3.png [new file with mode: 0644]
CubeIT/images/silk/medal_bronze_add.png [new file with mode: 0644]
CubeIT/images/silk/medal_bronze_delete.png [new file with mode: 0644]
CubeIT/images/silk/medal_gold_1.png [new file with mode: 0644]
CubeIT/images/silk/medal_gold_2.png [new file with mode: 0644]
CubeIT/images/silk/medal_gold_3.png [new file with mode: 0644]
CubeIT/images/silk/medal_gold_add.png [new file with mode: 0644]
CubeIT/images/silk/medal_gold_delete.png [new file with mode: 0644]
CubeIT/images/silk/medal_silver_1.png [new file with mode: 0644]
CubeIT/images/silk/medal_silver_2.png [new file with mode: 0644]
CubeIT/images/silk/medal_silver_3.png [new file with mode: 0644]
CubeIT/images/silk/medal_silver_add.png [new file with mode: 0644]
CubeIT/images/silk/medal_silver_delete.png [new file with mode: 0644]
CubeIT/images/silk/money.png [new file with mode: 0644]
CubeIT/images/silk/money_add.png [new file with mode: 0644]
CubeIT/images/silk/money_delete.png [new file with mode: 0644]
CubeIT/images/silk/money_dollar.png [new file with mode: 0644]
CubeIT/images/silk/money_euro.png [new file with mode: 0644]
CubeIT/images/silk/money_pound.png [new file with mode: 0644]
CubeIT/images/silk/money_yen.png [new file with mode: 0644]
CubeIT/images/silk/monitor.png [new file with mode: 0644]
CubeIT/images/silk/monitor_add.png [new file with mode: 0644]
CubeIT/images/silk/monitor_delete.png [new file with mode: 0644]
CubeIT/images/silk/monitor_edit.png [new file with mode: 0644]
CubeIT/images/silk/monitor_error.png [new file with mode: 0644]
CubeIT/images/silk/monitor_go.png [new file with mode: 0644]
CubeIT/images/silk/monitor_lightning.png [new file with mode: 0644]
CubeIT/images/silk/monitor_link.png [new file with mode: 0644]
CubeIT/images/silk/mouse.png [new file with mode: 0644]
CubeIT/images/silk/mouse_add.png [new file with mode: 0644]
CubeIT/images/silk/mouse_delete.png [new file with mode: 0644]
CubeIT/images/silk/mouse_error.png [new file with mode: 0644]
CubeIT/images/silk/music.png [new file with mode: 0644]
CubeIT/images/silk/new.png [new file with mode: 0644]
CubeIT/images/silk/newspaper.png [new file with mode: 0644]
CubeIT/images/silk/newspaper_add.png [new file with mode: 0644]
CubeIT/images/silk/newspaper_delete.png [new file with mode: 0644]
CubeIT/images/silk/newspaper_go.png [new file with mode: 0644]
CubeIT/images/silk/newspaper_link.png [new file with mode: 0644]
CubeIT/images/silk/note.png [new file with mode: 0644]
CubeIT/images/silk/note_add.png [new file with mode: 0644]
CubeIT/images/silk/note_delete.png [new file with mode: 0644]
CubeIT/images/silk/note_edit.png [new file with mode: 0644]
CubeIT/images/silk/note_error.png [new file with mode: 0644]
CubeIT/images/silk/note_go.png [new file with mode: 0644]
CubeIT/images/silk/overlays.png [new file with mode: 0644]
CubeIT/images/silk/package.png [new file with mode: 0644]
CubeIT/images/silk/package_add.png [new file with mode: 0644]
CubeIT/images/silk/package_delete.png [new file with mode: 0644]
CubeIT/images/silk/package_go.png [new file with mode: 0644]
CubeIT/images/silk/package_green.png [new file with mode: 0644]
CubeIT/images/silk/package_link.png [new file with mode: 0644]
CubeIT/images/silk/page.png [new file with mode: 0644]
CubeIT/images/silk/page_add.png [new file with mode: 0644]
CubeIT/images/silk/page_attach.png [new file with mode: 0644]
CubeIT/images/silk/page_code.png [new file with mode: 0644]
CubeIT/images/silk/page_copy.png [new file with mode: 0644]
CubeIT/images/silk/page_delete.png [new file with mode: 0644]
CubeIT/images/silk/page_edit.png [new file with mode: 0644]
CubeIT/images/silk/page_error.png [new file with mode: 0644]
CubeIT/images/silk/page_excel.png [new file with mode: 0644]
CubeIT/images/silk/page_find.png [new file with mode: 0644]
CubeIT/images/silk/page_gear.png [new file with mode: 0644]
CubeIT/images/silk/page_go.png [new file with mode: 0644]
CubeIT/images/silk/page_green.png [new file with mode: 0644]
CubeIT/images/silk/page_key.png [new file with mode: 0644]
CubeIT/images/silk/page_lightning.png [new file with mode: 0644]
CubeIT/images/silk/page_link.png [new file with mode: 0644]
CubeIT/images/silk/page_paintbrush.png [new file with mode: 0644]
CubeIT/images/silk/page_paste.png [new file with mode: 0644]
CubeIT/images/silk/page_red.png [new file with mode: 0644]
CubeIT/images/silk/page_refresh.png [new file with mode: 0644]
CubeIT/images/silk/page_save.png [new file with mode: 0644]
CubeIT/images/silk/page_white.png [new file with mode: 0644]
CubeIT/images/silk/page_white_acrobat.png [new file with mode: 0644]
CubeIT/images/silk/page_white_actionscript.png [new file with mode: 0644]
CubeIT/images/silk/page_white_add.png [new file with mode: 0644]
CubeIT/images/silk/page_white_c.png [new file with mode: 0644]
CubeIT/images/silk/page_white_camera.png [new file with mode: 0644]
CubeIT/images/silk/page_white_cd.png [new file with mode: 0644]
CubeIT/images/silk/page_white_code.png [new file with mode: 0644]
CubeIT/images/silk/page_white_code_red.png [new file with mode: 0644]
CubeIT/images/silk/page_white_coldfusion.png [new file with mode: 0644]
CubeIT/images/silk/page_white_compressed.png [new file with mode: 0644]
CubeIT/images/silk/page_white_copy.png [new file with mode: 0644]
CubeIT/images/silk/page_white_cplusplus.png [new file with mode: 0644]
CubeIT/images/silk/page_white_csharp.png [new file with mode: 0644]
CubeIT/images/silk/page_white_cup.png [new file with mode: 0644]
CubeIT/images/silk/page_white_database.png [new file with mode: 0644]
CubeIT/images/silk/page_white_delete.png [new file with mode: 0644]
CubeIT/images/silk/page_white_dvd.png [new file with mode: 0644]
CubeIT/images/silk/page_white_edit.png [new file with mode: 0644]
CubeIT/images/silk/page_white_error.png [new file with mode: 0644]
CubeIT/images/silk/page_white_excel.png [new file with mode: 0644]
CubeIT/images/silk/page_white_find.png [new file with mode: 0644]
CubeIT/images/silk/page_white_flash.png [new file with mode: 0644]
CubeIT/images/silk/page_white_freehand.png [new file with mode: 0644]
CubeIT/images/silk/page_white_gear.png [new file with mode: 0644]
CubeIT/images/silk/page_white_get.png [new file with mode: 0644]
CubeIT/images/silk/page_white_go.png [new file with mode: 0644]
CubeIT/images/silk/page_white_h.png [new file with mode: 0644]
CubeIT/images/silk/page_white_horizontal.png [new file with mode: 0644]
CubeIT/images/silk/page_white_key.png [new file with mode: 0644]
CubeIT/images/silk/page_white_lightning.png [new file with mode: 0644]
CubeIT/images/silk/page_white_link.png [new file with mode: 0644]
CubeIT/images/silk/page_white_magnify.png [new file with mode: 0644]
CubeIT/images/silk/page_white_medal.png [new file with mode: 0644]
CubeIT/images/silk/page_white_office.png [new file with mode: 0644]
CubeIT/images/silk/page_white_paint.png [new file with mode: 0644]
CubeIT/images/silk/page_white_paintbrush.png [new file with mode: 0644]
CubeIT/images/silk/page_white_paste.png [new file with mode: 0644]
CubeIT/images/silk/page_white_php.png [new file with mode: 0644]
CubeIT/images/silk/page_white_picture.png [new file with mode: 0644]
CubeIT/images/silk/page_white_powerpoint.png [new file with mode: 0644]
CubeIT/images/silk/page_white_put.png [new file with mode: 0644]
CubeIT/images/silk/page_white_ruby.png [new file with mode: 0644]
CubeIT/images/silk/page_white_stack.png [new file with mode: 0644]
CubeIT/images/silk/page_white_star.png [new file with mode: 0644]
CubeIT/images/silk/page_white_swoosh.png [new file with mode: 0644]
CubeIT/images/silk/page_white_text.png [new file with mode: 0644]
CubeIT/images/silk/page_white_text_width.png [new file with mode: 0644]
CubeIT/images/silk/page_white_tux.png [new file with mode: 0644]
CubeIT/images/silk/page_white_vector.png [new file with mode: 0644]
CubeIT/images/silk/page_white_visualstudio.png [new file with mode: 0644]
CubeIT/images/silk/page_white_width.png [new file with mode: 0644]
CubeIT/images/silk/page_white_word.png [new file with mode: 0644]
CubeIT/images/silk/page_white_world.png [new file with mode: 0644]
CubeIT/images/silk/page_white_wrench.png [new file with mode: 0644]
CubeIT/images/silk/page_white_zip.png [new file with mode: 0644]
CubeIT/images/silk/page_word.png [new file with mode: 0644]
CubeIT/images/silk/page_world.png [new file with mode: 0644]
CubeIT/images/silk/paintbrush.png [new file with mode: 0644]
CubeIT/images/silk/paintcan.png [new file with mode: 0644]
CubeIT/images/silk/palette.png [new file with mode: 0644]
CubeIT/images/silk/paste_plain.png [new file with mode: 0644]
CubeIT/images/silk/paste_word.png [new file with mode: 0644]
CubeIT/images/silk/pencil.png [new file with mode: 0644]
CubeIT/images/silk/pencil_add.png [new file with mode: 0644]
CubeIT/images/silk/pencil_delete.png [new file with mode: 0644]
CubeIT/images/silk/pencil_go.png [new file with mode: 0644]
CubeIT/images/silk/phone.png [new file with mode: 0644]
CubeIT/images/silk/phone_add.png [new file with mode: 0644]
CubeIT/images/silk/phone_delete.png [new file with mode: 0644]
CubeIT/images/silk/phone_sound.png [new file with mode: 0644]
CubeIT/images/silk/photo.png [new file with mode: 0644]
CubeIT/images/silk/photo_add.png [new file with mode: 0644]
CubeIT/images/silk/photo_delete.png [new file with mode: 0644]
CubeIT/images/silk/photo_link.png [new file with mode: 0644]
CubeIT/images/silk/photos.png [new file with mode: 0644]
CubeIT/images/silk/picture.png [new file with mode: 0644]
CubeIT/images/silk/picture_add.png [new file with mode: 0644]
CubeIT/images/silk/picture_delete.png [new file with mode: 0644]
CubeIT/images/silk/picture_edit.png [new file with mode: 0644]
CubeIT/images/silk/picture_empty.png [new file with mode: 0644]
CubeIT/images/silk/picture_error.png [new file with mode: 0644]
CubeIT/images/silk/picture_go.png [new file with mode: 0644]
CubeIT/images/silk/picture_key.png [new file with mode: 0644]
CubeIT/images/silk/picture_link.png [new file with mode: 0644]
CubeIT/images/silk/picture_save.png [new file with mode: 0644]
CubeIT/images/silk/pictures.png [new file with mode: 0644]
CubeIT/images/silk/pilcrow.png [new file with mode: 0644]
CubeIT/images/silk/pill.png [new file with mode: 0644]
CubeIT/images/silk/pill_add.png [new file with mode: 0644]
CubeIT/images/silk/pill_delete.png [new file with mode: 0644]
CubeIT/images/silk/pill_go.png [new file with mode: 0644]
CubeIT/images/silk/plugin.png [new file with mode: 0644]
CubeIT/images/silk/plugin_add.png [new file with mode: 0644]
CubeIT/images/silk/plugin_delete.png [new file with mode: 0644]
CubeIT/images/silk/plugin_disabled.png [new file with mode: 0644]
CubeIT/images/silk/plugin_edit.png [new file with mode: 0644]
CubeIT/images/silk/plugin_error.png [new file with mode: 0644]
CubeIT/images/silk/plugin_go.png [new file with mode: 0644]
CubeIT/images/silk/plugin_link.png [new file with mode: 0644]
CubeIT/images/silk/printer.png [new file with mode: 0644]
CubeIT/images/silk/printer_add.png [new file with mode: 0644]
CubeIT/images/silk/printer_delete.png [new file with mode: 0644]
CubeIT/images/silk/printer_empty.png [new file with mode: 0644]
CubeIT/images/silk/printer_error.png [new file with mode: 0644]
CubeIT/images/silk/rainbow.png [new file with mode: 0644]
CubeIT/images/silk/report.png [new file with mode: 0644]
CubeIT/images/silk/report_add.png [new file with mode: 0644]
CubeIT/images/silk/report_delete.png [new file with mode: 0644]
CubeIT/images/silk/report_disk.png [new file with mode: 0644]
CubeIT/images/silk/report_edit.png [new file with mode: 0644]
CubeIT/images/silk/report_go.png [new file with mode: 0644]
CubeIT/images/silk/report_key.png [new file with mode: 0644]
CubeIT/images/silk/report_link.png [new file with mode: 0644]
CubeIT/images/silk/report_magnify.png [new file with mode: 0644]
CubeIT/images/silk/report_picture.png [new file with mode: 0644]
CubeIT/images/silk/report_user.png [new file with mode: 0644]
CubeIT/images/silk/report_word.png [new file with mode: 0644]
CubeIT/images/silk/resultset_first.png [new file with mode: 0644]
CubeIT/images/silk/resultset_last.png [new file with mode: 0644]
CubeIT/images/silk/resultset_next.png [new file with mode: 0644]
CubeIT/images/silk/resultset_previous.png [new file with mode: 0644]
CubeIT/images/silk/rosette.png [new file with mode: 0644]
CubeIT/images/silk/rss.png [new file with mode: 0644]
CubeIT/images/silk/rss_add.png [new file with mode: 0644]
CubeIT/images/silk/rss_delete.png [new file with mode: 0644]
CubeIT/images/silk/rss_go.png [new file with mode: 0644]
CubeIT/images/silk/rss_valid.png [new file with mode: 0644]
CubeIT/images/silk/ruby.png [new file with mode: 0644]
CubeIT/images/silk/ruby_add.png [new file with mode: 0644]
CubeIT/images/silk/ruby_delete.png [new file with mode: 0644]
CubeIT/images/silk/ruby_gear.png [new file with mode: 0644]
CubeIT/images/silk/ruby_get.png [new file with mode: 0644]
CubeIT/images/silk/ruby_go.png [new file with mode: 0644]
CubeIT/images/silk/ruby_key.png [new file with mode: 0644]
CubeIT/images/silk/ruby_link.png [new file with mode: 0644]
CubeIT/images/silk/ruby_put.png [new file with mode: 0644]
CubeIT/images/silk/script.png [new file with mode: 0644]
CubeIT/images/silk/script_add.png [new file with mode: 0644]
CubeIT/images/silk/script_code.png [new file with mode: 0644]
CubeIT/images/silk/script_code_red.png [new file with mode: 0644]
CubeIT/images/silk/script_delete.png [new file with mode: 0644]
CubeIT/images/silk/script_edit.png [new file with mode: 0644]
CubeIT/images/silk/script_error.png [new file with mode: 0644]
CubeIT/images/silk/script_gear.png [new file with mode: 0644]
CubeIT/images/silk/script_go.png [new file with mode: 0644]
CubeIT/images/silk/script_key.png [new file with mode: 0644]
CubeIT/images/silk/script_lightning.png [new file with mode: 0644]
CubeIT/images/silk/script_link.png [new file with mode: 0644]
CubeIT/images/silk/script_palette.png [new file with mode: 0644]
CubeIT/images/silk/script_save.png [new file with mode: 0644]
CubeIT/images/silk/server.png [new file with mode: 0644]
CubeIT/images/silk/server_add.png [new file with mode: 0644]
CubeIT/images/silk/server_chart.png [new file with mode: 0644]
CubeIT/images/silk/server_compressed.png [new file with mode: 0644]
CubeIT/images/silk/server_connect.png [new file with mode: 0644]
CubeIT/images/silk/server_database.png [new file with mode: 0644]
CubeIT/images/silk/server_delete.png [new file with mode: 0644]
CubeIT/images/silk/server_edit.png [new file with mode: 0644]
CubeIT/images/silk/server_error.png [new file with mode: 0644]
CubeIT/images/silk/server_go.png [new file with mode: 0644]
CubeIT/images/silk/server_key.png [new file with mode: 0644]
CubeIT/images/silk/server_lightning.png [new file with mode: 0644]
CubeIT/images/silk/server_link.png [new file with mode: 0644]
CubeIT/images/silk/server_uncompressed.png [new file with mode: 0644]
CubeIT/images/silk/shading.png [new file with mode: 0644]
CubeIT/images/silk/shape_align_bottom.png [new file with mode: 0644]
CubeIT/images/silk/shape_align_center.png [new file with mode: 0644]
CubeIT/images/silk/shape_align_left.png [new file with mode: 0644]
CubeIT/images/silk/shape_align_middle.png [new file with mode: 0644]
CubeIT/images/silk/shape_align_right.png [new file with mode: 0644]
CubeIT/images/silk/shape_align_top.png [new file with mode: 0644]
CubeIT/images/silk/shape_flip_horizontal.png [new file with mode: 0644]
CubeIT/images/silk/shape_flip_vertical.png [new file with mode: 0644]
CubeIT/images/silk/shape_group.png [new file with mode: 0644]
CubeIT/images/silk/shape_handles.png [new file with mode: 0644]
CubeIT/images/silk/shape_move_back.png [new file with mode: 0644]
CubeIT/images/silk/shape_move_backwards.png [new file with mode: 0644]
CubeIT/images/silk/shape_move_forwards.png [new file with mode: 0644]
CubeIT/images/silk/shape_move_front.png [new file with mode: 0644]
CubeIT/images/silk/shape_rotate_anticlockwise.png [new file with mode: 0644]
CubeIT/images/silk/shape_rotate_clockwise.png [new file with mode: 0644]
CubeIT/images/silk/shape_square.png [new file with mode: 0644]
CubeIT/images/silk/shape_square_add.png [new file with mode: 0644]
CubeIT/images/silk/shape_square_delete.png [new file with mode: 0644]
CubeIT/images/silk/shape_square_edit.png [new file with mode: 0644]
CubeIT/images/silk/shape_square_error.png [new file with mode: 0644]
CubeIT/images/silk/shape_square_go.png [new file with mode: 0644]
CubeIT/images/silk/shape_square_key.png [new file with mode: 0644]
CubeIT/images/silk/shape_square_link.png [new file with mode: 0644]
CubeIT/images/silk/shape_ungroup.png [new file with mode: 0644]
CubeIT/images/silk/shield.png [new file with mode: 0644]
CubeIT/images/silk/shield_add.png [new file with mode: 0644]
CubeIT/images/silk/shield_delete.png [new file with mode: 0644]
CubeIT/images/silk/shield_go.png [new file with mode: 0644]
CubeIT/images/silk/sitemap.png [new file with mode: 0644]
CubeIT/images/silk/sitemap_color.png [new file with mode: 0644]
CubeIT/images/silk/sound.png [new file with mode: 0644]
CubeIT/images/silk/sound_add.png [new file with mode: 0644]
CubeIT/images/silk/sound_delete.png [new file with mode: 0644]
CubeIT/images/silk/sound_low.png [new file with mode: 0644]
CubeIT/images/silk/sound_mute.png [new file with mode: 0644]
CubeIT/images/silk/sound_none.png [new file with mode: 0644]
CubeIT/images/silk/spellcheck.png [new file with mode: 0644]
CubeIT/images/silk/sport_8ball.png [new file with mode: 0644]
CubeIT/images/silk/sport_basketball.png [new file with mode: 0644]
CubeIT/images/silk/sport_football.png [new file with mode: 0644]
CubeIT/images/silk/sport_golf.png [new file with mode: 0644]
CubeIT/images/silk/sport_raquet.png [new file with mode: 0644]
CubeIT/images/silk/sport_shuttlecock.png [new file with mode: 0644]
CubeIT/images/silk/sport_soccer.png [new file with mode: 0644]
CubeIT/images/silk/sport_tennis.png [new file with mode: 0644]
CubeIT/images/silk/star.png [new file with mode: 0644]
CubeIT/images/silk/status_away.png [new file with mode: 0644]
CubeIT/images/silk/status_busy.png [new file with mode: 0644]
CubeIT/images/silk/status_offline.png [new file with mode: 0644]
CubeIT/images/silk/status_online.png [new file with mode: 0644]
CubeIT/images/silk/stop.png [new file with mode: 0644]
CubeIT/images/silk/style.png [new file with mode: 0644]
CubeIT/images/silk/style_add.png [new file with mode: 0644]
CubeIT/images/silk/style_delete.png [new file with mode: 0644]
CubeIT/images/silk/style_edit.png [new file with mode: 0644]
CubeIT/images/silk/style_go.png [new file with mode: 0644]
CubeIT/images/silk/sum.png [new file with mode: 0644]
CubeIT/images/silk/tab.png [new file with mode: 0644]
CubeIT/images/silk/tab_add.png [new file with mode: 0644]
CubeIT/images/silk/tab_delete.png [new file with mode: 0644]
CubeIT/images/silk/tab_edit.png [new file with mode: 0644]
CubeIT/images/silk/tab_go.png [new file with mode: 0644]
CubeIT/images/silk/table.png [new file with mode: 0644]
CubeIT/images/silk/table_add.png [new file with mode: 0644]
CubeIT/images/silk/table_delete.png [new file with mode: 0644]
CubeIT/images/silk/table_edit.png [new file with mode: 0644]
CubeIT/images/silk/table_error.png [new file with mode: 0644]
CubeIT/images/silk/table_gear.png [new file with mode: 0644]
CubeIT/images/silk/table_go.png [new file with mode: 0644]
CubeIT/images/silk/table_key.png [new file with mode: 0644]
CubeIT/images/silk/table_lightning.png [new file with mode: 0644]
CubeIT/images/silk/table_link.png [new file with mode: 0644]
CubeIT/images/silk/table_multiple.png [new file with mode: 0644]
CubeIT/images/silk/table_refresh.png [new file with mode: 0644]
CubeIT/images/silk/table_relationship.png [new file with mode: 0644]
CubeIT/images/silk/table_row_delete.png [new file with mode: 0644]
CubeIT/images/silk/table_row_insert.png [new file with mode: 0644]
CubeIT/images/silk/table_save.png [new file with mode: 0644]
CubeIT/images/silk/table_sort.png [new file with mode: 0644]
CubeIT/images/silk/tag.png [new file with mode: 0644]
CubeIT/images/silk/tag_blue.png [new file with mode: 0644]
CubeIT/images/silk/tag_blue_add.png [new file with mode: 0644]
CubeIT/images/silk/tag_blue_delete.png [new file with mode: 0644]
CubeIT/images/silk/tag_blue_edit.png [new file with mode: 0644]
CubeIT/images/silk/tag_green.png [new file with mode: 0644]
CubeIT/images/silk/tag_orange.png [new file with mode: 0644]
CubeIT/images/silk/tag_pink.png [new file with mode: 0644]
CubeIT/images/silk/tag_purple.png [new file with mode: 0644]
CubeIT/images/silk/tag_red.png [new file with mode: 0644]
CubeIT/images/silk/tag_yellow.png [new file with mode: 0644]
CubeIT/images/silk/telephone.png [new file with mode: 0644]
CubeIT/images/silk/telephone_add.png [new file with mode: 0644]
CubeIT/images/silk/telephone_delete.png [new file with mode: 0644]
CubeIT/images/silk/telephone_edit.png [new file with mode: 0644]
CubeIT/images/silk/telephone_error.png [new file with mode: 0644]
CubeIT/images/silk/telephone_go.png [new file with mode: 0644]
CubeIT/images/silk/telephone_key.png [new file with mode: 0644]
CubeIT/images/silk/telephone_link.png [new file with mode: 0644]
CubeIT/images/silk/television.png [new file with mode: 0644]
CubeIT/images/silk/television_add.png [new file with mode: 0644]
CubeIT/images/silk/television_delete.png [new file with mode: 0644]
CubeIT/images/silk/text_align_center.png [new file with mode: 0644]
CubeIT/images/silk/text_align_justify.png [new file with mode: 0644]
CubeIT/images/silk/text_align_left.png [new file with mode: 0644]
CubeIT/images/silk/text_align_right.png [new file with mode: 0644]
CubeIT/images/silk/text_allcaps.png [new file with mode: 0644]
CubeIT/images/silk/text_bold.png [new file with mode: 0644]
CubeIT/images/silk/text_columns.png [new file with mode: 0644]
CubeIT/images/silk/text_dropcaps.png [new file with mode: 0644]
CubeIT/images/silk/text_heading_1.png [new file with mode: 0644]
CubeIT/images/silk/text_heading_2.png [new file with mode: 0644]
CubeIT/images/silk/text_heading_3.png [new file with mode: 0644]
CubeIT/images/silk/text_heading_4.png [new file with mode: 0644]
CubeIT/images/silk/text_heading_5.png [new file with mode: 0644]
CubeIT/images/silk/text_heading_6.png [new file with mode: 0644]
CubeIT/images/silk/text_horizontalrule.png [new file with mode: 0644]
CubeIT/images/silk/text_indent.png [new file with mode: 0644]
CubeIT/images/silk/text_indent_remove.png [new file with mode: 0644]
CubeIT/images/silk/text_italic.png [new file with mode: 0644]
CubeIT/images/silk/text_kerning.png [new file with mode: 0644]
CubeIT/images/silk/text_letter_omega.png [new file with mode: 0644]
CubeIT/images/silk/text_letterspacing.png [new file with mode: 0644]
CubeIT/images/silk/text_linespacing.png [new file with mode: 0644]
CubeIT/images/silk/text_list_bullets.png [new file with mode: 0644]
CubeIT/images/silk/text_list_numbers.png [new file with mode: 0644]
CubeIT/images/silk/text_lowercase.png [new file with mode: 0644]
CubeIT/images/silk/text_padding_bottom.png [new file with mode: 0644]
CubeIT/images/silk/text_padding_left.png [new file with mode: 0644]
CubeIT/images/silk/text_padding_right.png [new file with mode: 0644]
CubeIT/images/silk/text_padding_top.png [new file with mode: 0644]
CubeIT/images/silk/text_replace.png [new file with mode: 0644]
CubeIT/images/silk/text_signature.png [new file with mode: 0644]
CubeIT/images/silk/text_smallcaps.png [new file with mode: 0644]
CubeIT/images/silk/text_strikethrough.png [new file with mode: 0644]
CubeIT/images/silk/text_subscript.png [new file with mode: 0644]
CubeIT/images/silk/text_superscript.png [new file with mode: 0644]
CubeIT/images/silk/text_underline.png [new file with mode: 0644]
CubeIT/images/silk/text_uppercase.png [new file with mode: 0644]
CubeIT/images/silk/textfield.png [new file with mode: 0644]
CubeIT/images/silk/textfield_add.png [new file with mode: 0644]
CubeIT/images/silk/textfield_delete.png [new file with mode: 0644]
CubeIT/images/silk/textfield_key.png [new file with mode: 0644]
CubeIT/images/silk/textfield_rename.png [new file with mode: 0644]
CubeIT/images/silk/thumb_down.png [new file with mode: 0644]
CubeIT/images/silk/thumb_up.png [new file with mode: 0644]
CubeIT/images/silk/tick.png [new file with mode: 0644]
CubeIT/images/silk/time.png [new file with mode: 0644]
CubeIT/images/silk/time_add.png [new file with mode: 0644]
CubeIT/images/silk/time_delete.png [new file with mode: 0644]
CubeIT/images/silk/time_go.png [new file with mode: 0644]
CubeIT/images/silk/timeline_marker.png [new file with mode: 0644]
CubeIT/images/silk/transmit.png [new file with mode: 0644]
CubeIT/images/silk/transmit_add.png [new file with mode: 0644]
CubeIT/images/silk/transmit_blue.png [new file with mode: 0644]
CubeIT/images/silk/transmit_delete.png [new file with mode: 0644]
CubeIT/images/silk/transmit_edit.png [new file with mode: 0644]
CubeIT/images/silk/transmit_error.png [new file with mode: 0644]
CubeIT/images/silk/transmit_go.png [new file with mode: 0644]
CubeIT/images/silk/tux.png [new file with mode: 0644]
CubeIT/images/silk/user.png [new file with mode: 0644]
CubeIT/images/silk/user_add.png [new file with mode: 0644]
CubeIT/images/silk/user_comment.png [new file with mode: 0644]
CubeIT/images/silk/user_delete.png [new file with mode: 0644]
CubeIT/images/silk/user_edit.png [new file with mode: 0644]
CubeIT/images/silk/user_female.png [new file with mode: 0644]
CubeIT/images/silk/user_go.png [new file with mode: 0644]
CubeIT/images/silk/user_gray.png [new file with mode: 0644]
CubeIT/images/silk/user_green.png [new file with mode: 0644]
CubeIT/images/silk/user_orange.png [new file with mode: 0644]
CubeIT/images/silk/user_red.png [new file with mode: 0644]
CubeIT/images/silk/user_suit.png [new file with mode: 0644]
CubeIT/images/silk/vcard.png [new file with mode: 0644]
CubeIT/images/silk/vcard_add.png [new file with mode: 0644]
CubeIT/images/silk/vcard_delete.png [new file with mode: 0644]
CubeIT/images/silk/vcard_edit.png [new file with mode: 0644]
CubeIT/images/silk/vector.png [new file with mode: 0644]
CubeIT/images/silk/vector_add.png [new file with mode: 0644]
CubeIT/images/silk/vector_delete.png [new file with mode: 0644]
CubeIT/images/silk/wand.png [new file with mode: 0644]
CubeIT/images/silk/weather_clouds.png [new file with mode: 0644]
CubeIT/images/silk/weather_cloudy.png [new file with mode: 0644]
CubeIT/images/silk/weather_lightning.png [new file with mode: 0644]
CubeIT/images/silk/weather_rain.png [new file with mode: 0644]
CubeIT/images/silk/weather_snow.png [new file with mode: 0644]
CubeIT/images/silk/weather_sun.png [new file with mode: 0644]
CubeIT/images/silk/webcam.png [new file with mode: 0644]
CubeIT/images/silk/webcam_add.png [new file with mode: 0644]
CubeIT/images/silk/webcam_delete.png [new file with mode: 0644]
CubeIT/images/silk/webcam_error.png [new file with mode: 0644]
CubeIT/images/silk/world.png [new file with mode: 0644]
CubeIT/images/silk/world_add.png [new file with mode: 0644]
CubeIT/images/silk/world_delete.png [new file with mode: 0644]
CubeIT/images/silk/world_edit.png [new file with mode: 0644]
CubeIT/images/silk/world_go.png [new file with mode: 0644]
CubeIT/images/silk/world_link.png [new file with mode: 0644]
CubeIT/images/silk/wrench.png [new file with mode: 0644]
CubeIT/images/silk/wrench_orange.png [new file with mode: 0644]
CubeIT/images/silk/xhtml.png [new file with mode: 0644]
CubeIT/images/silk/xhtml_add.png [new file with mode: 0644]
CubeIT/images/silk/xhtml_delete.png [new file with mode: 0644]
CubeIT/images/silk/xhtml_go.png [new file with mode: 0644]
CubeIT/images/silk/xhtml_valid.png [new file with mode: 0644]
CubeIT/images/silk/zoom.png [new file with mode: 0644]
CubeIT/images/silk/zoom_in.png [new file with mode: 0644]
CubeIT/images/silk/zoom_out.png [new file with mode: 0644]
CubeIT/images/spacer.gif [new file with mode: 0644]
CubeIT/images/tango/16/actions/address-book-new.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/appointment-new.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/bookmark-new.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/contact-new.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/document-new.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/document-open.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/document-print-preview.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/document-print.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/document-properties.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/document-save-as.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/document-save.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/edit-clear.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/edit-copy.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/edit-cut.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/edit-delete.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/edit-find-replace.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/edit-find.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/edit-paste.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/edit-redo.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/edit-select-all.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/edit-undo.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/folder-new.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/format-indent-less.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/format-indent-more.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/format-justify-center.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/format-justify-fill.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/format-justify-left.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/format-justify-right.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/format-text-bold.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/format-text-italic.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/format-text-strikethrough.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/format-text-underline.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/go-bottom.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/go-down.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/go-first.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/go-home.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/go-jump.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/go-last.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/go-next.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/go-previous.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/go-top.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/go-up.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/list-add.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/list-remove.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/mail-forward.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/mail-mark-junk.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/mail-mark-not-junk.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/mail-message-new.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/mail-reply-all.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/mail-reply-sender.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/mail-send-receive.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/media-eject.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/media-playback-pause.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/media-playback-start.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/media-playback-stop.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/media-record.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/media-seek-backward.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/media-seek-forward.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/media-skip-backward.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/media-skip-forward.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/process-stop.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/system-lock-screen.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/system-log-out.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/system-search.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/system-shutdown.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/tab-new.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/view-fullscreen.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/view-refresh.png [new file with mode: 0644]
CubeIT/images/tango/16/actions/window-new.png [new file with mode: 0644]
CubeIT/images/tango/16/animations/process-working.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/accessories-calculator.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/accessories-character-map.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/accessories-text-editor.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/help-browser.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/internet-group-chat.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/internet-mail.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/internet-news-reader.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/internet-web-browser.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/office-calendar.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/preferences-desktop-accessibility.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/preferences-desktop-assistive-technology.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/preferences-desktop-font.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/preferences-desktop-keyboard-shortcuts.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/preferences-desktop-locale.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/preferences-desktop-multimedia.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/preferences-desktop-remote-desktop.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/preferences-desktop-screensaver.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/preferences-desktop-theme.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/preferences-desktop-wallpaper.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/preferences-system-network-proxy.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/preferences-system-session.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/preferences-system-windows.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/system-file-manager.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/system-installer.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/system-software-update.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/system-users.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/utilities-system-monitor.png [new file with mode: 0644]
CubeIT/images/tango/16/apps/utilities-terminal.png [new file with mode: 0644]
CubeIT/images/tango/16/categories/applications-accessories.png [new file with mode: 0644]
CubeIT/images/tango/16/categories/applications-development.png [new file with mode: 0644]
CubeIT/images/tango/16/categories/applications-games.png [new file with mode: 0644]
CubeIT/images/tango/16/categories/applications-graphics.png [new file with mode: 0644]
CubeIT/images/tango/16/categories/applications-internet.png [new file with mode: 0644]
CubeIT/images/tango/16/categories/applications-multimedia.png [new file with mode: 0644]
CubeIT/images/tango/16/categories/applications-office.png [new file with mode: 0644]
CubeIT/images/tango/16/categories/applications-other.png [new file with mode: 0644]
CubeIT/images/tango/16/categories/applications-system.png [new file with mode: 0644]
CubeIT/images/tango/16/categories/preferences-desktop-peripherals.png [new file with mode: 0644]
CubeIT/images/tango/16/categories/preferences-desktop.png [new file with mode: 0644]
CubeIT/images/tango/16/categories/preferences-system.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/audio-card.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/audio-input-microphone.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/battery.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/camera-photo.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/camera-video.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/computer.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/drive-harddisk.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/drive-optical.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/drive-removable-media.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/input-gaming.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/input-keyboard.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/input-mouse.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/media-flash.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/media-floppy.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/media-optical.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/multimedia-player.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/network-wired.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/network-wireless.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/printer.png [new file with mode: 0644]
CubeIT/images/tango/16/devices/video-display.png [new file with mode: 0644]
CubeIT/images/tango/16/emblems/emblem-favorite.png [new file with mode: 0644]
CubeIT/images/tango/16/emblems/emblem-important.png [new file with mode: 0644]
CubeIT/images/tango/16/emblems/emblem-photos.png [new file with mode: 0644]
CubeIT/images/tango/16/emblems/emblem-readonly.png [new file with mode: 0644]
CubeIT/images/tango/16/emblems/emblem-symbolic-link.png [new file with mode: 0644]
CubeIT/images/tango/16/emblems/emblem-system.png [new file with mode: 0644]
CubeIT/images/tango/16/emblems/emblem-unreadable.png [new file with mode: 0644]
CubeIT/images/tango/16/emotes/face-angel.png [new file with mode: 0644]
CubeIT/images/tango/16/emotes/face-crying.png [new file with mode: 0644]
CubeIT/images/tango/16/emotes/face-devilish.png [new file with mode: 0644]
CubeIT/images/tango/16/emotes/face-glasses.png [new file with mode: 0644]
CubeIT/images/tango/16/emotes/face-grin.png [new file with mode: 0644]
CubeIT/images/tango/16/emotes/face-kiss.png [new file with mode: 0644]
CubeIT/images/tango/16/emotes/face-monkey.png [new file with mode: 0644]
CubeIT/images/tango/16/emotes/face-plain.png [new file with mode: 0644]
CubeIT/images/tango/16/emotes/face-sad.png [new file with mode: 0644]
CubeIT/images/tango/16/emotes/face-smile-big.png [new file with mode: 0644]
CubeIT/images/tango/16/emotes/face-smile.png [new file with mode: 0644]
CubeIT/images/tango/16/emotes/face-surprise.png [new file with mode: 0644]
CubeIT/images/tango/16/emotes/face-wink.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/application-certificate.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/application-x-executable.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/audio-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/font-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/image-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/package-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/text-html.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/text-x-generic-template.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/text-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/text-x-script.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/video-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/x-office-address-book.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/x-office-calendar.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/x-office-document-template.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/x-office-document.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/x-office-drawing-template.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/x-office-drawing.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/x-office-presentation-template.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/x-office-presentation.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/x-office-spreadsheet-template.png [new file with mode: 0644]
CubeIT/images/tango/16/mimetypes/x-office-spreadsheet.png [new file with mode: 0644]
CubeIT/images/tango/16/places/folder-remote.png [new file with mode: 0644]
CubeIT/images/tango/16/places/folder-saved-search.png [new file with mode: 0644]
CubeIT/images/tango/16/places/folder.png [new file with mode: 0644]
CubeIT/images/tango/16/places/network-server.png [new file with mode: 0644]
CubeIT/images/tango/16/places/network-workgroup.png [new file with mode: 0644]
CubeIT/images/tango/16/places/start-here.png [new file with mode: 0644]
CubeIT/images/tango/16/places/user-desktop.png [new file with mode: 0644]
CubeIT/images/tango/16/places/user-home.png [new file with mode: 0644]
CubeIT/images/tango/16/places/user-trash.png [new file with mode: 0644]
CubeIT/images/tango/16/status/audio-volume-high.png [new file with mode: 0644]
CubeIT/images/tango/16/status/audio-volume-low.png [new file with mode: 0644]
CubeIT/images/tango/16/status/audio-volume-medium.png [new file with mode: 0644]
CubeIT/images/tango/16/status/audio-volume-muted.png [new file with mode: 0644]
CubeIT/images/tango/16/status/battery-caution.png [new file with mode: 0644]
CubeIT/images/tango/16/status/dialog-error.png [new file with mode: 0644]
CubeIT/images/tango/16/status/dialog-information.png [new file with mode: 0644]
CubeIT/images/tango/16/status/dialog-warning.png [new file with mode: 0644]
CubeIT/images/tango/16/status/folder-drag-accept.png [new file with mode: 0644]
CubeIT/images/tango/16/status/folder-open.png [new file with mode: 0644]
CubeIT/images/tango/16/status/folder-visiting.png [new file with mode: 0644]
CubeIT/images/tango/16/status/image-loading.png [new file with mode: 0644]
CubeIT/images/tango/16/status/image-missing.png [new file with mode: 0644]
CubeIT/images/tango/16/status/mail-attachment.png [new file with mode: 0644]
CubeIT/images/tango/16/status/network-error.png [new file with mode: 0644]
CubeIT/images/tango/16/status/network-idle.png [new file with mode: 0644]
CubeIT/images/tango/16/status/network-offline.png [new file with mode: 0644]
CubeIT/images/tango/16/status/network-receive.png [new file with mode: 0644]
CubeIT/images/tango/16/status/network-transmit-receive.png [new file with mode: 0644]
CubeIT/images/tango/16/status/network-transmit.png [new file with mode: 0644]
CubeIT/images/tango/16/status/network-wireless-encrypted.png [new file with mode: 0644]
CubeIT/images/tango/16/status/printer-error.png [new file with mode: 0644]
CubeIT/images/tango/16/status/software-update-available.png [new file with mode: 0644]
CubeIT/images/tango/16/status/software-update-urgent.png [new file with mode: 0644]
CubeIT/images/tango/16/status/user-trash-full.png [new file with mode: 0644]
CubeIT/images/tango/16/status/weather-clear-night.png [new file with mode: 0644]
CubeIT/images/tango/16/status/weather-clear.png [new file with mode: 0644]
CubeIT/images/tango/16/status/weather-few-clouds-night.png [new file with mode: 0644]
CubeIT/images/tango/16/status/weather-few-clouds.png [new file with mode: 0644]
CubeIT/images/tango/16/status/weather-overcast.png [new file with mode: 0644]
CubeIT/images/tango/16/status/weather-severe-alert.png [new file with mode: 0644]
CubeIT/images/tango/16/status/weather-showers-scattered.png [new file with mode: 0644]
CubeIT/images/tango/16/status/weather-showers.png [new file with mode: 0644]
CubeIT/images/tango/16/status/weather-snow.png [new file with mode: 0644]
CubeIT/images/tango/16/status/weather-storm.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/address-book-new.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/appointment-new.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/bookmark-new.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/contact-new.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/document-new.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/document-open.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/document-print-preview.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/document-print.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/document-properties.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/document-save-as.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/document-save.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/edit-clear.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/edit-copy.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/edit-cut.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/edit-delete.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/edit-find-replace.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/edit-find.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/edit-paste.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/edit-redo.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/edit-select-all.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/edit-undo.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/folder-new.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/format-indent-less.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/format-indent-more.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/format-justify-center.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/format-justify-fill.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/format-justify-left.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/format-justify-right.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/format-text-bold.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/format-text-italic.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/format-text-strikethrough.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/format-text-underline.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/go-bottom.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/go-down.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/go-first.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/go-home.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/go-jump.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/go-last.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/go-next.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/go-previous.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/go-top.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/go-up.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/list-add.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/list-remove.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/mail-forward.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/mail-mark-junk.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/mail-mark-not-junk.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/mail-message-new.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/mail-reply-all.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/mail-reply-sender.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/mail-send-receive.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/media-eject.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/media-playback-pause.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/media-playback-start.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/media-playback-stop.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/media-record.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/media-seek-backward.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/media-seek-forward.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/media-skip-backward.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/media-skip-forward.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/process-stop.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/system-lock-screen.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/system-log-out.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/system-search.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/system-shutdown.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/tab-new.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/view-fullscreen.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/view-refresh.png [new file with mode: 0644]
CubeIT/images/tango/22/actions/window-new.png [new file with mode: 0644]
CubeIT/images/tango/22/animations/process-working.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/accessories-calculator.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/accessories-character-map.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/accessories-text-editor.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/help-browser.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/internet-group-chat.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/internet-mail.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/internet-news-reader.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/internet-web-browser.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/office-calendar.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/preferences-desktop-accessibility.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/preferences-desktop-assistive-technology.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/preferences-desktop-font.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/preferences-desktop-keyboard-shortcuts.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/preferences-desktop-locale.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/preferences-desktop-multimedia.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/preferences-desktop-remote-desktop.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/preferences-desktop-screensaver.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/preferences-desktop-theme.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/preferences-desktop-wallpaper.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/preferences-system-network-proxy.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/preferences-system-session.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/preferences-system-windows.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/system-file-manager.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/system-installer.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/system-software-update.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/system-users.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/utilities-system-monitor.png [new file with mode: 0644]
CubeIT/images/tango/22/apps/utilities-terminal.png [new file with mode: 0644]
CubeIT/images/tango/22/categories/applications-accessories.png [new file with mode: 0644]
CubeIT/images/tango/22/categories/applications-development.png [new file with mode: 0644]
CubeIT/images/tango/22/categories/applications-games.png [new file with mode: 0644]
CubeIT/images/tango/22/categories/applications-graphics.png [new file with mode: 0644]
CubeIT/images/tango/22/categories/applications-internet.png [new file with mode: 0644]
CubeIT/images/tango/22/categories/applications-multimedia.png [new file with mode: 0644]
CubeIT/images/tango/22/categories/applications-office.png [new file with mode: 0644]
CubeIT/images/tango/22/categories/applications-other.png [new file with mode: 0644]
CubeIT/images/tango/22/categories/applications-system.png [new file with mode: 0644]
CubeIT/images/tango/22/categories/preferences-desktop-peripherals.png [new file with mode: 0644]
CubeIT/images/tango/22/categories/preferences-desktop.png [new file with mode: 0644]
CubeIT/images/tango/22/categories/preferences-system.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/audio-card.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/audio-input-microphone.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/battery.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/camera-photo.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/camera-video.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/computer.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/drive-harddisk.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/drive-optical.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/drive-removable-media.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/input-gaming.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/input-keyboard.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/input-mouse.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/media-flash.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/media-floppy.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/media-optical.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/multimedia-player.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/network-wired.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/network-wireless.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/printer.png [new file with mode: 0644]
CubeIT/images/tango/22/devices/video-display.png [new file with mode: 0644]
CubeIT/images/tango/22/emblems/emblem-favorite.png [new file with mode: 0644]
CubeIT/images/tango/22/emblems/emblem-important.png [new file with mode: 0644]
CubeIT/images/tango/22/emblems/emblem-photos.png [new file with mode: 0644]
CubeIT/images/tango/22/emblems/emblem-readonly.png [new file with mode: 0644]
CubeIT/images/tango/22/emblems/emblem-symbolic-link.png [new file with mode: 0644]
CubeIT/images/tango/22/emblems/emblem-system.png [new file with mode: 0644]
CubeIT/images/tango/22/emblems/emblem-unreadable.png [new file with mode: 0644]
CubeIT/images/tango/22/emotes/face-angel.png [new file with mode: 0644]
CubeIT/images/tango/22/emotes/face-crying.png [new file with mode: 0644]
CubeIT/images/tango/22/emotes/face-devilish.png [new file with mode: 0644]
CubeIT/images/tango/22/emotes/face-glasses.png [new file with mode: 0644]
CubeIT/images/tango/22/emotes/face-grin.png [new file with mode: 0644]
CubeIT/images/tango/22/emotes/face-kiss.png [new file with mode: 0644]
CubeIT/images/tango/22/emotes/face-monkey.png [new file with mode: 0644]
CubeIT/images/tango/22/emotes/face-plain.png [new file with mode: 0644]
CubeIT/images/tango/22/emotes/face-sad.png [new file with mode: 0644]
CubeIT/images/tango/22/emotes/face-smile-big.png [new file with mode: 0644]
CubeIT/images/tango/22/emotes/face-smile.png [new file with mode: 0644]
CubeIT/images/tango/22/emotes/face-surprise.png [new file with mode: 0644]
CubeIT/images/tango/22/emotes/face-wink.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/application-certificate.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/application-x-executable.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/audio-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/font-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/image-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/package-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/text-html.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/text-x-generic-template.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/text-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/text-x-script.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/video-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/x-office-address-book.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/x-office-calendar.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/x-office-document-template.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/x-office-document.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/x-office-drawing-template.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/x-office-drawing.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/x-office-presentation-template.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/x-office-presentation.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/x-office-spreadsheet-template.png [new file with mode: 0644]
CubeIT/images/tango/22/mimetypes/x-office-spreadsheet.png [new file with mode: 0644]
CubeIT/images/tango/22/places/folder-remote.png [new file with mode: 0644]
CubeIT/images/tango/22/places/folder-saved-search.png [new file with mode: 0644]
CubeIT/images/tango/22/places/folder.png [new file with mode: 0644]
CubeIT/images/tango/22/places/network-server.png [new file with mode: 0644]
CubeIT/images/tango/22/places/network-workgroup.png [new file with mode: 0644]
CubeIT/images/tango/22/places/start-here.png [new file with mode: 0644]
CubeIT/images/tango/22/places/user-desktop.png [new file with mode: 0644]
CubeIT/images/tango/22/places/user-home.png [new file with mode: 0644]
CubeIT/images/tango/22/places/user-trash.png [new file with mode: 0644]
CubeIT/images/tango/22/status/audio-volume-high.png [new file with mode: 0644]
CubeIT/images/tango/22/status/audio-volume-low.png [new file with mode: 0644]
CubeIT/images/tango/22/status/audio-volume-medium.png [new file with mode: 0644]
CubeIT/images/tango/22/status/audio-volume-muted.png [new file with mode: 0644]
CubeIT/images/tango/22/status/battery-caution.png [new file with mode: 0644]
CubeIT/images/tango/22/status/dialog-error.png [new file with mode: 0644]
CubeIT/images/tango/22/status/dialog-information.png [new file with mode: 0644]
CubeIT/images/tango/22/status/dialog-warning.png [new file with mode: 0644]
CubeIT/images/tango/22/status/folder-drag-accept.png [new file with mode: 0644]
CubeIT/images/tango/22/status/folder-open.png [new file with mode: 0644]
CubeIT/images/tango/22/status/folder-visiting.png [new file with mode: 0644]
CubeIT/images/tango/22/status/image-loading.png [new file with mode: 0644]
CubeIT/images/tango/22/status/image-missing.png [new file with mode: 0644]
CubeIT/images/tango/22/status/mail-attachment.png [new file with mode: 0644]
CubeIT/images/tango/22/status/network-error.png [new file with mode: 0644]
CubeIT/images/tango/22/status/network-idle.png [new file with mode: 0644]
CubeIT/images/tango/22/status/network-offline.png [new file with mode: 0644]
CubeIT/images/tango/22/status/network-receive.png [new file with mode: 0644]
CubeIT/images/tango/22/status/network-transmit-receive.png [new file with mode: 0644]
CubeIT/images/tango/22/status/network-transmit.png [new file with mode: 0644]
CubeIT/images/tango/22/status/network-wireless-encrypted.png [new file with mode: 0644]
CubeIT/images/tango/22/status/printer-error.png [new file with mode: 0644]
CubeIT/images/tango/22/status/software-update-available.png [new file with mode: 0644]
CubeIT/images/tango/22/status/software-update-urgent.png [new file with mode: 0644]
CubeIT/images/tango/22/status/user-trash-full.png [new file with mode: 0644]
CubeIT/images/tango/22/status/weather-clear-night.png [new file with mode: 0644]
CubeIT/images/tango/22/status/weather-clear.png [new file with mode: 0644]
CubeIT/images/tango/22/status/weather-few-clouds-night.png [new file with mode: 0644]
CubeIT/images/tango/22/status/weather-few-clouds.png [new file with mode: 0644]
CubeIT/images/tango/22/status/weather-overcast.png [new file with mode: 0644]
CubeIT/images/tango/22/status/weather-severe-alert.png [new file with mode: 0644]
CubeIT/images/tango/22/status/weather-showers-scattered.png [new file with mode: 0644]
CubeIT/images/tango/22/status/weather-showers.png [new file with mode: 0644]
CubeIT/images/tango/22/status/weather-snow.png [new file with mode: 0644]
CubeIT/images/tango/22/status/weather-storm.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/address-book-new.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/appointment-new.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/bookmark-new.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/contact-new.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/document-new.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/document-open.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/document-print-preview.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/document-print.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/document-properties.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/document-save-as.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/document-save.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/edit-clear.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/edit-copy.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/edit-cut.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/edit-delete.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/edit-find-replace.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/edit-find.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/edit-paste.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/edit-redo.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/edit-select-all.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/edit-undo.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/folder-new.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/format-indent-less.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/format-indent-more.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/format-justify-center.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/format-justify-fill.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/format-justify-left.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/format-justify-right.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/format-text-bold.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/format-text-italic.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/format-text-strikethrough.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/format-text-underline.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/go-bottom.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/go-down.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/go-first.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/go-home.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/go-jump.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/go-last.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/go-next.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/go-previous.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/go-top.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/go-up.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/list-add.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/list-remove.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/mail-forward.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/mail-mark-junk.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/mail-mark-not-junk.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/mail-message-new.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/mail-reply-all.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/mail-reply-sender.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/mail-send-receive.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/media-eject.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/media-playback-pause.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/media-playback-start.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/media-playback-stop.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/media-record.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/media-seek-backward.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/media-seek-forward.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/media-skip-backward.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/media-skip-forward.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/process-stop.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/system-lock-screen.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/system-log-out.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/system-search.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/system-shutdown.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/tab-new.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/view-fullscreen.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/view-refresh.png [new file with mode: 0644]
CubeIT/images/tango/32/actions/window-new.png [new file with mode: 0644]
CubeIT/images/tango/32/animations/process-working.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/accessories-calculator.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/accessories-character-map.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/accessories-text-editor.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/help-browser.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/internet-group-chat.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/internet-mail.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/internet-news-reader.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/internet-web-browser.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/office-calendar.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/preferences-desktop-accessibility.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/preferences-desktop-assistive-technology.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/preferences-desktop-font.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/preferences-desktop-keyboard-shortcuts.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/preferences-desktop-locale.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/preferences-desktop-multimedia.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/preferences-desktop-remote-desktop.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/preferences-desktop-screensaver.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/preferences-desktop-theme.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/preferences-desktop-wallpaper.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/preferences-system-network-proxy.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/preferences-system-session.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/preferences-system-windows.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/system-file-manager.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/system-installer.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/system-software-update.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/system-users.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/utilities-system-monitor.png [new file with mode: 0644]
CubeIT/images/tango/32/apps/utilities-terminal.png [new file with mode: 0644]
CubeIT/images/tango/32/categories/applications-accessories.png [new file with mode: 0644]
CubeIT/images/tango/32/categories/applications-development.png [new file with mode: 0644]
CubeIT/images/tango/32/categories/applications-games.png [new file with mode: 0644]
CubeIT/images/tango/32/categories/applications-graphics.png [new file with mode: 0644]
CubeIT/images/tango/32/categories/applications-internet.png [new file with mode: 0644]
CubeIT/images/tango/32/categories/applications-multimedia.png [new file with mode: 0644]
CubeIT/images/tango/32/categories/applications-office.png [new file with mode: 0644]
CubeIT/images/tango/32/categories/applications-other.png [new file with mode: 0644]
CubeIT/images/tango/32/categories/applications-system.png [new file with mode: 0644]
CubeIT/images/tango/32/categories/preferences-desktop-peripherals.png [new file with mode: 0644]
CubeIT/images/tango/32/categories/preferences-desktop.png [new file with mode: 0644]
CubeIT/images/tango/32/categories/preferences-system.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/audio-card.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/audio-input-microphone.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/battery.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/camera-photo.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/camera-video.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/computer.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/drive-harddisk.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/drive-optical.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/drive-removable-media.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/input-gaming.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/input-keyboard.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/input-mouse.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/media-flash.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/media-floppy.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/media-optical.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/multimedia-player.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/network-wired.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/network-wireless.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/printer.png [new file with mode: 0644]
CubeIT/images/tango/32/devices/video-display.png [new file with mode: 0644]
CubeIT/images/tango/32/emblems/emblem-favorite.png [new file with mode: 0644]
CubeIT/images/tango/32/emblems/emblem-important.png [new file with mode: 0644]
CubeIT/images/tango/32/emblems/emblem-photos.png [new file with mode: 0644]
CubeIT/images/tango/32/emblems/emblem-readonly.png [new file with mode: 0644]
CubeIT/images/tango/32/emblems/emblem-symbolic-link.png [new file with mode: 0644]
CubeIT/images/tango/32/emblems/emblem-system.png [new file with mode: 0644]
CubeIT/images/tango/32/emblems/emblem-unreadable.png [new file with mode: 0644]
CubeIT/images/tango/32/emotes/face-angel.png [new file with mode: 0644]
CubeIT/images/tango/32/emotes/face-crying.png [new file with mode: 0644]
CubeIT/images/tango/32/emotes/face-devilish.png [new file with mode: 0644]
CubeIT/images/tango/32/emotes/face-glasses.png [new file with mode: 0644]
CubeIT/images/tango/32/emotes/face-grin.png [new file with mode: 0644]
CubeIT/images/tango/32/emotes/face-kiss.png [new file with mode: 0644]
CubeIT/images/tango/32/emotes/face-monkey.png [new file with mode: 0644]
CubeIT/images/tango/32/emotes/face-plain.png [new file with mode: 0644]
CubeIT/images/tango/32/emotes/face-sad.png [new file with mode: 0644]
CubeIT/images/tango/32/emotes/face-smile-big.png [new file with mode: 0644]
CubeIT/images/tango/32/emotes/face-smile.png [new file with mode: 0644]
CubeIT/images/tango/32/emotes/face-surprise.png [new file with mode: 0644]
CubeIT/images/tango/32/emotes/face-wink.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/application-certificate.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/application-x-executable.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/audio-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/font-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/image-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/package-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/text-html.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/text-x-generic-template.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/text-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/text-x-script.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/video-x-generic.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/x-office-address-book.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/x-office-calendar.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/x-office-document-template.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/x-office-document.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/x-office-drawing-template.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/x-office-drawing.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/x-office-presentation-template.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/x-office-presentation.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/x-office-spreadsheet-template.png [new file with mode: 0644]
CubeIT/images/tango/32/mimetypes/x-office-spreadsheet.png [new file with mode: 0644]
CubeIT/images/tango/32/places/folder-remote.png [new file with mode: 0644]
CubeIT/images/tango/32/places/folder-saved-search.png [new file with mode: 0644]
CubeIT/images/tango/32/places/folder.png [new file with mode: 0644]
CubeIT/images/tango/32/places/network-server.png [new file with mode: 0644]
CubeIT/images/tango/32/places/network-workgroup.png [new file with mode: 0644]
CubeIT/images/tango/32/places/start-here.png [new file with mode: 0644]
CubeIT/images/tango/32/places/user-desktop.png [new file with mode: 0644]
CubeIT/images/tango/32/places/user-home.png [new file with mode: 0644]
CubeIT/images/tango/32/places/user-trash.png [new file with mode: 0644]
CubeIT/images/tango/32/status/audio-volume-high.png [new file with mode: 0644]
CubeIT/images/tango/32/status/audio-volume-low.png [new file with mode: 0644]
CubeIT/images/tango/32/status/audio-volume-medium.png [new file with mode: 0644]
CubeIT/images/tango/32/status/audio-volume-muted.png [new file with mode: 0644]
CubeIT/images/tango/32/status/battery-caution.png [new file with mode: 0644]
CubeIT/images/tango/32/status/dialog-error.png [new file with mode: 0644]
CubeIT/images/tango/32/status/dialog-information.png [new file with mode: 0644]
CubeIT/images/tango/32/status/dialog-warning.png [new file with mode: 0644]
CubeIT/images/tango/32/status/folder-drag-accept.png [new file with mode: 0644]
CubeIT/images/tango/32/status/folder-open.png [new file with mode: 0644]
CubeIT/images/tango/32/status/folder-visiting.png [new file with mode: 0644]
CubeIT/images/tango/32/status/image-loading.png [new file with mode: 0644]
CubeIT/images/tango/32/status/image-missing.png [new file with mode: 0644]
CubeIT/images/tango/32/status/mail-attachment.png [new file with mode: 0644]
CubeIT/images/tango/32/status/network-error.png [new file with mode: 0644]
CubeIT/images/tango/32/status/network-idle.png [new file with mode: 0644]
CubeIT/images/tango/32/status/network-offline.png [new file with mode: 0644]
CubeIT/images/tango/32/status/network-receive.png [new file with mode: 0644]
CubeIT/images/tango/32/status/network-transmit-receive.png [new file with mode: 0644]
CubeIT/images/tango/32/status/network-transmit.png [new file with mode: 0644]
CubeIT/images/tango/32/status/network-wireless-encrypted.png [new file with mode: 0644]
CubeIT/images/tango/32/status/printer-error.png [new file with mode: 0644]
CubeIT/images/tango/32/status/software-update-available.png [new file with mode: 0644]
CubeIT/images/tango/32/status/software-update-urgent.png [new file with mode: 0644]
CubeIT/images/tango/32/status/user-trash-full.png [new file with mode: 0644]
CubeIT/images/tango/32/status/weather-clear-night.png [new file with mode: 0644]
CubeIT/images/tango/32/status/weather-clear.png [new file with mode: 0644]
CubeIT/images/tango/32/status/weather-few-clouds-night.png [new file with mode: 0644]
CubeIT/images/tango/32/status/weather-few-clouds.png [new file with mode: 0644]
CubeIT/images/tango/32/status/weather-overcast.png [new file with mode: 0644]
CubeIT/images/tango/32/status/weather-severe-alert.png [new file with mode: 0644]
CubeIT/images/tango/32/status/weather-showers-scattered.png [new file with mode: 0644]
CubeIT/images/tango/32/status/weather-showers.png [new file with mode: 0644]
CubeIT/images/tango/32/status/weather-snow.png [new file with mode: 0644]
CubeIT/images/tango/32/status/weather-storm.png [new file with mode: 0644]
CubeIT/images/tooltip.svg [new file with mode: 0644]
CubeIT/images/webvideo/dailymotion.png [new file with mode: 0644]
CubeIT/images/webvideo/placeholder.png [new file with mode: 0644]
CubeIT/images/webvideo/vimeo.png [new file with mode: 0644]
CubeIT/images/webvideo/youtube.png [new file with mode: 0644]
CubeIT/js/accordion.js [new file with mode: 0644]
CubeIT/js/admin/common.js [new file with mode: 0644]
CubeIT/js/admin/translations.js [new file with mode: 0644]
CubeIT/js/admin/tree.js [new file with mode: 0644]
CubeIT/js/autocomplete.js [new file with mode: 0644]
CubeIT/js/bannerCookies.js [new file with mode: 0644]
CubeIT/js/base64.js [new file with mode: 0644]
CubeIT/js/canvasmask.js [new file with mode: 0644]
CubeIT/js/checkall.js [new file with mode: 0644]
CubeIT/js/checkbox.js [new file with mode: 0644]
CubeIT/js/contextmenu.js [new file with mode: 0644]
CubeIT/js/corner.js [new file with mode: 0644]
CubeIT/js/cube.js [new file with mode: 0644]
CubeIT/js/currency.js [new file with mode: 0644]
CubeIT/js/datepicker.js [new file with mode: 0644]
CubeIT/js/easyzoom/easyzoom.js [new file with mode: 0644]
CubeIT/js/easyzoom/easyzoom.less [new file with mode: 0644]
CubeIT/js/emptyfield.js [new file with mode: 0644]
CubeIT/js/end.js [new file with mode: 0644]
CubeIT/js/farbtastic.js [new file with mode: 0644]
CubeIT/js/fastclick.js [new file with mode: 0644]
CubeIT/js/fatloader.js [new file with mode: 0644]
CubeIT/js/fileManager.js [new file with mode: 0644]
CubeIT/js/flashrightclick.js [new file with mode: 0644]
CubeIT/js/form.js [new file with mode: 0644]
CubeIT/js/googleCalendar.js [new file with mode: 0644]
CubeIT/js/googleMaps.js [new file with mode: 0644]
CubeIT/js/gsap/TimelineLite.js [new file with mode: 0644]
CubeIT/js/gsap/TimelineMax.js [new file with mode: 0644]
CubeIT/js/gsap/TweenLite.js [new file with mode: 0644]
CubeIT/js/gsap/TweenMax.js [new file with mode: 0644]
CubeIT/js/gsap/easing/EasePack.js [new file with mode: 0644]
CubeIT/js/gsap/plugins/BezierPlugin.js [new file with mode: 0644]
CubeIT/js/gsap/plugins/CSSPlugin.js [new file with mode: 0644]
CubeIT/js/gsap/plugins/CSSRulePlugin.js [new file with mode: 0644]
CubeIT/js/gsap/plugins/ColorPropsPlugin.js [new file with mode: 0644]
CubeIT/js/gsap/plugins/EaselPlugin.js [new file with mode: 0644]
CubeIT/js/gsap/plugins/RaphaelPlugin.js [new file with mode: 0644]
CubeIT/js/gsap/plugins/RoundPropsPlugin.js [new file with mode: 0644]
CubeIT/js/gsap/plugins/ScrollToPlugin.js [new file with mode: 0644]
CubeIT/js/gsap/plugins/TEMPLATE_Plugin.js [new file with mode: 0644]
CubeIT/js/htable.js [new file with mode: 0644]
CubeIT/js/ie/backgroundsize.htc [new file with mode: 0644]
CubeIT/js/ie/backgroundsize.js [new file with mode: 0644]
CubeIT/js/ie6.js [new file with mode: 0644]
CubeIT/js/ie7.js [new file with mode: 0644]
CubeIT/js/ie8.js [new file with mode: 0644]
CubeIT/js/ie9.js [new file with mode: 0644]
CubeIT/js/imageRollover.js [new file with mode: 0644]
CubeIT/js/imagedropper.js [new file with mode: 0644]
CubeIT/js/index.html [new file with mode: 0644]
CubeIT/js/inputNumber.js [new file with mode: 0644]
CubeIT/js/jquery.paginate.js [new file with mode: 0644]
CubeIT/js/jquery/jquery.backgroundposition.js [new file with mode: 0644]
CubeIT/js/jquery/jquery.dotdotdot.js [new file with mode: 0644]
CubeIT/js/jquery/jquery.form.js [new file with mode: 0644]
CubeIT/js/jquery/jquery.hashchange.js [new file with mode: 0644]
CubeIT/js/jquery/jquery.transform2d.js [new file with mode: 0644]
CubeIT/js/jquery/jquery.transform3d.js [new file with mode: 0644]
CubeIT/js/jquery/markitup/jquery.markitup.js [new file with mode: 0644]
CubeIT/js/jquery/markitup/sets/default/images/bold.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/sets/default/images/clean.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/sets/default/images/image.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/sets/default/images/italic.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/sets/default/images/link.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/sets/default/images/list-bullet.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/sets/default/images/list-numeric.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/sets/default/images/picture.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/sets/default/images/preview.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/sets/default/images/stroke.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/sets/default/set.js [new file with mode: 0644]
CubeIT/js/jquery/markitup/sets/default/style.css [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/images/bg-container.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-bbcode.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-dotclear.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-html.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-json.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-markdown.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-textile.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-wiki.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-xml.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/images/handle.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/images/menu.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/images/submenu.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/markitup/style.css [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/simple/images/handle.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/simple/images/menu.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/simple/images/submenu.png [new file with mode: 0644]
CubeIT/js/jquery/markitup/skins/simple/style.css [new file with mode: 0644]
CubeIT/js/jquery/markitup/templates/preview.css [new file with mode: 0644]
CubeIT/js/jquery/markitup/templates/preview.html [new file with mode: 0644]
CubeIT/js/jquery/nanoscroller/jquery.nanoscroller.js [new file with mode: 0644]
CubeIT/js/jquery/nanoscroller/nanoscroller.css [new file with mode: 0644]
CubeIT/js/jquery/scroll/jquery.localScroll.js [new file with mode: 0644]
CubeIT/js/jquery/scroll/jquery.serialScroll.js [new file with mode: 0644]
CubeIT/js/jquery/taghandler/jquery.taghandler.css [new file with mode: 0644]
CubeIT/js/jquery/taghandler/jquery.taghandler.js [new file with mode: 0644]
CubeIT/js/jquery/taghandler/loader.gif [new file with mode: 0644]
CubeIT/js/jquery/taghandler/tag_remove.cur [new file with mode: 0644]
CubeIT/js/jquery/taghandler/tag_remove.png [new file with mode: 0644]
CubeIT/js/jquery/taghandler/tag_update.png [new file with mode: 0644]
CubeIT/js/markitup.js [new file with mode: 0644]
CubeIT/js/modernizr/custom.js [new file with mode: 0644]
CubeIT/js/modernizr/polyfill/placeholder.js [new file with mode: 0644]
CubeIT/js/modernizr/polyfill/storage.js [new file with mode: 0644]
CubeIT/js/multiform.js [new file with mode: 0644]
CubeIT/js/orderform.js [new file with mode: 0644]
CubeIT/js/orientation.js [new file with mode: 0644]
CubeIT/js/overthrow/overthrow.js [new file with mode: 0644]
CubeIT/js/passwordGenerator.js [new file with mode: 0644]
CubeIT/js/pdfplayer.js [new file with mode: 0644]
CubeIT/js/perfect-scrollbar/perfect-scrollbar.css [new file with mode: 0644]
CubeIT/js/perfect-scrollbar/perfect-scrollbar.min.js [new file with mode: 0644]
CubeIT/js/phantomjs/delocal.js [new file with mode: 0644]
CubeIT/js/phantomjs/rasterize.js [new file with mode: 0644]
CubeIT/js/pie/PIE.htc [new file with mode: 0644]
CubeIT/js/pie/PIE_IE678.js [new file with mode: 0644]
CubeIT/js/pie/PIE_IE9.js [new file with mode: 0644]
CubeIT/js/ping.js [new file with mode: 0644]
CubeIT/js/preventOrphan.js [new file with mode: 0644]
CubeIT/js/raphael/raphael.js [new file with mode: 0644]
CubeIT/js/rollover.js [new file with mode: 0644]
CubeIT/js/screenfull.js [new file with mode: 0644]
CubeIT/js/selectMenu.js [new file with mode: 0644]
CubeIT/js/selectlist.js [new file with mode: 0644]
CubeIT/js/slideshow.js [new file with mode: 0644]
CubeIT/js/slideshowContinuous.js [new file with mode: 0644]
CubeIT/js/slideshowScroll.js [new file with mode: 0644]
CubeIT/js/swfaddress.js [new file with mode: 0644]
CubeIT/js/taghandler.js [new file with mode: 0644]
CubeIT/js/tooltip.js [new file with mode: 0644]
CubeIT/js/touch.js [new file with mode: 0644]
CubeIT/js/trackingAdwords.js [new file with mode: 0644]
CubeIT/js/webvideolist.js [new file with mode: 0644]
CubeIT/less/admin/common.less [new file with mode: 0644]
CubeIT/less/admin/translations.less [new file with mode: 0644]
CubeIT/less/admin/tree.less [new file with mode: 0644]
CubeIT/less/bannerCookies.less [new file with mode: 0644]
CubeIT/less/checkbox.less [new file with mode: 0644]
CubeIT/less/cms.less [new file with mode: 0644]
CubeIT/less/contextMenu.less [new file with mode: 0644]
CubeIT/less/cube.less [new file with mode: 0644]
CubeIT/less/fileManager.less [new file with mode: 0644]
CubeIT/less/index.html [new file with mode: 0644]
CubeIT/less/inputNumber.less [new file with mode: 0644]
CubeIT/less/multiform.less [new file with mode: 0644]
CubeIT/less/orderform.less [new file with mode: 0644]
CubeIT/less/pdfplayer.less [new file with mode: 0644]
CubeIT/less/popup.less [new file with mode: 0644]
CubeIT/less/preventOrphan.less [new file with mode: 0644]
CubeIT/less/selectlist.less [new file with mode: 0644]
CubeIT/less/slideshow.less [new file with mode: 0644]
CubeIT/less/taghandler.less [new file with mode: 0644]
CubeIT/less/tooltip.less [new file with mode: 0644]
CubeIT/less/webvideolist.less [new file with mode: 0644]
CubeIT/swf/_src/CubeIT Video.as3proj [new file with mode: 0644]
CubeIT/swf/_src/com/cubedesigners/cubeit/video/Main.as [new file with mode: 0644]
CubeIT/swf/_src/video.fla [new file with mode: 0644]
CubeIT/swf/video.swf [new file with mode: 0644]
framework/application/configs/application.ini
framework/application/configs/settings.1416239239.ini [new file with mode: 0644]
framework/application/configs/settings.1416321741.ini [new file with mode: 0644]
framework/application/configs/settings.1416322174.ini [new file with mode: 0644]
framework/application/configs/settings.1416323647.ini [new file with mode: 0644]
framework/application/configs/settings.1416323687.ini [new file with mode: 0644]
framework/application/configs/settings.1416323755.ini [new file with mode: 0644]
framework/application/configs/settings.1416323772.ini [new file with mode: 0644]
framework/application/configs/settings.1416323949.ini [new file with mode: 0644]
framework/application/configs/settings.1416324003.ini [new file with mode: 0644]
framework/application/configs/settings.1416326399.ini [new file with mode: 0644]
framework/application/configs/settings.1416327317.ini [new file with mode: 0644]
framework/application/configs/settings.1416327925.ini [new file with mode: 0644]
framework/application/configs/settings.1416328119.ini [new file with mode: 0644]
framework/application/configs/settings.1416416867.ini [new file with mode: 0644]
framework/application/configs/settings.1416580907.ini [new file with mode: 0644]
framework/application/configs/settings.1416581183.ini [new file with mode: 0644]
framework/application/configs/settings.1416581225.ini [new file with mode: 0644]
framework/application/configs/settings.1416581301.ini [new file with mode: 0644]
framework/application/configs/settings.1416581380.ini [new file with mode: 0644]
framework/application/configs/settings.1416581402.ini [new file with mode: 0644]
framework/application/configs/settings.1416581534.ini [new file with mode: 0644]
framework/application/configs/settings.1416595633.ini [new file with mode: 0644]
framework/application/configs/settings.1416600543.ini [new file with mode: 0644]
framework/application/configs/settings.1416836876.ini [new file with mode: 0644]
framework/application/configs/settings.1416914222.ini [new file with mode: 0644]
framework/application/configs/settings.1416914259.ini [new file with mode: 0644]
framework/application/configs/settings.1416914414.ini [new file with mode: 0644]
framework/application/configs/settings.1416941726.ini [new file with mode: 0644]
framework/application/configs/settings.1417005978.ini [new file with mode: 0644]
framework/application/configs/settings.1417006049.ini [new file with mode: 0644]
framework/application/configs/settings.1419607474.ini [new file with mode: 0644]
framework/application/configs/settings.1419607574.ini [new file with mode: 0644]
framework/application/configs/settings.1419607799.ini [new file with mode: 0644]
framework/application/configs/settings.1419860069.ini [new file with mode: 0644]
framework/application/configs/settings.1419860379.ini [new file with mode: 0644]
framework/application/configs/settings.1419861026.ini [new file with mode: 0644]
framework/application/configs/settings.1419861169.ini [new file with mode: 0644]
framework/application/configs/settings.1419861868.ini [new file with mode: 0644]
framework/application/configs/settings.1420798609.ini [new file with mode: 0644]
framework/application/configs/settings.1420798643.ini [new file with mode: 0644]
framework/application/configs/settings.1420809456.ini [new file with mode: 0644]
framework/library/ChromeLogger/ChromePhp.php [deleted file]
framework/library/ChromeLogger/fb.php [deleted file]
framework/library/CubeIT/Application.php
framework/library/CubeIT/Bootstrap/Base.php
framework/library/CubeIT/CommandLine.php
framework/library/CubeIT/Controller/ErrorController.php
framework/library/CubeIT/Db/Adapter/Pdo/Mysql.php
framework/library/CubeIT/Firephp.php [deleted file]
framework/library/CubeIT/Library.php
framework/library/CubeIT/Log/Chrome.php [deleted file]
framework/library/CubeIT/Services/Magento.php
framework/library/CubeIT/Services/Magento/Cart.php
framework/library/CubeIT/View/Helper/StyleLess.php
framework/library/FirePHPCore/FirePHP.class.php [deleted file]
framework/library/FirePHPCore/fb.php [deleted file]
index.php
info.php [new file with mode: 0644]

index 66946e4692addbef7e54d7ce2a4a925b8c035c4d..fbd385cd10bab254b98318d9beca8f0e72680ccc 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="PublishConfigData" autoUpload="Always" serverName="bloomsburrie.dev2.cubedesigners.com" remoteFilesAllowedToDisappearOnAutoupload="false" confirmBeforeUploading="false" autoUploadExternalChanges="true">
+  <component name="PublishConfigData" autoUpload="Always" serverName="staging.bloomsburie.com" remoteFilesAllowedToDisappearOnAutoupload="false" confirmBeforeUploading="false" autoUploadExternalChanges="true">
     <option name="confirmBeforeUploading" value="false" />
     <serverData>
       <paths name="alpha.toolbox.fluidbook.com">
diff --git a/CubeIT/cli.php b/CubeIT/cli.php
new file mode 100644 (file)
index 0000000..d72abf8
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+// Client en ligne de commande
+$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
+if (!isset($_SESSION)) {
+       $_SESSION = array();
+}
+$_REQUEST = $_GET = getCliArgs($argv);
+if ((!isset($_SERVER['PATH_INFO']) || $_SERVER['PATH_INFO'] == '') && isset($_GET['PATH_INFO'])) {
+       $_SERVER['PATH_INFO'] = $_GET['PATH_INFO'];
+}
+if (isset($_GET['HTTP_HOST'])) {
+       $_SERVER['HTTP_HOST'] = $_GET['HTTP_HOST'];
+}
+if (isset($_GET['SERVER_ADDR'])) {
+       $_SERVER['SERVER_ADDR'] = $_GET['SERVER_ADDR'];
+}
+if (isset($_GET['REQUEST_SCHEME'])) {
+       $_SERVER['REQUEST_SCHEME'] = $_GET['REQUEST_SCHEME'];
+}
+if (!isset($_SERVER['SERVER_ADDR'])) {
+       if (file_exists("/etc/ip")) {
+               $_SERVER['SERVER_ADDR'] = trim(file_get_contents('/etc/ip'));
+       }
+}
+$_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
+
+function getCliArgs($argv)
+{
+       $filename = array_shift($argv);
+
+       $i = 0;
+       $res = array();
+       $skip = false;
+       foreach ($argv as $j => $v) {
+               if ($skip) {
+                       $skip = false;
+                       continue;
+               }
+               if (substr($v, 0, 2) == '--') {
+                       list($k, $value) = explode('=', $v);
+                       $res[trim($k, '-')] = trim($value, ' "\'');
+               } elseif (substr($v, 0, 1) == '-') {
+                       $res[trim($v, '-')] = trim($argv[$j + 1], ' \'"');
+                       $skip = true;
+               } else {
+                       $res[$i] = trim($v, "'\" ");
+               }
+               $i++;
+       }
+       return $res;
+}
\ No newline at end of file
diff --git a/CubeIT/common.php b/CubeIT/common.php
new file mode 100644 (file)
index 0000000..8210fea
--- /dev/null
@@ -0,0 +1,145 @@
+<?php
+
+// Define paths
+defined('SITE_PROTOCOL') || define('SITE_PROTOCOL', getCurrentProtocol());
+defined('SITE_URL') || define('SITE_URL', getCurrentSiteURL());
+defined('PUBLIC_PATH') || define('PUBLIC_PATH', realpath(dirname(__FILE__) . '/../'));
+defined('FILES_PATH') || define('FILES_PATH', PUBLIC_PATH . '/files');
+defined('FRAMEWORK_PATH') || define('FRAMEWORK_PATH', realpath(PUBLIC_PATH . '/framework'));
+defined('DATA_PATH') || define('DATA_PATH', realpath(FRAMEWORK_PATH . '/data'));
+defined('RESOURCES_PATH') || define('RESOURCES_PATH', realpath(FRAMEWORK_PATH . '/resources'));
+defined('BACKUP_PATH') || define('BACKUP_PATH', realpath(FRAMEWORK_PATH . '/backup'));
+defined('LANGUAGES_PATH') || define('LANGUAGES_PATH', realpath(FRAMEWORK_PATH . '/languages'));
+defined('LIBRARY_PATH') || define('LIBRARY_PATH', realpath(FRAMEWORK_PATH . '/library'));
+defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(FRAMEWORK_PATH . '/application'));
+defined('TEMP_PATH') || define('TEMP_PATH', realpath(FRAMEWORK_PATH . '/tmp'));
+defined('LOG_PATH') || define('LOG_PATH', realpath(FRAMEWORK_PATH . '/log'));
+defined('CACHE_PATH') || define('CACHE_PATH', realpath(FRAMEWORK_PATH . '/cache'));
+defined('WSDL_CACHE_DISK') || define('WSDL_CACHE_DISK', realpath(FRAMEWORK_PATH . '/cache/' . APPLICATION_ENV . '/wsdl'));
+
+// Define application environment
+defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
+
+
+// Set internal character encoding to UTF-8
+if (function_exists('mb_internal_encoding')) {
+       mb_internal_encoding("UTF-8");
+}
+
+// Fix Path info if neeeded
+if (isset($_SERVER['PATH_INFO']) && !isset($_SERVER['ORIG_PATH_INFO'])) {
+       $_SERVER['ORIG_PATH_INFO'] = $_SERVER['PATH_INFO'];
+}
+// Fix for http auth
+if (isset($_SERVER['REDIRECT_REMOTE_USER']) && !isset($_SERVER['REMOTE_USER'])) {
+       $_SERVER['REMOTE_USER'] = $_SERVER['REDIRECT_REMOTE_USER'];
+}
+if (isset($_SERVER['REMOTE_USER']) && !isset($_SERVER['HTTP_AUTHORIZATION'])) {
+       $_SERVER['HTTP_AUTHORIZATION'] = $_SERVER['REMOTE_USER'];
+}
+
+// Ensure library/ is on include_path
+require_once LIBRARY_PATH . '/CubeIT/Library.php';
+CubeIT_Library::initIncludePath();
+CubeIT_Library::autoloader();
+//CubeIT_Loader::enablePluginLoaderCache();
+
+profile(__FILE__, __LINE__, 'Init application');
+
+/** Zend_Application */
+// Create application, bootstrap, and run
+$application = new CubeIT_Application(
+       APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'
+);
+
+// Application library
+CubeIT_Library::registerAppNamespace($application->getBootstrap()->getAppNamespace());
+$application->bootstrap('minimum')->run();
+
+
+function __($text, $locale = null) {
+       return Bootstrap::getInstance()->__($text, $locale);
+}
+
+function profile($file, $line, $comment = '') {
+       require_once LIBRARY_PATH . '/CubeIT/Files.php';
+       global $profile, $start;
+       $time = round(microtime(true) - $start, 6);
+       if (!isset($profile)) {
+               $profile = array(array('Cumulated Time', 'Time', 'Memory', 'File', 'Line', 'Comment'));
+               $t = 'Time';
+       } else {
+               $t = $time - floatval($profile[count($profile) - 1][0]);
+       }
+       $profile[count($profile) - 1][1] = $t;
+
+       $profile[] = array($time, 0, CubeIT_Files::humanReadableSize(memory_get_usage()), $file, $line, $comment);
+       return $time;
+}
+
+function endProfile() {
+       global $profile, $profileSent, $application;
+       if (headers_sent()) {
+               return;
+       }
+
+       $bootstrap = method_exists($application, 'getBootstrap') ? $application->getBootstrap() : null;
+       $doProfile = !is_null($bootstrap) && $bootstrap->hasOption('profiler') && $bootstrap->getOption('profiler');
+
+       if (!$doProfile) {
+               return;
+       }
+       if (isset($profileSent)) {
+               return;
+       }
+       $time = profile('END', 0);
+
+       $root = realpath(FRAMEWORK_PATH . '/../');
+
+       $order = $profile;
+       uasort($order, 'orderProfile');
+
+       foreach ($profile as $i => $line) {
+               if ($i == 0) {
+                       continue;
+               }
+
+               $profile[$i][0] = number_format($profile[$i][0], 5, ',', '');
+               $profile[$i][1] = number_format($profile[$i][1], 5, ',', '');
+               $profile[$i][3] = str_replace($root, '', $profile[$i][3]);
+       }
+
+
+       $order = array_slice($order, 0, 4);
+       if (!file_exists(FILES_PATH . '/profiling')) {
+               mkdir(FILES_PATH . '/profiling', 0777, true);
+       }
+       file_put_contents(FILES_PATH . '/profiling/profile.txt', print_r($order, true) . "\n\n-----\n\n" . print_r($profile, true));
+       $profileSent = true;
+}
+
+function orderProfile($a, $b) {
+       return $a[1] > $b[1] ? -1 : 1;
+}
+
+
+function getCurrentSiteURL() {
+       return SITE_PROTOCOL . $_SERVER['HTTP_HOST'];
+}
+
+function getCurrentProtocol() {
+       if (isset($_SERVER['HTTPS']) &&
+               ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
+               isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
+               $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'
+       ) {
+               $protocol = 'https://';
+       } else {
+               $protocol = 'http://';
+       }
+       return $protocol;
+}
+
+function fb(... $a){
+
+}
\ No newline at end of file
diff --git a/CubeIT/css/admin/common.css b/CubeIT/css/admin/common.css
new file mode 100644 (file)
index 0000000..c57ff72
--- /dev/null
@@ -0,0 +1,54 @@
+.cubeit-selectlist {
+  box-sizing: border-box;
+  width: 100%;
+}
+.zend_form dd,
+.zend_form dt {
+  clear: both;
+}
+.button.left {
+  float: none;
+}
+.cubeit-propagate {
+  background: #f4b5ca;
+  color: #e1134b;
+  border: 1px solid #e1134b;
+  padding: 5px;
+  margin: 5px 0 10px 0;
+}
+.cubeit-propagate label {
+  display: block;
+  vertical-align: top;
+}
+.backupList {
+  clear: both;
+}
+input.error,
+select.error,
+textarea.error {
+  border: 1px #ff0000 solid;
+}
+[data-offline],
+[data-offline]:hover {
+  text-decoration: line-through !important;
+}
+#mockup {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  z-index: 100000;
+  top: 0px;
+  left: 0px;
+  pointer-events: none;
+  opacity: 0.3;
+  display: block;
+  background-position: 50% 0;
+  background-repeat: no-repeat;
+}
+.markItUpHeader li a {
+  box-sizing: content-box;
+}
+.markItUpEditor {
+  padding: 5px 5px 5px 35px !important;
+  border-color: #3c769d !important;
+}
diff --git a/CubeIT/css/admin/translations.css b/CubeIT/css/admin/translations.css
new file mode 100644 (file)
index 0000000..3c5780c
--- /dev/null
@@ -0,0 +1,27 @@
+textarea {
+  width: 100%;
+}
+.excel {
+  display: inline-block !important;
+  float: none !important;
+}
+.submit {
+  float: right;
+}
+#locale-label,
+#locale-element {
+  display: inline-block;
+  width: 45%;
+  vertical-align: top;
+  margin: 0 0 30px 0;
+}
+#locale-label {
+  text-align: right;
+  margin: 0 20px 30px 0;
+}
+#locale-element {
+  text-align: left;
+}
+form dt label {
+  text-transform: none !important;
+}
diff --git a/CubeIT/css/admin/tree.css b/CubeIT/css/admin/tree.css
new file mode 100644 (file)
index 0000000..69b1c6f
--- /dev/null
@@ -0,0 +1,84 @@
+/* Page tree */
+#pageTreeInterface h3 {
+  margin: 10px 0 10px 0 !important;
+}
+#pageTreeInterface .page {
+  padding: 5px;
+  border: 1px solid #ccc;
+  margin: 2px 0;
+  background: #eee;
+}
+#pageTreeInterface .page img {
+  vertical-align: top;
+}
+#pageTreeInterface .page .handle {
+  margin-right: 10px;
+}
+#pageTreeInterface .page .nextl {
+  float: right;
+  margin-left: 10px;
+  background: none !important;
+}
+#pageTreeInterface .page .previous {
+  float: right;
+  background: none !important;
+}
+#pageTreeInterface .page .add {
+  float: right;
+  margin-right: 10px;
+}
+#pageTreeInterface .page .online {
+  float: right;
+  margin-right: 10px;
+}
+#pageTreeInterface .page .online .checkbox {
+  background-image: url("/CubeIT/images/online-offline.png");
+  background-repeat: no-repeat;
+  background-position: 0 100%;
+  width: 16px;
+  height: 16px;
+  cursor: pointer;
+}
+#pageTreeInterface .page .online .checkbox[checked] {
+  background-position: 0 0;
+}
+#pageTreeInterface .page .acl {
+  float: right;
+  margin-right: 10px;
+}
+#pageTreeInterface .page .delete {
+  float: right;
+  margin-right: 10px;
+}
+#pageTreeInterface .page .id {
+  font-weight: bold;
+  margin-right: 10px;
+}
+#pageTreeInterface .page .name {
+  margin-right: 10px;
+}
+#pageTreeInterface .level0 {
+  margin-left: 0px;
+}
+#pageTreeInterface .level1 {
+  margin-left: 30px;
+}
+#pageTreeInterface .level2 {
+  margin-left: 60px;
+}
+#pageTreeInterface .level3 {
+  margin-left: 90px;
+}
+#pageTreeInterface .level4 {
+  margin-left: 120px;
+}
+#pageTreeInterface .level5 {
+  margin-left: 150px;
+}
+#pageTreeInterface .template {
+  width: 150px;
+}
+#pageTreeInterface input,
+#pageTreeInterface select {
+  width: auto;
+}
diff --git a/CubeIT/css/bannerCookies.css b/CubeIT/css/bannerCookies.css
new file mode 100644 (file)
index 0000000..baa07e8
--- /dev/null
@@ -0,0 +1,38 @@
+#cookieBanner {
+  position: fixed;
+  background-color: #333;
+  color: #fff;
+  left: 20px;
+  bottom: 20px;
+  width: 350px;
+  font-size: 13px;
+  padding: 30px;
+  text-align: left;
+  z-index: 1000;
+}
+#cookieBanner a {
+  display: block;
+  text-decoration: none;
+  color: #fff;
+  margin-top: 8px;
+  width: 0;
+  white-space: nowrap;
+}
+#cookieBanner a:hover {
+  text-decoration: underline;
+}
+#cookieBanner a.close {
+  color: #fff;
+  position: absolute;
+  width: 25px;
+  height: 25px;
+  right: 10px;
+  top: 10px;
+  margin: 0;
+  background-color: transparent;
+  border-radius: 0;
+}
+#cookieBanner a.close svg {
+  width: 25px;
+  height: 25px;
+}
diff --git a/CubeIT/css/cms.css b/CubeIT/css/cms.css
new file mode 100644 (file)
index 0000000..22338da
--- /dev/null
@@ -0,0 +1,104 @@
+a.button {
+  font-weight: bold;
+  font-style: normal !important;
+  color: #fff !important;
+  background-color: #333;
+  padding: 7px 10px;
+  text-transform: uppercase;
+  font-size: 15px;
+  text-decoration: none;
+  float: right;
+  margin: 15px 0 0 0;
+}
+a.button.little {
+  font-size: 12px;
+  padding: 4px 10px;
+}
+#adminBar {
+  background-color: #333;
+}
+#adminBar .bar {
+  font-weight: 500;
+  font-size: 13px;
+  line-height: 13px;
+  height: 13px;
+  color: #fff;
+  text-transform: uppercase;
+}
+#adminBar .bar a {
+  color: #fff;
+  margin: 0 5px;
+  text-decoration: none;
+}
+#adminBar a.right {
+  float: right;
+  margin: 0;
+}
+#adminBar a:hover {
+  text-decoration: underline;
+}
+.hidden {
+  display: none;
+}
+form input[type="text"],
+form input[type="search"],
+form input[type="email"],
+form input[type="password"],
+form input[type="url"],
+form input[type="tel"],
+form input[type="number"],
+form input[type="range"],
+form textarea,
+form select,
+form .cubeit-file-list,
+.cubeit-selectlist-search input,
+.tagHandlerContainer,
+.cubeit-form-static {
+  width: 100%;
+  border: 1px solid #a2a2a2;
+  color: #323232;
+  font-size: 12px;
+  padding: 5px;
+  background: #fff;
+  box-sizing: border-box;
+  font-weight: 400;
+}
+form .cubeit-form-date {
+  white-space: nowrap;
+}
+form .tagHandlerContainer input[type="text"] {
+  border: 0;
+  padding: 0;
+}
+form .error input[type="text"],
+form .error input[type="search"],
+form .error input[type="email"],
+form .error input[type="password"],
+form .error input[type="url"],
+form .error input[type="tel"],
+form .error input[type="number"],
+form .error input[type="range"],
+form .error textarea,
+form .error select,
+form .error .cubeit-file-list,
+.cubeit-selectlist-search .error input,
+form .error .tagHandlerContainer {
+  border-color: #c91818;
+}
+.elementwrap {
+  position: relative;
+  margin: 10px 0;
+}
+.errormessage {
+  color: #c91818;
+  right: 0px;
+  top: 0px;
+  position: absolute;
+}
+form.multiactions .clearbut {
+  clear: none;
+  margin: 0 5px !important;
+  width: 1px !important;
+  float: right;
+  height: 1px !important;
+}
diff --git a/CubeIT/css/cube.css b/CubeIT/css/cube.css
new file mode 100644 (file)
index 0000000..49ca560
--- /dev/null
@@ -0,0 +1,280 @@
+/* Disable default browser behavior */
+*:focus,
+a {
+  outline: 0;
+}
+input[type=text],
+input[type=password],
+input[type=file],
+input[type=email],
+input[type=search],
+input[type=tel],
+input[type=url],
+textarea {
+  appearance: none;
+}
+* {
+  padding: 0;
+  margin: 0;
+  background-repeat: no-repeat;
+}
+iframe {
+  border: 0;
+  margin: 0;
+  padding: 0;
+}
+body,
+html {
+  min-height: 100%;
+}
+body {
+  overflow-x: hidden;
+}
+img {
+  border: 0;
+  user-select: none;
+  touch-callout: none;
+}
+hr {
+  border: 0;
+  border-bottom: 1px solid #ccc;
+}
+table {
+  border-collapse: collapse;
+  empty-cells: show;
+}
+input[type='checkbox'],
+input[type='radio'] {
+  margin: 3px;
+  margin-bottom: 3px;
+}
+textarea {
+  resize: vertical;
+}
+ul,
+ol {
+  list-style-position: inside;
+}
+form .hsubmit {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+  z-index: -10;
+  text-indent: -6666px;
+  width: 0px;
+  height: 0px;
+  overflow: hidden;
+  border: 0;
+  visibility: hidden;
+}
+.right {
+  text-align: right !important;
+}
+.left {
+  text-align: left !important;
+}
+.center {
+  text-align: center !important;
+}
+.middle {
+  vertical-align: middle !important;
+}
+.top {
+  vertical-align: top !important;
+}
+.bottom {
+  vertical-align: bottom !important;
+}
+.baseline {
+  vertical-align: baseline !important;
+}
+html .fullscreen {
+  width: 100%;
+  height: 100%;
+}
+.clear,
+.clearbut {
+  clear: both;
+}
+.clearbut {
+  width: 0px !important;
+  height: 0px !important;
+  float: none;
+  margin: 0 !important;
+  padding: 0 !important;
+  border: 0 !important;
+  outline: 0 !important;
+}
+.block {
+  display: block;
+}
+.no-float,
+.nofloat {
+  float: none !important;
+}
+.auto {
+  width: auto !important;
+  height: auto !important;
+}
+.wauto {
+  width: auto !important;
+}
+.hauto {
+  height: auto !important;
+}
+.max {
+  width: 100%;
+}
+.hmax {
+  height: 100%;
+}
+.min {
+  width: 1px;
+}
+.hmin {
+  height: 1px;
+}
+.nowrap {
+  white-space: nowrap;
+}
+.nomargin {
+  padding: 0;
+  margin: 0;
+}
+.hide,
+[data-hidden="1"] {
+  display: none !important;
+}
+.pemail {
+  visibility: hidden;
+}
+.strong {
+  font-weight: bold;
+}
+.onlyforprint {
+  display: none;
+}
+/* Rollovers */
+.rollover {
+  background-position: top left;
+  display: block;
+}
+.rollover:hover {
+  background-position: bottom left;
+}
+.rollover.active {
+  background-position: bottom left;
+}
+.cubeit-form-date select {
+  width: auto !important;
+  display: inline;
+  margin-right: 10px;
+}
+#ajaxLoader {
+  position: fixed;
+  display: none;
+  top: 0px;
+  left: 0px;
+  width: 100%;
+  height: 100%;
+  z-index: 10000000;
+}
+#ajaxLoader.error {
+  color: #c00;
+}
+#ajaxLoader .c {
+  background: #fff;
+  font-size: 16px;
+  padding: 20px;
+  width: 340px;
+  height: 90px;
+  box-sizing: border-box;
+  margin: 0 auto;
+  border-radius: 0 0 10px 10px;
+  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5);
+}
+#ajaxLoader .c img {
+  vertical-align: middle;
+  display: block;
+  float: left;
+}
+#ajaxLoader .c p {
+  width: 240px;
+  float: left;
+  margin-left: 20px;
+  text-align: center;
+  padding: 0;
+}
+.multicheckbox {
+  overflow: auto;
+}
+#adminlogin #message {
+  font-weight: bold;
+  color: #f00;
+  text-align: center;
+  margin: 10px;
+}
+.ui-front {
+  z-index: 100000 !important;
+}
+.dotclear .floating-left {
+  float: left;
+  margin: 0 1em 1em 0;
+}
+.dotclear .floating-right {
+  float: right;
+  margin: 0 0 1em 1em;
+}
+.dotclear .floating-center {
+  display: block;
+  margin: 0 auto;
+}
+#privacyForm label {
+  font-size: inherit !important;
+}
+#privacyForm label + br {
+  display: none;
+}
+#privacyForm dd {
+  margin: 15px 0;
+}
+#privacyForm dd label {
+  margin: 0 18px 0 0;
+}
+#privacyForm dd input {
+  vertical-align: top;
+}
+.scrollbar-measure {
+  width: 100px;
+  height: 100px;
+  overflow: scroll;
+  position: absolute;
+  top: -9999px;
+}
+.images[data-align="L"],
+.images[data-align="C"],
+.images[data-align="R"] {
+  float: none;
+  clear: both;
+}
+.images[data-align="L"] {
+  text-align: left;
+}
+.images[data-align="C"] {
+  text-align: center;
+}
+.images[data-align="R"] {
+  text-align: right;
+}
+.images[data-align="FL"],
+.images[data-align="FR"] {
+  margin: 0.5em 1em;
+}
+.images[data-align="FL"] {
+  float: left;
+  margin-left: 0;
+}
+.images[data-align="FR"] {
+  float: right;
+  margin-right: 0;
+}
diff --git a/CubeIT/css/fileManager.css b/CubeIT/css/fileManager.css
new file mode 100644 (file)
index 0000000..0193aa2
--- /dev/null
@@ -0,0 +1,111 @@
+.cubeit-file-manager .cubeit-file-manager-controls > * {
+  vertical-align: middle;
+}
+.cubeit-file-manager .cubeit-file-manager-controls .dragMessage {
+  display: inline-block;
+  width: 50%;
+  margin: 0 0 0 10px;
+}
+.cubeit-file-manager .cubeit-file-list {
+  clear: both;
+  font-size: 12px;
+  list-style: none;
+  min-height: 100px;
+}
+.cubeit-file-manager .cubeit-file-list.drop {
+  border-style: dashed;
+}
+.cubeit-file-manager .cubeit-file-list li {
+  padding: 10px;
+  display: inline-block;
+  background-color: #e6e6e6;
+  position: relative;
+  margin: 0 10px 10px 0;
+  border: 1px solid transparent;
+  height: 220px;
+  width: 170px;
+  box-sizing: border-box;
+  vertical-align: top;
+}
+.cubeit-file-manager .cubeit-file-list li.new {
+  text-align: center;
+}
+.cubeit-file-manager .cubeit-file-list li.new > * {
+  margin: 8px 0;
+}
+.cubeit-file-manager .cubeit-file-list li.new .cancelUpload {
+  color: #c91818;
+}
+.cubeit-file-manager .cubeit-file-list li.new .progress {
+  height: 20px;
+  border: 0;
+  border-radius: 4px;
+  background-color: #fff;
+  padding: 3px;
+  width: 100%;
+  box-sizing: border-box;
+  box-shadow: inset 1px 1px 4px -1px rgba(0, 0, 0, 0);
+  margin: 30px 0;
+}
+.cubeit-file-manager .cubeit-file-list li.new .progress .bar {
+  background-image: linear-gradient(to bottom, #a4cf32 0%, #78a918 100%);
+  width: 0%;
+  height: 100%;
+  border-radius: 3px;
+}
+.cubeit-file-manager .cubeit-file-list .icon {
+  display: inline-block;
+}
+.cubeit-file-manager .cubeit-file-list .icon img {
+  vertical-align: middle;
+}
+.cubeit-file-manager .cubeit-file-list .additional textarea {
+  height: 100%;
+}
+.cubeit-file-manager .cubeit-file-list .del {
+  position: absolute;
+  top: 0px;
+  right: 0px;
+  background-image: url("../images/filesmanager/delete.png");
+  width: 16px;
+  height: 16px;
+}
+.cubeit-file-manager .cubeit-file-list .download {
+  margin: 0 10px 0 0;
+  position: absolute;
+  right: 0px;
+  bottom: 5px;
+}
+.cubeit-file-manager .cubeit-file-list .filename {
+  display: block;
+  text-align: center;
+  margin: 10px 0 5px;
+  font-size: 13px;
+}
+.cubeit-file-manager .cubeit-file-list li,
+.cubeit-file-manager .cubeit-file-list .del,
+.cubeit-file-manager .cubeit-file-list .icon {
+  cursor: pointer;
+}
+.cubeit-file-manager .cubeit-file-list .sortable-placeholder {
+  border: 1px dashed rgba(0, 0, 0, 0.5);
+}
+.cubeit-file-manager .cubeit-file-manager-controls {
+  margin: 5px 0;
+}
+.cubeit-file-manager.cubeit-filemanager-legend .cubeit-file-list li {
+  white-space: nowrap;
+  width: 100%;
+  height: 200px;
+}
+.cubeit-file-manager.cubeit-filemanager-legend .cubeit-file-list li .additional {
+  display: inline-block;
+  width: auto;
+  height: 150px;
+  margin: 0 0 0 10px;
+}
+.cubeit-file-manager.cubeit-filemanager-legend .cubeit-file-list li .filename {
+  position: absolute;
+  bottom: 10px;
+  left: 10px;
+}
diff --git a/CubeIT/css/multiform.css b/CubeIT/css/multiform.css
new file mode 100644 (file)
index 0000000..cb36980
--- /dev/null
@@ -0,0 +1,113 @@
+.cubeit_multiform {
+  box-sizing: border-box;
+  width: 100%;
+}
+.cubeit_multiform[data-accordion="1"] > dd > fieldset > dl {
+  display: none;
+}
+.cubeit_multiform > dd {
+  margin-bottom: 2px;
+}
+.cubeit_multiform > dd > fieldset {
+  border: 0px;
+  background: #eee;
+  padding: 0;
+  margin: 0;
+}
+.cubeit_multiform > dd > fieldset > dl {
+  padding: 10px;
+}
+.cubeit_multiform > dd > fieldset > .legendholder > legend {
+  display: block;
+  background: #cacaca;
+  padding: 5px;
+  width: 100%;
+  box-sizing: border-box;
+}
+.cubeit_multiform > dt {
+  display: none;
+}
+.cubeit_multiform .legendholder > legend {
+  min-height: 25px;
+}
+.cubeit_multiform .legendholder > legend span {
+  width: 16px;
+  height: 16px;
+  display: block;
+  float: left;
+  cursor: pointer;
+  background-repeat: no-repeat;
+}
+.cubeit_multiform .legendholder > legend .legend {
+  width: 80%;
+  display: inline;
+  margin-left: 5px;
+  line-height: 14px;
+  max-width: 550px;
+  overflow: hidden;
+  text-overflow: clip ellipsis;
+  white-space: nowrap;
+}
+.cubeit_multiform .legendholder > legend .add,
+.cubeit_multiform .legendholder > legend .del {
+  float: right;
+  margin-right: 5px;
+}
+.cubeit_multiform .legendholder > legend .move {
+  background-image: url('/CubeIT/images/tango/16/actions/mail-send-receive.png');
+  margin-left: 5px;
+  margin-right: 15px;
+}
+.cubeit_multiform .legendholder > legend .add {
+  background-image: url('/CubeIT/images/tango/16/actions/list-add.png');
+}
+.cubeit_multiform .legendholder > legend .del {
+  background-image: url('/CubeIT/images/tango/16/actions/list-remove.png');
+}
+.cubeit_multiform dd#cubeitbase-element,
+.cubeit_multiform dd#cubeitbase-label {
+  display: none;
+}
+.cubeit_multiform .ui-state-highlight {
+  height: 16px;
+  border: 1px dashed #cacaca;
+  padding: 5px;
+}
+.cubeit_multiform[data-style="table"] {
+  display: table;
+}
+.cubeit_multiform[data-style="table"] > dd > fieldset > .legendholder > legend {
+  display: none;
+}
+.cubeit_multiform[data-style="table"] > dd > fieldset > dl {
+  display: table-row;
+  width: 100%;
+}
+.cubeit_multiform[data-style="table"] > dd > fieldset > dl > div {
+  padding: 0 10px;
+  width: 9999px;
+  display: table-cell;
+}
+.cubeit_multiform[data-style="table"] > dd > fieldset > dl > div:first-child {
+  padding-left: 0;
+}
+.cubeit_multiform[data-style="table"] > dd > fieldset > dl > div:last-child {
+  padding-right: 0;
+}
+.cubeit_multiform[data-style="table"] > dd > fieldset > dl > div dt {
+  display: none;
+}
+.cubeit_multiform[data-style="table"] > dd > fieldset > dl > div.but {
+  width: 1px;
+  vertical-align: bottom;
+}
+.cubeit_multiform[data-style="table"] > dd > fieldset > dl > div.but > span {
+  white-space: nowrap;
+  display: block;
+  width: 100%;
+}
+.cubeit_multiform[data-style="table"] > dd:first-child > fieldset > dl > div > dt {
+  display: inline-block;
+  white-space: nowrap;
+  width: 0;
+}
diff --git a/CubeIT/css/orderform.css b/CubeIT/css/orderform.css
new file mode 100644 (file)
index 0000000..55b6d81
--- /dev/null
@@ -0,0 +1,25 @@
+.cubeit_formorder {
+  list-style: none;
+  padding: 7px 9px;
+  border: 1px solid #a2a2a2;
+  margin: 10px 0;
+}
+.cubeit_formorder li {
+  background: #cacaca none repeat scroll 0 0;
+  box-sizing: border-box;
+  display: block;
+  padding: 5px 5px 5px 50px;
+  width: 100%;
+  cursor: pointer;
+  background-image: url('/CubeIT/images/tango/16/actions/mail-send-receive.png');
+  background-position: 15px 6px;
+  background-repeat: no-repeat;
+  margin: 2px 0;
+  border: 1px solid transparent;
+  height: 30px;
+}
+.cubeit_formorder li.ui-state-highlight {
+  border: 1px dashed #cacaca;
+  background-image: none;
+  background-color: transparent;
+}
diff --git a/CubeIT/css/popup.css b/CubeIT/css/popup.css
new file mode 100644 (file)
index 0000000..9177150
--- /dev/null
@@ -0,0 +1,102 @@
+/* Faux Popup */
+.popupOverlay {
+  background: #000;
+  opacity: 0;
+  position: fixed;
+  display: none;
+  top: 0px;
+  left: 0px;
+  width: 100%;
+  height: 100%;
+}
+.popupWindow {
+  display: none;
+  position: fixed;
+}
+.popupWindow .closePopup {
+  position: absolute;
+  top: 25px;
+  right: 25px;
+}
+.b {
+  padding: 25px;
+  color: #323232;
+}
+.b .back {
+  background: #fff;
+  box-shadow: 0 0 5px 5px rgba(0, 0, 0, 0.2);
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  top: 0;
+  left: 0px;
+  z-index: -1;
+  box-sizing: border-box;
+}
+.b .top {
+  box-sizing: border-box;
+  padding: 25px 25px 0 25px;
+  top: -25px;
+  left: -25px;
+  position: relative;
+}
+.b.nopadding {
+  padding: 0;
+}
+.b > img {
+  display: block;
+}
+.b h3 {
+  font-weight: 400;
+  font-size: 24px;
+  padding: 0 20px 0 0;
+  margin: 0 0 20px 0;
+}
+.ajaxpopup {
+  color: #323232;
+}
+.ajaxpopup .closeholder {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+  width: 100%;
+  z-index: 1;
+}
+.ajaxpopup .cubeit_multiform legend {
+  font-size: 16px;
+}
+.ajaxpopup label,
+.ajaxpopup legend {
+  font-size: 12px;
+}
+.ajaxpopup fieldset {
+  padding: 10px;
+  margin: 10px 0;
+  border: 1px solid #A2A2A2;
+  background-color: rgba(0, 0, 0, 0.05);
+}
+.ajaxpopup fieldset.nolegend > .legendholder > legend {
+  display: none;
+}
+.ajaxpopup fieldset legend {
+  font-size: 13px;
+  padding: 5px 10px;
+}
+.ajaxpopup .cubeit-file-manager {
+  margin: 10px 0 10px;
+}
+.ajaxpopup .multicheckbox {
+  border: 1px solid #a2a2a2;
+  background: #fff;
+  padding: 10px;
+  color: #323232;
+}
+.ajaxpopup .multicheckbox input {
+  vertical-align: top;
+}
+.ajaxpopup .localized {
+  border: 1px solid #A2A2A2;
+  margin: 10px 0;
+  padding: 10px;
+  background: #eee;
+}
diff --git a/CubeIT/css/selectlist.css b/CubeIT/css/selectlist.css
new file mode 100644 (file)
index 0000000..f175854
--- /dev/null
@@ -0,0 +1,83 @@
+.cubeit-selectlist {
+  font-size: 12px;
+  min-width: 400px;
+}
+.cubeit-selectlist td,
+.cubeit-selectlist th {
+  text-align: left;
+  padding: 5px;
+}
+.cubeit-selectlist th {
+  border-bottom: 1px solid #000;
+}
+.cubeit-selectlist th a img {
+  vertical-align: middle;
+  margin: 0 0 0 3px;
+}
+.cubeit-selectlist tr.odd td {
+  background: #ccc;
+}
+.button.cubeit-selectlist-new {
+  margin: 10px 0 10px 0;
+}
+.cubeit-selectlist th a {
+  color: inherit;
+}
+.cubeit-selectlist-container .pager {
+  margin: 0 auto;
+  font-size: 14px;
+  text-align: center;
+}
+.cubeit-selectlist-container .pager a,
+.cubeit-selectlist-filterlist a {
+  color: inherit;
+}
+.cubeit-selectlist-search {
+  margin-top: 10px;
+}
+dd.selectlist-inline {
+  border: 1px solid #A2A2A2;
+  padding: 10px;
+}
+.cubeit-selectlist-filterlist {
+  margin: 15px 0 0 0;
+  background: #ccc;
+  padding: 15px;
+  border: 1px solid #333;
+}
+.cubeit-selectlist-filter,
+.cubeit-selectlist-filter-check,
+.cubeit-selectlist-filter dt {
+  display: inline-block;
+  vertical-align: top;
+}
+.cubeit-selectlist-filterlist h4 {
+  cursor: pointer;
+  display: inline-block;
+}
+.cubeit-selectlist-filter {
+  margin: 0 10px 0 0;
+}
+.cubeit-selectlist-filter-summary {
+  font-size: 60%;
+  font-weight: normal;
+  font-style: italic;
+  float: right;
+  text-align: left;
+}
+.cubeit-selectlist-editfilters,
+.cubeit-selectlist-clearfilters {
+  display: inline;
+  margin: 0 0 0 5px;
+}
+.cubeit-selectlist-editfilters img,
+.cubeit-selectlist-clearfilters img {
+  vertical-align: middle;
+}
+.cubeit-selectlist-filter-edition {
+  display: none;
+}
+.cubeit-selectlist .action {
+  width: 0;
+  white-space: nowrap;
+}
diff --git a/CubeIT/css/slideshow.css b/CubeIT/css/slideshow.css
new file mode 100644 (file)
index 0000000..80e5721
--- /dev/null
@@ -0,0 +1,32 @@
+.slideshow {
+  position: relative;
+}
+.slideshow .slides {
+  overflow: hidden;
+  position: relative;
+}
+.slideshow .slides .slide {
+  display: none;
+  position: absolute;
+  top: 0px;
+  left: 0px;
+  z-index: 9;
+  background-size: cover;
+  background-position: 50% 50%;
+  width: 100%;
+  height: 100%;
+}
+.slideshow .arrows a {
+  position: absolute;
+  z-index: 10;
+  display: block;
+}
+.slideshow .arrows a:before {
+  content: none !important;
+}
+.slideshow .arrows a.prev {
+  left: 0px;
+}
+.slideshow .arrows a .next {
+  right: 0px;
+}
diff --git a/CubeIT/css/taghandler.css b/CubeIT/css/taghandler.css
new file mode 100644 (file)
index 0000000..bb50777
--- /dev/null
@@ -0,0 +1,36 @@
+.tagItem .sorthandle {
+  width: 16px;
+  height: 16px;
+  background-image: url('/CubeIT/images/tango/16/actions/mail-send-receive.png');
+  display: inline-block;
+  margin-top: 5px;
+  margin-right: 5px;
+  vertical-align: top;
+  cursor: pointer;
+  float: left;
+}
+.tagItem .remove {
+  width: 16px;
+  height: 16px;
+  background-image: url('/CubeIT/images/tango/16/actions/list-remove.png');
+  display: inline-block;
+  margin-top: 5px;
+  margin-right: 5px;
+  cursor: pointer;
+  float: right;
+  vertical-align: top;
+}
+.tagItem .tagItemContent {
+  display: inline-block;
+  vertical-align: top;
+  float: left;
+}
+body .tagHandler ul.tagHandlerContainer li {
+  height: 30px;
+  line-height: 22px;
+  float: none;
+  border-radius: 2px;
+}
+body .tagHandler .tagInput {
+  display: block;
+}
diff --git a/CubeIT/images/close.svg b/CubeIT/images/close.svg
new file mode 100644 (file)
index 0000000..7f30936
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
+    <g fill="currentColor">
+        <path d="M4.34 2.93l12.73 12.73-1.41 1.41L2.93 4.35z"/>
+        <path d="M17.07 4.34L4.34 17.07l-1.41-1.41L15.66 2.93z"/>
+    </g>
+</svg>
diff --git a/CubeIT/images/download.png b/CubeIT/images/download.png
new file mode 100644 (file)
index 0000000..340a87e
Binary files /dev/null and b/CubeIT/images/download.png differ
diff --git a/CubeIT/images/external.png b/CubeIT/images/external.png
new file mode 100644 (file)
index 0000000..d4bfb82
Binary files /dev/null and b/CubeIT/images/external.png differ
diff --git a/CubeIT/images/files/audio.png b/CubeIT/images/files/audio.png
new file mode 100644 (file)
index 0000000..fcd3636
Binary files /dev/null and b/CubeIT/images/files/audio.png differ
diff --git a/CubeIT/images/files/blank.png b/CubeIT/images/files/blank.png
new file mode 100644 (file)
index 0000000..4e6dd7f
Binary files /dev/null and b/CubeIT/images/files/blank.png differ
diff --git a/CubeIT/images/files/document.png b/CubeIT/images/files/document.png
new file mode 100644 (file)
index 0000000..ac4e868
Binary files /dev/null and b/CubeIT/images/files/document.png differ
diff --git a/CubeIT/images/files/executable.png b/CubeIT/images/files/executable.png
new file mode 100644 (file)
index 0000000..7b4b357
Binary files /dev/null and b/CubeIT/images/files/executable.png differ
diff --git a/CubeIT/images/files/html.png b/CubeIT/images/files/html.png
new file mode 100644 (file)
index 0000000..e3913cb
Binary files /dev/null and b/CubeIT/images/files/html.png differ
diff --git a/CubeIT/images/files/image.png b/CubeIT/images/files/image.png
new file mode 100644 (file)
index 0000000..a9a4fe4
Binary files /dev/null and b/CubeIT/images/files/image.png differ
diff --git a/CubeIT/images/files/package.png b/CubeIT/images/files/package.png
new file mode 100644 (file)
index 0000000..c6e58ae
Binary files /dev/null and b/CubeIT/images/files/package.png differ
diff --git a/CubeIT/images/files/presentation.png b/CubeIT/images/files/presentation.png
new file mode 100644 (file)
index 0000000..0cc0d01
Binary files /dev/null and b/CubeIT/images/files/presentation.png differ
diff --git a/CubeIT/images/files/spreadsheet.png b/CubeIT/images/files/spreadsheet.png
new file mode 100644 (file)
index 0000000..a3a8782
Binary files /dev/null and b/CubeIT/images/files/spreadsheet.png differ
diff --git a/CubeIT/images/files/text.png b/CubeIT/images/files/text.png
new file mode 100644 (file)
index 0000000..75f6378
Binary files /dev/null and b/CubeIT/images/files/text.png differ
diff --git a/CubeIT/images/files/video.png b/CubeIT/images/files/video.png
new file mode 100644 (file)
index 0000000..c896017
Binary files /dev/null and b/CubeIT/images/files/video.png differ
diff --git a/CubeIT/images/filesmanager/delete.png b/CubeIT/images/filesmanager/delete.png
new file mode 100644 (file)
index 0000000..d806ffe
Binary files /dev/null and b/CubeIT/images/filesmanager/delete.png differ
diff --git a/CubeIT/images/flags/ad.png b/CubeIT/images/flags/ad.png
new file mode 100644 (file)
index 0000000..625ca84
Binary files /dev/null and b/CubeIT/images/flags/ad.png differ
diff --git a/CubeIT/images/flags/ae.png b/CubeIT/images/flags/ae.png
new file mode 100644 (file)
index 0000000..ef3a1ec
Binary files /dev/null and b/CubeIT/images/flags/ae.png differ
diff --git a/CubeIT/images/flags/af.png b/CubeIT/images/flags/af.png
new file mode 100644 (file)
index 0000000..a4742e2
Binary files /dev/null and b/CubeIT/images/flags/af.png differ
diff --git a/CubeIT/images/flags/ag.png b/CubeIT/images/flags/ag.png
new file mode 100644 (file)
index 0000000..556d550
Binary files /dev/null and b/CubeIT/images/flags/ag.png differ
diff --git a/CubeIT/images/flags/ai.png b/CubeIT/images/flags/ai.png
new file mode 100644 (file)
index 0000000..74ed29d
Binary files /dev/null and b/CubeIT/images/flags/ai.png differ
diff --git a/CubeIT/images/flags/al.png b/CubeIT/images/flags/al.png
new file mode 100644 (file)
index 0000000..92354cb
Binary files /dev/null and b/CubeIT/images/flags/al.png differ
diff --git a/CubeIT/images/flags/am.png b/CubeIT/images/flags/am.png
new file mode 100644 (file)
index 0000000..344a2a8
Binary files /dev/null and b/CubeIT/images/flags/am.png differ
diff --git a/CubeIT/images/flags/an.png b/CubeIT/images/flags/an.png
new file mode 100644 (file)
index 0000000..633e4b8
Binary files /dev/null and b/CubeIT/images/flags/an.png differ
diff --git a/CubeIT/images/flags/ao.png b/CubeIT/images/flags/ao.png
new file mode 100644 (file)
index 0000000..bcbd1d6
Binary files /dev/null and b/CubeIT/images/flags/ao.png differ
diff --git a/CubeIT/images/flags/ar.png b/CubeIT/images/flags/ar.png
new file mode 100644 (file)
index 0000000..e5ef8f1
Binary files /dev/null and b/CubeIT/images/flags/ar.png differ
diff --git a/CubeIT/images/flags/as.png b/CubeIT/images/flags/as.png
new file mode 100644 (file)
index 0000000..32f30e4
Binary files /dev/null and b/CubeIT/images/flags/as.png differ
diff --git a/CubeIT/images/flags/at.png b/CubeIT/images/flags/at.png
new file mode 100644 (file)
index 0000000..0f15f34
Binary files /dev/null and b/CubeIT/images/flags/at.png differ
diff --git a/CubeIT/images/flags/au.png b/CubeIT/images/flags/au.png
new file mode 100644 (file)
index 0000000..a01389a
Binary files /dev/null and b/CubeIT/images/flags/au.png differ
diff --git a/CubeIT/images/flags/aw.png b/CubeIT/images/flags/aw.png
new file mode 100644 (file)
index 0000000..a3579c2
Binary files /dev/null and b/CubeIT/images/flags/aw.png differ
diff --git a/CubeIT/images/flags/ax.png b/CubeIT/images/flags/ax.png
new file mode 100644 (file)
index 0000000..1eea80a
Binary files /dev/null and b/CubeIT/images/flags/ax.png differ
diff --git a/CubeIT/images/flags/az.png b/CubeIT/images/flags/az.png
new file mode 100644 (file)
index 0000000..4ee9fe5
Binary files /dev/null and b/CubeIT/images/flags/az.png differ
diff --git a/CubeIT/images/flags/ba.png b/CubeIT/images/flags/ba.png
new file mode 100644 (file)
index 0000000..c774992
Binary files /dev/null and b/CubeIT/images/flags/ba.png differ
diff --git a/CubeIT/images/flags/bb.png b/CubeIT/images/flags/bb.png
new file mode 100644 (file)
index 0000000..0df19c7
Binary files /dev/null and b/CubeIT/images/flags/bb.png differ
diff --git a/CubeIT/images/flags/bd.png b/CubeIT/images/flags/bd.png
new file mode 100644 (file)
index 0000000..076a8bf
Binary files /dev/null and b/CubeIT/images/flags/bd.png differ
diff --git a/CubeIT/images/flags/be.png b/CubeIT/images/flags/be.png
new file mode 100644 (file)
index 0000000..d86ebc8
Binary files /dev/null and b/CubeIT/images/flags/be.png differ
diff --git a/CubeIT/images/flags/bf.png b/CubeIT/images/flags/bf.png
new file mode 100644 (file)
index 0000000..ab5ce8f
Binary files /dev/null and b/CubeIT/images/flags/bf.png differ
diff --git a/CubeIT/images/flags/bg.png b/CubeIT/images/flags/bg.png
new file mode 100644 (file)
index 0000000..0469f06
Binary files /dev/null and b/CubeIT/images/flags/bg.png differ
diff --git a/CubeIT/images/flags/bh.png b/CubeIT/images/flags/bh.png
new file mode 100644 (file)
index 0000000..ea8ce68
Binary files /dev/null and b/CubeIT/images/flags/bh.png differ
diff --git a/CubeIT/images/flags/bi.png b/CubeIT/images/flags/bi.png
new file mode 100644 (file)
index 0000000..5cc2e30
Binary files /dev/null and b/CubeIT/images/flags/bi.png differ
diff --git a/CubeIT/images/flags/bj.png b/CubeIT/images/flags/bj.png
new file mode 100644 (file)
index 0000000..1cc8b45
Binary files /dev/null and b/CubeIT/images/flags/bj.png differ
diff --git a/CubeIT/images/flags/bm.png b/CubeIT/images/flags/bm.png
new file mode 100644 (file)
index 0000000..c0c7aea
Binary files /dev/null and b/CubeIT/images/flags/bm.png differ
diff --git a/CubeIT/images/flags/bn.png b/CubeIT/images/flags/bn.png
new file mode 100644 (file)
index 0000000..8fb0984
Binary files /dev/null and b/CubeIT/images/flags/bn.png differ
diff --git a/CubeIT/images/flags/bo.png b/CubeIT/images/flags/bo.png
new file mode 100644 (file)
index 0000000..ce7ba52
Binary files /dev/null and b/CubeIT/images/flags/bo.png differ
diff --git a/CubeIT/images/flags/br.png b/CubeIT/images/flags/br.png
new file mode 100644 (file)
index 0000000..9b1a553
Binary files /dev/null and b/CubeIT/images/flags/br.png differ
diff --git a/CubeIT/images/flags/bs.png b/CubeIT/images/flags/bs.png
new file mode 100644 (file)
index 0000000..639fa6c
Binary files /dev/null and b/CubeIT/images/flags/bs.png differ
diff --git a/CubeIT/images/flags/bt.png b/CubeIT/images/flags/bt.png
new file mode 100644 (file)
index 0000000..1d512df
Binary files /dev/null and b/CubeIT/images/flags/bt.png differ
diff --git a/CubeIT/images/flags/bv.png b/CubeIT/images/flags/bv.png
new file mode 100644 (file)
index 0000000..160b6b5
Binary files /dev/null and b/CubeIT/images/flags/bv.png differ
diff --git a/CubeIT/images/flags/bw.png b/CubeIT/images/flags/bw.png
new file mode 100644 (file)
index 0000000..fcb1039
Binary files /dev/null and b/CubeIT/images/flags/bw.png differ
diff --git a/CubeIT/images/flags/by.png b/CubeIT/images/flags/by.png
new file mode 100644 (file)
index 0000000..504774e
Binary files /dev/null and b/CubeIT/images/flags/by.png differ
diff --git a/CubeIT/images/flags/bz.png b/CubeIT/images/flags/bz.png
new file mode 100644 (file)
index 0000000..be63ee1
Binary files /dev/null and b/CubeIT/images/flags/bz.png differ
diff --git a/CubeIT/images/flags/ca.png b/CubeIT/images/flags/ca.png
new file mode 100644 (file)
index 0000000..1f20419
Binary files /dev/null and b/CubeIT/images/flags/ca.png differ
diff --git a/CubeIT/images/flags/catalonia.png b/CubeIT/images/flags/catalonia.png
new file mode 100644 (file)
index 0000000..5041e30
Binary files /dev/null and b/CubeIT/images/flags/catalonia.png differ
diff --git a/CubeIT/images/flags/cc.png b/CubeIT/images/flags/cc.png
new file mode 100644 (file)
index 0000000..aed3d3b
Binary files /dev/null and b/CubeIT/images/flags/cc.png differ
diff --git a/CubeIT/images/flags/cd.png b/CubeIT/images/flags/cd.png
new file mode 100644 (file)
index 0000000..5e48942
Binary files /dev/null and b/CubeIT/images/flags/cd.png differ
diff --git a/CubeIT/images/flags/cf.png b/CubeIT/images/flags/cf.png
new file mode 100644 (file)
index 0000000..da687bd
Binary files /dev/null and b/CubeIT/images/flags/cf.png differ
diff --git a/CubeIT/images/flags/cg.png b/CubeIT/images/flags/cg.png
new file mode 100644 (file)
index 0000000..a859792
Binary files /dev/null and b/CubeIT/images/flags/cg.png differ
diff --git a/CubeIT/images/flags/ch.png b/CubeIT/images/flags/ch.png
new file mode 100644 (file)
index 0000000..242ec01
Binary files /dev/null and b/CubeIT/images/flags/ch.png differ
diff --git a/CubeIT/images/flags/ci.png b/CubeIT/images/flags/ci.png
new file mode 100644 (file)
index 0000000..3f2c62e
Binary files /dev/null and b/CubeIT/images/flags/ci.png differ
diff --git a/CubeIT/images/flags/ck.png b/CubeIT/images/flags/ck.png
new file mode 100644 (file)
index 0000000..746d3d6
Binary files /dev/null and b/CubeIT/images/flags/ck.png differ
diff --git a/CubeIT/images/flags/cl.png b/CubeIT/images/flags/cl.png
new file mode 100644 (file)
index 0000000..29c6d61
Binary files /dev/null and b/CubeIT/images/flags/cl.png differ
diff --git a/CubeIT/images/flags/cm.png b/CubeIT/images/flags/cm.png
new file mode 100644 (file)
index 0000000..f65c5bd
Binary files /dev/null and b/CubeIT/images/flags/cm.png differ
diff --git a/CubeIT/images/flags/cn.png b/CubeIT/images/flags/cn.png
new file mode 100644 (file)
index 0000000..8914414
Binary files /dev/null and b/CubeIT/images/flags/cn.png differ
diff --git a/CubeIT/images/flags/co.png b/CubeIT/images/flags/co.png
new file mode 100644 (file)
index 0000000..a118ff4
Binary files /dev/null and b/CubeIT/images/flags/co.png differ
diff --git a/CubeIT/images/flags/cr.png b/CubeIT/images/flags/cr.png
new file mode 100644 (file)
index 0000000..c7a3731
Binary files /dev/null and b/CubeIT/images/flags/cr.png differ
diff --git a/CubeIT/images/flags/cs.png b/CubeIT/images/flags/cs.png
new file mode 100644 (file)
index 0000000..8254790
Binary files /dev/null and b/CubeIT/images/flags/cs.png differ
diff --git a/CubeIT/images/flags/cu.png b/CubeIT/images/flags/cu.png
new file mode 100644 (file)
index 0000000..083f1d6
Binary files /dev/null and b/CubeIT/images/flags/cu.png differ
diff --git a/CubeIT/images/flags/cv.png b/CubeIT/images/flags/cv.png
new file mode 100644 (file)
index 0000000..a63f7ea
Binary files /dev/null and b/CubeIT/images/flags/cv.png differ
diff --git a/CubeIT/images/flags/cx.png b/CubeIT/images/flags/cx.png
new file mode 100644 (file)
index 0000000..48e31ad
Binary files /dev/null and b/CubeIT/images/flags/cx.png differ
diff --git a/CubeIT/images/flags/cy.png b/CubeIT/images/flags/cy.png
new file mode 100644 (file)
index 0000000..5b1ad6c
Binary files /dev/null and b/CubeIT/images/flags/cy.png differ
diff --git a/CubeIT/images/flags/cz.png b/CubeIT/images/flags/cz.png
new file mode 100644 (file)
index 0000000..c8403dd
Binary files /dev/null and b/CubeIT/images/flags/cz.png differ
diff --git a/CubeIT/images/flags/de.png b/CubeIT/images/flags/de.png
new file mode 100644 (file)
index 0000000..ac4a977
Binary files /dev/null and b/CubeIT/images/flags/de.png differ
diff --git a/CubeIT/images/flags/dj.png b/CubeIT/images/flags/dj.png
new file mode 100644 (file)
index 0000000..582af36
Binary files /dev/null and b/CubeIT/images/flags/dj.png differ
diff --git a/CubeIT/images/flags/dk.png b/CubeIT/images/flags/dk.png
new file mode 100644 (file)
index 0000000..e2993d3
Binary files /dev/null and b/CubeIT/images/flags/dk.png differ
diff --git a/CubeIT/images/flags/dm.png b/CubeIT/images/flags/dm.png
new file mode 100644 (file)
index 0000000..5fbffcb
Binary files /dev/null and b/CubeIT/images/flags/dm.png differ
diff --git a/CubeIT/images/flags/do.png b/CubeIT/images/flags/do.png
new file mode 100644 (file)
index 0000000..5a04932
Binary files /dev/null and b/CubeIT/images/flags/do.png differ
diff --git a/CubeIT/images/flags/dz.png b/CubeIT/images/flags/dz.png
new file mode 100644 (file)
index 0000000..335c239
Binary files /dev/null and b/CubeIT/images/flags/dz.png differ
diff --git a/CubeIT/images/flags/ec.png b/CubeIT/images/flags/ec.png
new file mode 100644 (file)
index 0000000..0caa0b1
Binary files /dev/null and b/CubeIT/images/flags/ec.png differ
diff --git a/CubeIT/images/flags/ee.png b/CubeIT/images/flags/ee.png
new file mode 100644 (file)
index 0000000..0c82efb
Binary files /dev/null and b/CubeIT/images/flags/ee.png differ
diff --git a/CubeIT/images/flags/eg.png b/CubeIT/images/flags/eg.png
new file mode 100644 (file)
index 0000000..8a3f7a1
Binary files /dev/null and b/CubeIT/images/flags/eg.png differ
diff --git a/CubeIT/images/flags/eh.png b/CubeIT/images/flags/eh.png
new file mode 100644 (file)
index 0000000..90a1195
Binary files /dev/null and b/CubeIT/images/flags/eh.png differ
diff --git a/CubeIT/images/flags/england.png b/CubeIT/images/flags/england.png
new file mode 100644 (file)
index 0000000..3a7311d
Binary files /dev/null and b/CubeIT/images/flags/england.png differ
diff --git a/CubeIT/images/flags/er.png b/CubeIT/images/flags/er.png
new file mode 100644 (file)
index 0000000..13065ae
Binary files /dev/null and b/CubeIT/images/flags/er.png differ
diff --git a/CubeIT/images/flags/es.png b/CubeIT/images/flags/es.png
new file mode 100644 (file)
index 0000000..c2de2d7
Binary files /dev/null and b/CubeIT/images/flags/es.png differ
diff --git a/CubeIT/images/flags/et.png b/CubeIT/images/flags/et.png
new file mode 100644 (file)
index 0000000..2e893fa
Binary files /dev/null and b/CubeIT/images/flags/et.png differ
diff --git a/CubeIT/images/flags/europeanunion.png b/CubeIT/images/flags/europeanunion.png
new file mode 100644 (file)
index 0000000..d6d8711
Binary files /dev/null and b/CubeIT/images/flags/europeanunion.png differ
diff --git a/CubeIT/images/flags/fam.png b/CubeIT/images/flags/fam.png
new file mode 100644 (file)
index 0000000..cf50c75
Binary files /dev/null and b/CubeIT/images/flags/fam.png differ
diff --git a/CubeIT/images/flags/fi.png b/CubeIT/images/flags/fi.png
new file mode 100644 (file)
index 0000000..14ec091
Binary files /dev/null and b/CubeIT/images/flags/fi.png differ
diff --git a/CubeIT/images/flags/fj.png b/CubeIT/images/flags/fj.png
new file mode 100644 (file)
index 0000000..cee9988
Binary files /dev/null and b/CubeIT/images/flags/fj.png differ
diff --git a/CubeIT/images/flags/fk.png b/CubeIT/images/flags/fk.png
new file mode 100644 (file)
index 0000000..ceaeb27
Binary files /dev/null and b/CubeIT/images/flags/fk.png differ
diff --git a/CubeIT/images/flags/fm.png b/CubeIT/images/flags/fm.png
new file mode 100644 (file)
index 0000000..066bb24
Binary files /dev/null and b/CubeIT/images/flags/fm.png differ
diff --git a/CubeIT/images/flags/fo.png b/CubeIT/images/flags/fo.png
new file mode 100644 (file)
index 0000000..cbceb80
Binary files /dev/null and b/CubeIT/images/flags/fo.png differ
diff --git a/CubeIT/images/flags/fr.png b/CubeIT/images/flags/fr.png
new file mode 100644 (file)
index 0000000..8332c4e
Binary files /dev/null and b/CubeIT/images/flags/fr.png differ
diff --git a/CubeIT/images/flags/ga.png b/CubeIT/images/flags/ga.png
new file mode 100644 (file)
index 0000000..0e0d434
Binary files /dev/null and b/CubeIT/images/flags/ga.png differ
diff --git a/CubeIT/images/flags/gb.png b/CubeIT/images/flags/gb.png
new file mode 100644 (file)
index 0000000..ff701e1
Binary files /dev/null and b/CubeIT/images/flags/gb.png differ
diff --git a/CubeIT/images/flags/gd.png b/CubeIT/images/flags/gd.png
new file mode 100644 (file)
index 0000000..9ab57f5
Binary files /dev/null and b/CubeIT/images/flags/gd.png differ
diff --git a/CubeIT/images/flags/ge.png b/CubeIT/images/flags/ge.png
new file mode 100644 (file)
index 0000000..728d970
Binary files /dev/null and b/CubeIT/images/flags/ge.png differ
diff --git a/CubeIT/images/flags/gf.png b/CubeIT/images/flags/gf.png
new file mode 100644 (file)
index 0000000..8332c4e
Binary files /dev/null and b/CubeIT/images/flags/gf.png differ
diff --git a/CubeIT/images/flags/gh.png b/CubeIT/images/flags/gh.png
new file mode 100644 (file)
index 0000000..4e2f896
Binary files /dev/null and b/CubeIT/images/flags/gh.png differ
diff --git a/CubeIT/images/flags/gi.png b/CubeIT/images/flags/gi.png
new file mode 100644 (file)
index 0000000..e76797f
Binary files /dev/null and b/CubeIT/images/flags/gi.png differ
diff --git a/CubeIT/images/flags/gl.png b/CubeIT/images/flags/gl.png
new file mode 100644 (file)
index 0000000..ef12a73
Binary files /dev/null and b/CubeIT/images/flags/gl.png differ
diff --git a/CubeIT/images/flags/gm.png b/CubeIT/images/flags/gm.png
new file mode 100644 (file)
index 0000000..0720b66
Binary files /dev/null and b/CubeIT/images/flags/gm.png differ
diff --git a/CubeIT/images/flags/gn.png b/CubeIT/images/flags/gn.png
new file mode 100644 (file)
index 0000000..ea660b0
Binary files /dev/null and b/CubeIT/images/flags/gn.png differ
diff --git a/CubeIT/images/flags/gp.png b/CubeIT/images/flags/gp.png
new file mode 100644 (file)
index 0000000..dbb086d
Binary files /dev/null and b/CubeIT/images/flags/gp.png differ
diff --git a/CubeIT/images/flags/gq.png b/CubeIT/images/flags/gq.png
new file mode 100644 (file)
index 0000000..ebe20a2
Binary files /dev/null and b/CubeIT/images/flags/gq.png differ
diff --git a/CubeIT/images/flags/gr.png b/CubeIT/images/flags/gr.png
new file mode 100644 (file)
index 0000000..8651ade
Binary files /dev/null and b/CubeIT/images/flags/gr.png differ
diff --git a/CubeIT/images/flags/gs.png b/CubeIT/images/flags/gs.png
new file mode 100644 (file)
index 0000000..7ef0bf5
Binary files /dev/null and b/CubeIT/images/flags/gs.png differ
diff --git a/CubeIT/images/flags/gt.png b/CubeIT/images/flags/gt.png
new file mode 100644 (file)
index 0000000..c43a70d
Binary files /dev/null and b/CubeIT/images/flags/gt.png differ
diff --git a/CubeIT/images/flags/gu.png b/CubeIT/images/flags/gu.png
new file mode 100644 (file)
index 0000000..92f37c0
Binary files /dev/null and b/CubeIT/images/flags/gu.png differ
diff --git a/CubeIT/images/flags/gw.png b/CubeIT/images/flags/gw.png
new file mode 100644 (file)
index 0000000..b37bcf0
Binary files /dev/null and b/CubeIT/images/flags/gw.png differ
diff --git a/CubeIT/images/flags/gy.png b/CubeIT/images/flags/gy.png
new file mode 100644 (file)
index 0000000..22cbe2f
Binary files /dev/null and b/CubeIT/images/flags/gy.png differ
diff --git a/CubeIT/images/flags/hk.png b/CubeIT/images/flags/hk.png
new file mode 100644 (file)
index 0000000..d5c380c
Binary files /dev/null and b/CubeIT/images/flags/hk.png differ
diff --git a/CubeIT/images/flags/hm.png b/CubeIT/images/flags/hm.png
new file mode 100644 (file)
index 0000000..a01389a
Binary files /dev/null and b/CubeIT/images/flags/hm.png differ
diff --git a/CubeIT/images/flags/hn.png b/CubeIT/images/flags/hn.png
new file mode 100644 (file)
index 0000000..96f8388
Binary files /dev/null and b/CubeIT/images/flags/hn.png differ
diff --git a/CubeIT/images/flags/hr.png b/CubeIT/images/flags/hr.png
new file mode 100644 (file)
index 0000000..696b515
Binary files /dev/null and b/CubeIT/images/flags/hr.png differ
diff --git a/CubeIT/images/flags/ht.png b/CubeIT/images/flags/ht.png
new file mode 100644 (file)
index 0000000..416052a
Binary files /dev/null and b/CubeIT/images/flags/ht.png differ
diff --git a/CubeIT/images/flags/hu.png b/CubeIT/images/flags/hu.png
new file mode 100644 (file)
index 0000000..7baafe4
Binary files /dev/null and b/CubeIT/images/flags/hu.png differ
diff --git a/CubeIT/images/flags/id.png b/CubeIT/images/flags/id.png
new file mode 100644 (file)
index 0000000..c6bc0fa
Binary files /dev/null and b/CubeIT/images/flags/id.png differ
diff --git a/CubeIT/images/flags/ie.png b/CubeIT/images/flags/ie.png
new file mode 100644 (file)
index 0000000..26baa31
Binary files /dev/null and b/CubeIT/images/flags/ie.png differ
diff --git a/CubeIT/images/flags/il.png b/CubeIT/images/flags/il.png
new file mode 100644 (file)
index 0000000..2ca772d
Binary files /dev/null and b/CubeIT/images/flags/il.png differ
diff --git a/CubeIT/images/flags/in.png b/CubeIT/images/flags/in.png
new file mode 100644 (file)
index 0000000..e4d7e81
Binary files /dev/null and b/CubeIT/images/flags/in.png differ
diff --git a/CubeIT/images/flags/io.png b/CubeIT/images/flags/io.png
new file mode 100644 (file)
index 0000000..3e74b6a
Binary files /dev/null and b/CubeIT/images/flags/io.png differ
diff --git a/CubeIT/images/flags/iq.png b/CubeIT/images/flags/iq.png
new file mode 100644 (file)
index 0000000..878a351
Binary files /dev/null and b/CubeIT/images/flags/iq.png differ
diff --git a/CubeIT/images/flags/ir.png b/CubeIT/images/flags/ir.png
new file mode 100644 (file)
index 0000000..c5fd136
Binary files /dev/null and b/CubeIT/images/flags/ir.png differ
diff --git a/CubeIT/images/flags/is.png b/CubeIT/images/flags/is.png
new file mode 100644 (file)
index 0000000..b8f6d0f
Binary files /dev/null and b/CubeIT/images/flags/is.png differ
diff --git a/CubeIT/images/flags/it.png b/CubeIT/images/flags/it.png
new file mode 100644 (file)
index 0000000..89692f7
Binary files /dev/null and b/CubeIT/images/flags/it.png differ
diff --git a/CubeIT/images/flags/jm.png b/CubeIT/images/flags/jm.png
new file mode 100644 (file)
index 0000000..7be119e
Binary files /dev/null and b/CubeIT/images/flags/jm.png differ
diff --git a/CubeIT/images/flags/jo.png b/CubeIT/images/flags/jo.png
new file mode 100644 (file)
index 0000000..11bd497
Binary files /dev/null and b/CubeIT/images/flags/jo.png differ
diff --git a/CubeIT/images/flags/jp.png b/CubeIT/images/flags/jp.png
new file mode 100644 (file)
index 0000000..325fbad
Binary files /dev/null and b/CubeIT/images/flags/jp.png differ
diff --git a/CubeIT/images/flags/ke.png b/CubeIT/images/flags/ke.png
new file mode 100644 (file)
index 0000000..51879ad
Binary files /dev/null and b/CubeIT/images/flags/ke.png differ
diff --git a/CubeIT/images/flags/kg.png b/CubeIT/images/flags/kg.png
new file mode 100644 (file)
index 0000000..0a818f6
Binary files /dev/null and b/CubeIT/images/flags/kg.png differ
diff --git a/CubeIT/images/flags/kh.png b/CubeIT/images/flags/kh.png
new file mode 100644 (file)
index 0000000..30f6bb1
Binary files /dev/null and b/CubeIT/images/flags/kh.png differ
diff --git a/CubeIT/images/flags/ki.png b/CubeIT/images/flags/ki.png
new file mode 100644 (file)
index 0000000..2dcce4b
Binary files /dev/null and b/CubeIT/images/flags/ki.png differ
diff --git a/CubeIT/images/flags/km.png b/CubeIT/images/flags/km.png
new file mode 100644 (file)
index 0000000..812b2f5
Binary files /dev/null and b/CubeIT/images/flags/km.png differ
diff --git a/CubeIT/images/flags/kn.png b/CubeIT/images/flags/kn.png
new file mode 100644 (file)
index 0000000..febd5b4
Binary files /dev/null and b/CubeIT/images/flags/kn.png differ
diff --git a/CubeIT/images/flags/kp.png b/CubeIT/images/flags/kp.png
new file mode 100644 (file)
index 0000000..d3d509a
Binary files /dev/null and b/CubeIT/images/flags/kp.png differ
diff --git a/CubeIT/images/flags/kr.png b/CubeIT/images/flags/kr.png
new file mode 100644 (file)
index 0000000..9c0a78e
Binary files /dev/null and b/CubeIT/images/flags/kr.png differ
diff --git a/CubeIT/images/flags/kw.png b/CubeIT/images/flags/kw.png
new file mode 100644 (file)
index 0000000..96546da
Binary files /dev/null and b/CubeIT/images/flags/kw.png differ
diff --git a/CubeIT/images/flags/ky.png b/CubeIT/images/flags/ky.png
new file mode 100644 (file)
index 0000000..15c5f8e
Binary files /dev/null and b/CubeIT/images/flags/ky.png differ
diff --git a/CubeIT/images/flags/kz.png b/CubeIT/images/flags/kz.png
new file mode 100644 (file)
index 0000000..45a8c88
Binary files /dev/null and b/CubeIT/images/flags/kz.png differ
diff --git a/CubeIT/images/flags/la.png b/CubeIT/images/flags/la.png
new file mode 100644 (file)
index 0000000..e28acd0
Binary files /dev/null and b/CubeIT/images/flags/la.png differ
diff --git a/CubeIT/images/flags/lb.png b/CubeIT/images/flags/lb.png
new file mode 100644 (file)
index 0000000..d0d452b
Binary files /dev/null and b/CubeIT/images/flags/lb.png differ
diff --git a/CubeIT/images/flags/lc.png b/CubeIT/images/flags/lc.png
new file mode 100644 (file)
index 0000000..a47d065
Binary files /dev/null and b/CubeIT/images/flags/lc.png differ
diff --git a/CubeIT/images/flags/li.png b/CubeIT/images/flags/li.png
new file mode 100644 (file)
index 0000000..6469909
Binary files /dev/null and b/CubeIT/images/flags/li.png differ
diff --git a/CubeIT/images/flags/lk.png b/CubeIT/images/flags/lk.png
new file mode 100644 (file)
index 0000000..088aad6
Binary files /dev/null and b/CubeIT/images/flags/lk.png differ
diff --git a/CubeIT/images/flags/lr.png b/CubeIT/images/flags/lr.png
new file mode 100644 (file)
index 0000000..89a5bc7
Binary files /dev/null and b/CubeIT/images/flags/lr.png differ
diff --git a/CubeIT/images/flags/ls.png b/CubeIT/images/flags/ls.png
new file mode 100644 (file)
index 0000000..33fdef1
Binary files /dev/null and b/CubeIT/images/flags/ls.png differ
diff --git a/CubeIT/images/flags/lt.png b/CubeIT/images/flags/lt.png
new file mode 100644 (file)
index 0000000..c8ef0da
Binary files /dev/null and b/CubeIT/images/flags/lt.png differ
diff --git a/CubeIT/images/flags/lu.png b/CubeIT/images/flags/lu.png
new file mode 100644 (file)
index 0000000..4cabba9
Binary files /dev/null and b/CubeIT/images/flags/lu.png differ
diff --git a/CubeIT/images/flags/lv.png b/CubeIT/images/flags/lv.png
new file mode 100644 (file)
index 0000000..49b6998
Binary files /dev/null and b/CubeIT/images/flags/lv.png differ
diff --git a/CubeIT/images/flags/ly.png b/CubeIT/images/flags/ly.png
new file mode 100644 (file)
index 0000000..b163a9f
Binary files /dev/null and b/CubeIT/images/flags/ly.png differ
diff --git a/CubeIT/images/flags/ma.png b/CubeIT/images/flags/ma.png
new file mode 100644 (file)
index 0000000..f386770
Binary files /dev/null and b/CubeIT/images/flags/ma.png differ
diff --git a/CubeIT/images/flags/mc.png b/CubeIT/images/flags/mc.png
new file mode 100644 (file)
index 0000000..1aa830f
Binary files /dev/null and b/CubeIT/images/flags/mc.png differ
diff --git a/CubeIT/images/flags/md.png b/CubeIT/images/flags/md.png
new file mode 100644 (file)
index 0000000..4e92c18
Binary files /dev/null and b/CubeIT/images/flags/md.png differ
diff --git a/CubeIT/images/flags/me.png b/CubeIT/images/flags/me.png
new file mode 100644 (file)
index 0000000..ac72535
Binary files /dev/null and b/CubeIT/images/flags/me.png differ
diff --git a/CubeIT/images/flags/mg.png b/CubeIT/images/flags/mg.png
new file mode 100644 (file)
index 0000000..d2715b3
Binary files /dev/null and b/CubeIT/images/flags/mg.png differ
diff --git a/CubeIT/images/flags/mh.png b/CubeIT/images/flags/mh.png
new file mode 100644 (file)
index 0000000..fb523a8
Binary files /dev/null and b/CubeIT/images/flags/mh.png differ
diff --git a/CubeIT/images/flags/mk.png b/CubeIT/images/flags/mk.png
new file mode 100644 (file)
index 0000000..db173aa
Binary files /dev/null and b/CubeIT/images/flags/mk.png differ
diff --git a/CubeIT/images/flags/ml.png b/CubeIT/images/flags/ml.png
new file mode 100644 (file)
index 0000000..2cec8ba
Binary files /dev/null and b/CubeIT/images/flags/ml.png differ
diff --git a/CubeIT/images/flags/mm.png b/CubeIT/images/flags/mm.png
new file mode 100644 (file)
index 0000000..f464f67
Binary files /dev/null and b/CubeIT/images/flags/mm.png differ
diff --git a/CubeIT/images/flags/mn.png b/CubeIT/images/flags/mn.png
new file mode 100644 (file)
index 0000000..9396355
Binary files /dev/null and b/CubeIT/images/flags/mn.png differ
diff --git a/CubeIT/images/flags/mo.png b/CubeIT/images/flags/mo.png
new file mode 100644 (file)
index 0000000..deb801d
Binary files /dev/null and b/CubeIT/images/flags/mo.png differ
diff --git a/CubeIT/images/flags/mp.png b/CubeIT/images/flags/mp.png
new file mode 100644 (file)
index 0000000..298d588
Binary files /dev/null and b/CubeIT/images/flags/mp.png differ
diff --git a/CubeIT/images/flags/mq.png b/CubeIT/images/flags/mq.png
new file mode 100644 (file)
index 0000000..010143b
Binary files /dev/null and b/CubeIT/images/flags/mq.png differ
diff --git a/CubeIT/images/flags/mr.png b/CubeIT/images/flags/mr.png
new file mode 100644 (file)
index 0000000..319546b
Binary files /dev/null and b/CubeIT/images/flags/mr.png differ
diff --git a/CubeIT/images/flags/ms.png b/CubeIT/images/flags/ms.png
new file mode 100644 (file)
index 0000000..d4cbb43
Binary files /dev/null and b/CubeIT/images/flags/ms.png differ
diff --git a/CubeIT/images/flags/mt.png b/CubeIT/images/flags/mt.png
new file mode 100644 (file)
index 0000000..00af948
Binary files /dev/null and b/CubeIT/images/flags/mt.png differ
diff --git a/CubeIT/images/flags/mu.png b/CubeIT/images/flags/mu.png
new file mode 100644 (file)
index 0000000..b7fdce1
Binary files /dev/null and b/CubeIT/images/flags/mu.png differ
diff --git a/CubeIT/images/flags/mv.png b/CubeIT/images/flags/mv.png
new file mode 100644 (file)
index 0000000..5073d9e
Binary files /dev/null and b/CubeIT/images/flags/mv.png differ
diff --git a/CubeIT/images/flags/mw.png b/CubeIT/images/flags/mw.png
new file mode 100644 (file)
index 0000000..13886e9
Binary files /dev/null and b/CubeIT/images/flags/mw.png differ
diff --git a/CubeIT/images/flags/mx.png b/CubeIT/images/flags/mx.png
new file mode 100644 (file)
index 0000000..5bc58ab
Binary files /dev/null and b/CubeIT/images/flags/mx.png differ
diff --git a/CubeIT/images/flags/my.png b/CubeIT/images/flags/my.png
new file mode 100644 (file)
index 0000000..9034cba
Binary files /dev/null and b/CubeIT/images/flags/my.png differ
diff --git a/CubeIT/images/flags/mz.png b/CubeIT/images/flags/mz.png
new file mode 100644 (file)
index 0000000..76405e0
Binary files /dev/null and b/CubeIT/images/flags/mz.png differ
diff --git a/CubeIT/images/flags/na.png b/CubeIT/images/flags/na.png
new file mode 100644 (file)
index 0000000..63358c6
Binary files /dev/null and b/CubeIT/images/flags/na.png differ
diff --git a/CubeIT/images/flags/nc.png b/CubeIT/images/flags/nc.png
new file mode 100644 (file)
index 0000000..2cad283
Binary files /dev/null and b/CubeIT/images/flags/nc.png differ
diff --git a/CubeIT/images/flags/ne.png b/CubeIT/images/flags/ne.png
new file mode 100644 (file)
index 0000000..d85f424
Binary files /dev/null and b/CubeIT/images/flags/ne.png differ
diff --git a/CubeIT/images/flags/nf.png b/CubeIT/images/flags/nf.png
new file mode 100644 (file)
index 0000000..f9bcdda
Binary files /dev/null and b/CubeIT/images/flags/nf.png differ
diff --git a/CubeIT/images/flags/ng.png b/CubeIT/images/flags/ng.png
new file mode 100644 (file)
index 0000000..3eea2e0
Binary files /dev/null and b/CubeIT/images/flags/ng.png differ
diff --git a/CubeIT/images/flags/ni.png b/CubeIT/images/flags/ni.png
new file mode 100644 (file)
index 0000000..3969aaa
Binary files /dev/null and b/CubeIT/images/flags/ni.png differ
diff --git a/CubeIT/images/flags/nl.png b/CubeIT/images/flags/nl.png
new file mode 100644 (file)
index 0000000..fe44791
Binary files /dev/null and b/CubeIT/images/flags/nl.png differ
diff --git a/CubeIT/images/flags/no.png b/CubeIT/images/flags/no.png
new file mode 100644 (file)
index 0000000..160b6b5
Binary files /dev/null and b/CubeIT/images/flags/no.png differ
diff --git a/CubeIT/images/flags/np.png b/CubeIT/images/flags/np.png
new file mode 100644 (file)
index 0000000..aeb058b
Binary files /dev/null and b/CubeIT/images/flags/np.png differ
diff --git a/CubeIT/images/flags/nr.png b/CubeIT/images/flags/nr.png
new file mode 100644 (file)
index 0000000..705fc33
Binary files /dev/null and b/CubeIT/images/flags/nr.png differ
diff --git a/CubeIT/images/flags/nu.png b/CubeIT/images/flags/nu.png
new file mode 100644 (file)
index 0000000..c3ce4ae
Binary files /dev/null and b/CubeIT/images/flags/nu.png differ
diff --git a/CubeIT/images/flags/nz.png b/CubeIT/images/flags/nz.png
new file mode 100644 (file)
index 0000000..10d6306
Binary files /dev/null and b/CubeIT/images/flags/nz.png differ
diff --git a/CubeIT/images/flags/om.png b/CubeIT/images/flags/om.png
new file mode 100644 (file)
index 0000000..2ffba7e
Binary files /dev/null and b/CubeIT/images/flags/om.png differ
diff --git a/CubeIT/images/flags/pa.png b/CubeIT/images/flags/pa.png
new file mode 100644 (file)
index 0000000..9b2ee9a
Binary files /dev/null and b/CubeIT/images/flags/pa.png differ
diff --git a/CubeIT/images/flags/pe.png b/CubeIT/images/flags/pe.png
new file mode 100644 (file)
index 0000000..62a0497
Binary files /dev/null and b/CubeIT/images/flags/pe.png differ
diff --git a/CubeIT/images/flags/pf.png b/CubeIT/images/flags/pf.png
new file mode 100644 (file)
index 0000000..771a0f6
Binary files /dev/null and b/CubeIT/images/flags/pf.png differ
diff --git a/CubeIT/images/flags/pg.png b/CubeIT/images/flags/pg.png
new file mode 100644 (file)
index 0000000..10d6233
Binary files /dev/null and b/CubeIT/images/flags/pg.png differ
diff --git a/CubeIT/images/flags/ph.png b/CubeIT/images/flags/ph.png
new file mode 100644 (file)
index 0000000..b89e159
Binary files /dev/null and b/CubeIT/images/flags/ph.png differ
diff --git a/CubeIT/images/flags/pk.png b/CubeIT/images/flags/pk.png
new file mode 100644 (file)
index 0000000..e9df70c
Binary files /dev/null and b/CubeIT/images/flags/pk.png differ
diff --git a/CubeIT/images/flags/pl.png b/CubeIT/images/flags/pl.png
new file mode 100644 (file)
index 0000000..d413d01
Binary files /dev/null and b/CubeIT/images/flags/pl.png differ
diff --git a/CubeIT/images/flags/pm.png b/CubeIT/images/flags/pm.png
new file mode 100644 (file)
index 0000000..ba91d2c
Binary files /dev/null and b/CubeIT/images/flags/pm.png differ
diff --git a/CubeIT/images/flags/pn.png b/CubeIT/images/flags/pn.png
new file mode 100644 (file)
index 0000000..aa9344f
Binary files /dev/null and b/CubeIT/images/flags/pn.png differ
diff --git a/CubeIT/images/flags/pr.png b/CubeIT/images/flags/pr.png
new file mode 100644 (file)
index 0000000..82d9130
Binary files /dev/null and b/CubeIT/images/flags/pr.png differ
diff --git a/CubeIT/images/flags/ps.png b/CubeIT/images/flags/ps.png
new file mode 100644 (file)
index 0000000..f5f5477
Binary files /dev/null and b/CubeIT/images/flags/ps.png differ
diff --git a/CubeIT/images/flags/pt.png b/CubeIT/images/flags/pt.png
new file mode 100644 (file)
index 0000000..ece7980
Binary files /dev/null and b/CubeIT/images/flags/pt.png differ
diff --git a/CubeIT/images/flags/pw.png b/CubeIT/images/flags/pw.png
new file mode 100644 (file)
index 0000000..6178b25
Binary files /dev/null and b/CubeIT/images/flags/pw.png differ
diff --git a/CubeIT/images/flags/py.png b/CubeIT/images/flags/py.png
new file mode 100644 (file)
index 0000000..cb8723c
Binary files /dev/null and b/CubeIT/images/flags/py.png differ
diff --git a/CubeIT/images/flags/qa.png b/CubeIT/images/flags/qa.png
new file mode 100644 (file)
index 0000000..ed4c621
Binary files /dev/null and b/CubeIT/images/flags/qa.png differ
diff --git a/CubeIT/images/flags/re.png b/CubeIT/images/flags/re.png
new file mode 100644 (file)
index 0000000..8332c4e
Binary files /dev/null and b/CubeIT/images/flags/re.png differ
diff --git a/CubeIT/images/flags/ro.png b/CubeIT/images/flags/ro.png
new file mode 100644 (file)
index 0000000..57e74a6
Binary files /dev/null and b/CubeIT/images/flags/ro.png differ
diff --git a/CubeIT/images/flags/rs.png b/CubeIT/images/flags/rs.png
new file mode 100644 (file)
index 0000000..9439a5b
Binary files /dev/null and b/CubeIT/images/flags/rs.png differ
diff --git a/CubeIT/images/flags/ru.png b/CubeIT/images/flags/ru.png
new file mode 100644 (file)
index 0000000..47da421
Binary files /dev/null and b/CubeIT/images/flags/ru.png differ
diff --git a/CubeIT/images/flags/rw.png b/CubeIT/images/flags/rw.png
new file mode 100644 (file)
index 0000000..5356491
Binary files /dev/null and b/CubeIT/images/flags/rw.png differ
diff --git a/CubeIT/images/flags/sa.png b/CubeIT/images/flags/sa.png
new file mode 100644 (file)
index 0000000..b4641c7
Binary files /dev/null and b/CubeIT/images/flags/sa.png differ
diff --git a/CubeIT/images/flags/sb.png b/CubeIT/images/flags/sb.png
new file mode 100644 (file)
index 0000000..a9937cc
Binary files /dev/null and b/CubeIT/images/flags/sb.png differ
diff --git a/CubeIT/images/flags/sc.png b/CubeIT/images/flags/sc.png
new file mode 100644 (file)
index 0000000..39ee371
Binary files /dev/null and b/CubeIT/images/flags/sc.png differ
diff --git a/CubeIT/images/flags/scotland.png b/CubeIT/images/flags/scotland.png
new file mode 100644 (file)
index 0000000..a0e57b4
Binary files /dev/null and b/CubeIT/images/flags/scotland.png differ
diff --git a/CubeIT/images/flags/sd.png b/CubeIT/images/flags/sd.png
new file mode 100644 (file)
index 0000000..eaab69e
Binary files /dev/null and b/CubeIT/images/flags/sd.png differ
diff --git a/CubeIT/images/flags/se.png b/CubeIT/images/flags/se.png
new file mode 100644 (file)
index 0000000..1994653
Binary files /dev/null and b/CubeIT/images/flags/se.png differ
diff --git a/CubeIT/images/flags/sg.png b/CubeIT/images/flags/sg.png
new file mode 100644 (file)
index 0000000..dd34d61
Binary files /dev/null and b/CubeIT/images/flags/sg.png differ
diff --git a/CubeIT/images/flags/sh.png b/CubeIT/images/flags/sh.png
new file mode 100644 (file)
index 0000000..4b1d2a2
Binary files /dev/null and b/CubeIT/images/flags/sh.png differ
diff --git a/CubeIT/images/flags/si.png b/CubeIT/images/flags/si.png
new file mode 100644 (file)
index 0000000..bb1476f
Binary files /dev/null and b/CubeIT/images/flags/si.png differ
diff --git a/CubeIT/images/flags/sj.png b/CubeIT/images/flags/sj.png
new file mode 100644 (file)
index 0000000..160b6b5
Binary files /dev/null and b/CubeIT/images/flags/sj.png differ
diff --git a/CubeIT/images/flags/sk.png b/CubeIT/images/flags/sk.png
new file mode 100644 (file)
index 0000000..7ccbc82
Binary files /dev/null and b/CubeIT/images/flags/sk.png differ
diff --git a/CubeIT/images/flags/sl.png b/CubeIT/images/flags/sl.png
new file mode 100644 (file)
index 0000000..12d812d
Binary files /dev/null and b/CubeIT/images/flags/sl.png differ
diff --git a/CubeIT/images/flags/sm.png b/CubeIT/images/flags/sm.png
new file mode 100644 (file)
index 0000000..3df2fdc
Binary files /dev/null and b/CubeIT/images/flags/sm.png differ
diff --git a/CubeIT/images/flags/sn.png b/CubeIT/images/flags/sn.png
new file mode 100644 (file)
index 0000000..eabb71d
Binary files /dev/null and b/CubeIT/images/flags/sn.png differ
diff --git a/CubeIT/images/flags/so.png b/CubeIT/images/flags/so.png
new file mode 100644 (file)
index 0000000..4a1ea4b
Binary files /dev/null and b/CubeIT/images/flags/so.png differ
diff --git a/CubeIT/images/flags/sr.png b/CubeIT/images/flags/sr.png
new file mode 100644 (file)
index 0000000..5eff927
Binary files /dev/null and b/CubeIT/images/flags/sr.png differ
diff --git a/CubeIT/images/flags/st.png b/CubeIT/images/flags/st.png
new file mode 100644 (file)
index 0000000..2978557
Binary files /dev/null and b/CubeIT/images/flags/st.png differ
diff --git a/CubeIT/images/flags/sv.png b/CubeIT/images/flags/sv.png
new file mode 100644 (file)
index 0000000..2498799
Binary files /dev/null and b/CubeIT/images/flags/sv.png differ
diff --git a/CubeIT/images/flags/sy.png b/CubeIT/images/flags/sy.png
new file mode 100644 (file)
index 0000000..f5ce30d
Binary files /dev/null and b/CubeIT/images/flags/sy.png differ
diff --git a/CubeIT/images/flags/sz.png b/CubeIT/images/flags/sz.png
new file mode 100644 (file)
index 0000000..914ee86
Binary files /dev/null and b/CubeIT/images/flags/sz.png differ
diff --git a/CubeIT/images/flags/tc.png b/CubeIT/images/flags/tc.png
new file mode 100644 (file)
index 0000000..8fc1156
Binary files /dev/null and b/CubeIT/images/flags/tc.png differ
diff --git a/CubeIT/images/flags/td.png b/CubeIT/images/flags/td.png
new file mode 100644 (file)
index 0000000..667f21f
Binary files /dev/null and b/CubeIT/images/flags/td.png differ
diff --git a/CubeIT/images/flags/tf.png b/CubeIT/images/flags/tf.png
new file mode 100644 (file)
index 0000000..80529a4
Binary files /dev/null and b/CubeIT/images/flags/tf.png differ
diff --git a/CubeIT/images/flags/tg.png b/CubeIT/images/flags/tg.png
new file mode 100644 (file)
index 0000000..3aa00ad
Binary files /dev/null and b/CubeIT/images/flags/tg.png differ
diff --git a/CubeIT/images/flags/th.png b/CubeIT/images/flags/th.png
new file mode 100644 (file)
index 0000000..dd8ba91
Binary files /dev/null and b/CubeIT/images/flags/th.png differ
diff --git a/CubeIT/images/flags/tj.png b/CubeIT/images/flags/tj.png
new file mode 100644 (file)
index 0000000..617bf64
Binary files /dev/null and b/CubeIT/images/flags/tj.png differ
diff --git a/CubeIT/images/flags/tk.png b/CubeIT/images/flags/tk.png
new file mode 100644 (file)
index 0000000..67b8c8c
Binary files /dev/null and b/CubeIT/images/flags/tk.png differ
diff --git a/CubeIT/images/flags/tl.png b/CubeIT/images/flags/tl.png
new file mode 100644 (file)
index 0000000..77da181
Binary files /dev/null and b/CubeIT/images/flags/tl.png differ
diff --git a/CubeIT/images/flags/tm.png b/CubeIT/images/flags/tm.png
new file mode 100644 (file)
index 0000000..828020e
Binary files /dev/null and b/CubeIT/images/flags/tm.png differ
diff --git a/CubeIT/images/flags/tn.png b/CubeIT/images/flags/tn.png
new file mode 100644 (file)
index 0000000..183cdd3
Binary files /dev/null and b/CubeIT/images/flags/tn.png differ
diff --git a/CubeIT/images/flags/to.png b/CubeIT/images/flags/to.png
new file mode 100644 (file)
index 0000000..f89b8ba
Binary files /dev/null and b/CubeIT/images/flags/to.png differ
diff --git a/CubeIT/images/flags/tr.png b/CubeIT/images/flags/tr.png
new file mode 100644 (file)
index 0000000..be32f77
Binary files /dev/null and b/CubeIT/images/flags/tr.png differ
diff --git a/CubeIT/images/flags/tt.png b/CubeIT/images/flags/tt.png
new file mode 100644 (file)
index 0000000..2a11c1e
Binary files /dev/null and b/CubeIT/images/flags/tt.png differ
diff --git a/CubeIT/images/flags/tv.png b/CubeIT/images/flags/tv.png
new file mode 100644 (file)
index 0000000..28274c5
Binary files /dev/null and b/CubeIT/images/flags/tv.png differ
diff --git a/CubeIT/images/flags/tw.png b/CubeIT/images/flags/tw.png
new file mode 100644 (file)
index 0000000..f31c654
Binary files /dev/null and b/CubeIT/images/flags/tw.png differ
diff --git a/CubeIT/images/flags/tz.png b/CubeIT/images/flags/tz.png
new file mode 100644 (file)
index 0000000..c00ff79
Binary files /dev/null and b/CubeIT/images/flags/tz.png differ
diff --git a/CubeIT/images/flags/ua.png b/CubeIT/images/flags/ua.png
new file mode 100644 (file)
index 0000000..09563a2
Binary files /dev/null and b/CubeIT/images/flags/ua.png differ
diff --git a/CubeIT/images/flags/ug.png b/CubeIT/images/flags/ug.png
new file mode 100644 (file)
index 0000000..33f4aff
Binary files /dev/null and b/CubeIT/images/flags/ug.png differ
diff --git a/CubeIT/images/flags/um.png b/CubeIT/images/flags/um.png
new file mode 100644 (file)
index 0000000..c1dd965
Binary files /dev/null and b/CubeIT/images/flags/um.png differ
diff --git a/CubeIT/images/flags/us.png b/CubeIT/images/flags/us.png
new file mode 100644 (file)
index 0000000..10f451f
Binary files /dev/null and b/CubeIT/images/flags/us.png differ
diff --git a/CubeIT/images/flags/uy.png b/CubeIT/images/flags/uy.png
new file mode 100644 (file)
index 0000000..31d948a
Binary files /dev/null and b/CubeIT/images/flags/uy.png differ
diff --git a/CubeIT/images/flags/uz.png b/CubeIT/images/flags/uz.png
new file mode 100644 (file)
index 0000000..fef5dc1
Binary files /dev/null and b/CubeIT/images/flags/uz.png differ
diff --git a/CubeIT/images/flags/va.png b/CubeIT/images/flags/va.png
new file mode 100644 (file)
index 0000000..b31eaf2
Binary files /dev/null and b/CubeIT/images/flags/va.png differ
diff --git a/CubeIT/images/flags/vc.png b/CubeIT/images/flags/vc.png
new file mode 100644 (file)
index 0000000..8fa17b0
Binary files /dev/null and b/CubeIT/images/flags/vc.png differ
diff --git a/CubeIT/images/flags/ve.png b/CubeIT/images/flags/ve.png
new file mode 100644 (file)
index 0000000..00c90f9
Binary files /dev/null and b/CubeIT/images/flags/ve.png differ
diff --git a/CubeIT/images/flags/vg.png b/CubeIT/images/flags/vg.png
new file mode 100644 (file)
index 0000000..4156907
Binary files /dev/null and b/CubeIT/images/flags/vg.png differ
diff --git a/CubeIT/images/flags/vi.png b/CubeIT/images/flags/vi.png
new file mode 100644 (file)
index 0000000..ed26915
Binary files /dev/null and b/CubeIT/images/flags/vi.png differ
diff --git a/CubeIT/images/flags/vn.png b/CubeIT/images/flags/vn.png
new file mode 100644 (file)
index 0000000..ec7cd48
Binary files /dev/null and b/CubeIT/images/flags/vn.png differ
diff --git a/CubeIT/images/flags/vu.png b/CubeIT/images/flags/vu.png
new file mode 100644 (file)
index 0000000..b3397bc
Binary files /dev/null and b/CubeIT/images/flags/vu.png differ
diff --git a/CubeIT/images/flags/wales.png b/CubeIT/images/flags/wales.png
new file mode 100644 (file)
index 0000000..e0d7cee
Binary files /dev/null and b/CubeIT/images/flags/wales.png differ
diff --git a/CubeIT/images/flags/wf.png b/CubeIT/images/flags/wf.png
new file mode 100644 (file)
index 0000000..9f95587
Binary files /dev/null and b/CubeIT/images/flags/wf.png differ
diff --git a/CubeIT/images/flags/ws.png b/CubeIT/images/flags/ws.png
new file mode 100644 (file)
index 0000000..c169508
Binary files /dev/null and b/CubeIT/images/flags/ws.png differ
diff --git a/CubeIT/images/flags/ye.png b/CubeIT/images/flags/ye.png
new file mode 100644 (file)
index 0000000..468dfad
Binary files /dev/null and b/CubeIT/images/flags/ye.png differ
diff --git a/CubeIT/images/flags/yt.png b/CubeIT/images/flags/yt.png
new file mode 100644 (file)
index 0000000..c298f37
Binary files /dev/null and b/CubeIT/images/flags/yt.png differ
diff --git a/CubeIT/images/flags/za.png b/CubeIT/images/flags/za.png
new file mode 100644 (file)
index 0000000..57c58e2
Binary files /dev/null and b/CubeIT/images/flags/za.png differ
diff --git a/CubeIT/images/flags/zm.png b/CubeIT/images/flags/zm.png
new file mode 100644 (file)
index 0000000..c25b07b
Binary files /dev/null and b/CubeIT/images/flags/zm.png differ
diff --git a/CubeIT/images/flags/zw.png b/CubeIT/images/flags/zw.png
new file mode 100644 (file)
index 0000000..53c9725
Binary files /dev/null and b/CubeIT/images/flags/zw.png differ
diff --git a/CubeIT/images/loader.gif b/CubeIT/images/loader.gif
new file mode 100644 (file)
index 0000000..70bdc92
Binary files /dev/null and b/CubeIT/images/loader.gif differ
diff --git a/CubeIT/images/markitup/bold.png b/CubeIT/images/markitup/bold.png
new file mode 100644 (file)
index 0000000..889ae80
Binary files /dev/null and b/CubeIT/images/markitup/bold.png differ
diff --git a/CubeIT/images/markitup/br.png b/CubeIT/images/markitup/br.png
new file mode 100644 (file)
index 0000000..a38e210
Binary files /dev/null and b/CubeIT/images/markitup/br.png differ
diff --git a/CubeIT/images/markitup/code.png b/CubeIT/images/markitup/code.png
new file mode 100644 (file)
index 0000000..63fe6ce
Binary files /dev/null and b/CubeIT/images/markitup/code.png differ
diff --git a/CubeIT/images/markitup/file.png b/CubeIT/images/markitup/file.png
new file mode 100644 (file)
index 0000000..312eab0
Binary files /dev/null and b/CubeIT/images/markitup/file.png differ
diff --git a/CubeIT/images/markitup/h1.png b/CubeIT/images/markitup/h1.png
new file mode 100644 (file)
index 0000000..9c122e9
Binary files /dev/null and b/CubeIT/images/markitup/h1.png differ
diff --git a/CubeIT/images/markitup/h2.png b/CubeIT/images/markitup/h2.png
new file mode 100644 (file)
index 0000000..fbd8765
Binary files /dev/null and b/CubeIT/images/markitup/h2.png differ
diff --git a/CubeIT/images/markitup/h3.png b/CubeIT/images/markitup/h3.png
new file mode 100644 (file)
index 0000000..c7836cf
Binary files /dev/null and b/CubeIT/images/markitup/h3.png differ
diff --git a/CubeIT/images/markitup/h4.png b/CubeIT/images/markitup/h4.png
new file mode 100644 (file)
index 0000000..4e929ea
Binary files /dev/null and b/CubeIT/images/markitup/h4.png differ
diff --git a/CubeIT/images/markitup/h5.png b/CubeIT/images/markitup/h5.png
new file mode 100644 (file)
index 0000000..30cabeb
Binary files /dev/null and b/CubeIT/images/markitup/h5.png differ
diff --git a/CubeIT/images/markitup/h6.png b/CubeIT/images/markitup/h6.png
new file mode 100644 (file)
index 0000000..058170a
Binary files /dev/null and b/CubeIT/images/markitup/h6.png differ
diff --git a/CubeIT/images/markitup/html.png b/CubeIT/images/markitup/html.png
new file mode 100644 (file)
index 0000000..55d1072
Binary files /dev/null and b/CubeIT/images/markitup/html.png differ
diff --git a/CubeIT/images/markitup/italic.png b/CubeIT/images/markitup/italic.png
new file mode 100644 (file)
index 0000000..8482ac8
Binary files /dev/null and b/CubeIT/images/markitup/italic.png differ
diff --git a/CubeIT/images/markitup/link.png b/CubeIT/images/markitup/link.png
new file mode 100644 (file)
index 0000000..25eacb7
Binary files /dev/null and b/CubeIT/images/markitup/link.png differ
diff --git a/CubeIT/images/markitup/list-bullet.png b/CubeIT/images/markitup/list-bullet.png
new file mode 100644 (file)
index 0000000..4a8672b
Binary files /dev/null and b/CubeIT/images/markitup/list-bullet.png differ
diff --git a/CubeIT/images/markitup/list-numeric.png b/CubeIT/images/markitup/list-numeric.png
new file mode 100644 (file)
index 0000000..33b0b8d
Binary files /dev/null and b/CubeIT/images/markitup/list-numeric.png differ
diff --git a/CubeIT/images/markitup/picture.png b/CubeIT/images/markitup/picture.png
new file mode 100644 (file)
index 0000000..4a158fe
Binary files /dev/null and b/CubeIT/images/markitup/picture.png differ
diff --git a/CubeIT/images/markitup/preview.png b/CubeIT/images/markitup/preview.png
new file mode 100644 (file)
index 0000000..a9925a0
Binary files /dev/null and b/CubeIT/images/markitup/preview.png differ
diff --git a/CubeIT/images/markitup/quotes.png b/CubeIT/images/markitup/quotes.png
new file mode 100644 (file)
index 0000000..e54ebeb
Binary files /dev/null and b/CubeIT/images/markitup/quotes.png differ
diff --git a/CubeIT/images/markitup/slideshow.png b/CubeIT/images/markitup/slideshow.png
new file mode 100644 (file)
index 0000000..d9591c1
Binary files /dev/null and b/CubeIT/images/markitup/slideshow.png differ
diff --git a/CubeIT/images/markitup/stroke.png b/CubeIT/images/markitup/stroke.png
new file mode 100644 (file)
index 0000000..612058a
Binary files /dev/null and b/CubeIT/images/markitup/stroke.png differ
diff --git a/CubeIT/images/markitup/underline.png b/CubeIT/images/markitup/underline.png
new file mode 100644 (file)
index 0000000..8edb6f8
Binary files /dev/null and b/CubeIT/images/markitup/underline.png differ
diff --git a/CubeIT/images/markitup/url.png b/CubeIT/images/markitup/url.png
new file mode 100644 (file)
index 0000000..b8edc12
Binary files /dev/null and b/CubeIT/images/markitup/url.png differ
diff --git a/CubeIT/images/markitup/webvideo.png b/CubeIT/images/markitup/webvideo.png
new file mode 100644 (file)
index 0000000..b0ce7bb
Binary files /dev/null and b/CubeIT/images/markitup/webvideo.png differ
diff --git a/CubeIT/images/online-offline.png b/CubeIT/images/online-offline.png
new file mode 100644 (file)
index 0000000..36d1b56
Binary files /dev/null and b/CubeIT/images/online-offline.png differ
diff --git a/CubeIT/images/silk/accept.png b/CubeIT/images/silk/accept.png
new file mode 100644 (file)
index 0000000..89c8129
Binary files /dev/null and b/CubeIT/images/silk/accept.png differ
diff --git a/CubeIT/images/silk/add.png b/CubeIT/images/silk/add.png
new file mode 100644 (file)
index 0000000..6332fef
Binary files /dev/null and b/CubeIT/images/silk/add.png differ
diff --git a/CubeIT/images/silk/anchor.png b/CubeIT/images/silk/anchor.png
new file mode 100644 (file)
index 0000000..9b3422c
Binary files /dev/null and b/CubeIT/images/silk/anchor.png differ
diff --git a/CubeIT/images/silk/application.png b/CubeIT/images/silk/application.png
new file mode 100644 (file)
index 0000000..1dee9e3
Binary files /dev/null and b/CubeIT/images/silk/application.png differ
diff --git a/CubeIT/images/silk/application_add.png b/CubeIT/images/silk/application_add.png
new file mode 100644 (file)
index 0000000..2e94507
Binary files /dev/null and b/CubeIT/images/silk/application_add.png differ
diff --git a/CubeIT/images/silk/application_cascade.png b/CubeIT/images/silk/application_cascade.png
new file mode 100644 (file)
index 0000000..da5c622
Binary files /dev/null and b/CubeIT/images/silk/application_cascade.png differ
diff --git a/CubeIT/images/silk/application_delete.png b/CubeIT/images/silk/application_delete.png
new file mode 100644 (file)
index 0000000..0a335ac
Binary files /dev/null and b/CubeIT/images/silk/application_delete.png differ
diff --git a/CubeIT/images/silk/application_double.png b/CubeIT/images/silk/application_double.png
new file mode 100644 (file)
index 0000000..647592f
Binary files /dev/null and b/CubeIT/images/silk/application_double.png differ
diff --git a/CubeIT/images/silk/application_edit.png b/CubeIT/images/silk/application_edit.png
new file mode 100644 (file)
index 0000000..fb2efb8
Binary files /dev/null and b/CubeIT/images/silk/application_edit.png differ
diff --git a/CubeIT/images/silk/application_error.png b/CubeIT/images/silk/application_error.png
new file mode 100644 (file)
index 0000000..b35fa57
Binary files /dev/null and b/CubeIT/images/silk/application_error.png differ
diff --git a/CubeIT/images/silk/application_form.png b/CubeIT/images/silk/application_form.png
new file mode 100644 (file)
index 0000000..807b862
Binary files /dev/null and b/CubeIT/images/silk/application_form.png differ
diff --git a/CubeIT/images/silk/application_form_add.png b/CubeIT/images/silk/application_form_add.png
new file mode 100644 (file)
index 0000000..28c2175
Binary files /dev/null and b/CubeIT/images/silk/application_form_add.png differ
diff --git a/CubeIT/images/silk/application_form_delete.png b/CubeIT/images/silk/application_form_delete.png
new file mode 100644 (file)
index 0000000..cd305ec
Binary files /dev/null and b/CubeIT/images/silk/application_form_delete.png differ
diff --git a/CubeIT/images/silk/application_form_edit.png b/CubeIT/images/silk/application_form_edit.png
new file mode 100644 (file)
index 0000000..af486c9
Binary files /dev/null and b/CubeIT/images/silk/application_form_edit.png differ
diff --git a/CubeIT/images/silk/application_form_magnify.png b/CubeIT/images/silk/application_form_magnify.png
new file mode 100644 (file)
index 0000000..7b7fbd1
Binary files /dev/null and b/CubeIT/images/silk/application_form_magnify.png differ
diff --git a/CubeIT/images/silk/application_get.png b/CubeIT/images/silk/application_get.png
new file mode 100644 (file)
index 0000000..28e41ea
Binary files /dev/null and b/CubeIT/images/silk/application_get.png differ
diff --git a/CubeIT/images/silk/application_go.png b/CubeIT/images/silk/application_go.png
new file mode 100644 (file)
index 0000000..5cc2b0d
Binary files /dev/null and b/CubeIT/images/silk/application_go.png differ
diff --git a/CubeIT/images/silk/application_home.png b/CubeIT/images/silk/application_home.png
new file mode 100644 (file)
index 0000000..b60d0c8
Binary files /dev/null and b/CubeIT/images/silk/application_home.png differ
diff --git a/CubeIT/images/silk/application_key.png b/CubeIT/images/silk/application_key.png
new file mode 100644 (file)
index 0000000..998d65c
Binary files /dev/null and b/CubeIT/images/silk/application_key.png differ
diff --git a/CubeIT/images/silk/application_lightning.png b/CubeIT/images/silk/application_lightning.png
new file mode 100644 (file)
index 0000000..7e91545
Binary files /dev/null and b/CubeIT/images/silk/application_lightning.png differ
diff --git a/CubeIT/images/silk/application_link.png b/CubeIT/images/silk/application_link.png
new file mode 100644 (file)
index 0000000..f8fbb3e
Binary files /dev/null and b/CubeIT/images/silk/application_link.png differ
diff --git a/CubeIT/images/silk/application_osx.png b/CubeIT/images/silk/application_osx.png
new file mode 100644 (file)
index 0000000..9f022ec
Binary files /dev/null and b/CubeIT/images/silk/application_osx.png differ
diff --git a/CubeIT/images/silk/application_osx_terminal.png b/CubeIT/images/silk/application_osx_terminal.png
new file mode 100644 (file)
index 0000000..b3d8ce0
Binary files /dev/null and b/CubeIT/images/silk/application_osx_terminal.png differ
diff --git a/CubeIT/images/silk/application_put.png b/CubeIT/images/silk/application_put.png
new file mode 100644 (file)
index 0000000..c30cf59
Binary files /dev/null and b/CubeIT/images/silk/application_put.png differ
diff --git a/CubeIT/images/silk/application_side_boxes.png b/CubeIT/images/silk/application_side_boxes.png
new file mode 100644 (file)
index 0000000..efbf3c4
Binary files /dev/null and b/CubeIT/images/silk/application_side_boxes.png differ
diff --git a/CubeIT/images/silk/application_side_contract.png b/CubeIT/images/silk/application_side_contract.png
new file mode 100644 (file)
index 0000000..3585f94
Binary files /dev/null and b/CubeIT/images/silk/application_side_contract.png differ
diff --git a/CubeIT/images/silk/application_side_expand.png b/CubeIT/images/silk/application_side_expand.png
new file mode 100644 (file)
index 0000000..030cf7c
Binary files /dev/null and b/CubeIT/images/silk/application_side_expand.png differ
diff --git a/CubeIT/images/silk/application_side_list.png b/CubeIT/images/silk/application_side_list.png
new file mode 100644 (file)
index 0000000..248eaf1
Binary files /dev/null and b/CubeIT/images/silk/application_side_list.png differ
diff --git a/CubeIT/images/silk/application_side_tree.png b/CubeIT/images/silk/application_side_tree.png
new file mode 100644 (file)
index 0000000..f04a52b
Binary files /dev/null and b/CubeIT/images/silk/application_side_tree.png differ
diff --git a/CubeIT/images/silk/application_split.png b/CubeIT/images/silk/application_split.png
new file mode 100644 (file)
index 0000000..a91c78a
Binary files /dev/null and b/CubeIT/images/silk/application_split.png differ
diff --git a/CubeIT/images/silk/application_tile_horizontal.png b/CubeIT/images/silk/application_tile_horizontal.png
new file mode 100644 (file)
index 0000000..8a1191c
Binary files /dev/null and b/CubeIT/images/silk/application_tile_horizontal.png differ
diff --git a/CubeIT/images/silk/application_tile_vertical.png b/CubeIT/images/silk/application_tile_vertical.png
new file mode 100644 (file)
index 0000000..1d40383
Binary files /dev/null and b/CubeIT/images/silk/application_tile_vertical.png differ
diff --git a/CubeIT/images/silk/application_view_columns.png b/CubeIT/images/silk/application_view_columns.png
new file mode 100644 (file)
index 0000000..dc2e9d5
Binary files /dev/null and b/CubeIT/images/silk/application_view_columns.png differ
diff --git a/CubeIT/images/silk/application_view_detail.png b/CubeIT/images/silk/application_view_detail.png
new file mode 100644 (file)
index 0000000..aba044b
Binary files /dev/null and b/CubeIT/images/silk/application_view_detail.png differ
diff --git a/CubeIT/images/silk/application_view_gallery.png b/CubeIT/images/silk/application_view_gallery.png
new file mode 100644 (file)
index 0000000..851950d
Binary files /dev/null and b/CubeIT/images/silk/application_view_gallery.png differ
diff --git a/CubeIT/images/silk/application_view_icons.png b/CubeIT/images/silk/application_view_icons.png
new file mode 100644 (file)
index 0000000..6a93cda
Binary files /dev/null and b/CubeIT/images/silk/application_view_icons.png differ
diff --git a/CubeIT/images/silk/application_view_list.png b/CubeIT/images/silk/application_view_list.png
new file mode 100644 (file)
index 0000000..acc30b8
Binary files /dev/null and b/CubeIT/images/silk/application_view_list.png differ
diff --git a/CubeIT/images/silk/application_view_tile.png b/CubeIT/images/silk/application_view_tile.png
new file mode 100644 (file)
index 0000000..3bc0bd3
Binary files /dev/null and b/CubeIT/images/silk/application_view_tile.png differ
diff --git a/CubeIT/images/silk/application_xp.png b/CubeIT/images/silk/application_xp.png
new file mode 100644 (file)
index 0000000..d22860a
Binary files /dev/null and b/CubeIT/images/silk/application_xp.png differ
diff --git a/CubeIT/images/silk/application_xp_terminal.png b/CubeIT/images/silk/application_xp_terminal.png
new file mode 100644 (file)
index 0000000..c28dd63
Binary files /dev/null and b/CubeIT/images/silk/application_xp_terminal.png differ
diff --git a/CubeIT/images/silk/arrow_branch.png b/CubeIT/images/silk/arrow_branch.png
new file mode 100644 (file)
index 0000000..7542db1
Binary files /dev/null and b/CubeIT/images/silk/arrow_branch.png differ
diff --git a/CubeIT/images/silk/arrow_divide.png b/CubeIT/images/silk/arrow_divide.png
new file mode 100644 (file)
index 0000000..61a7b1d
Binary files /dev/null and b/CubeIT/images/silk/arrow_divide.png differ
diff --git a/CubeIT/images/silk/arrow_down.png b/CubeIT/images/silk/arrow_down.png
new file mode 100644 (file)
index 0000000..2c4e279
Binary files /dev/null and b/CubeIT/images/silk/arrow_down.png differ
diff --git a/CubeIT/images/silk/arrow_in.png b/CubeIT/images/silk/arrow_in.png
new file mode 100644 (file)
index 0000000..745c651
Binary files /dev/null and b/CubeIT/images/silk/arrow_in.png differ
diff --git a/CubeIT/images/silk/arrow_inout.png b/CubeIT/images/silk/arrow_inout.png
new file mode 100644 (file)
index 0000000..1b76367
Binary files /dev/null and b/CubeIT/images/silk/arrow_inout.png differ
diff --git a/CubeIT/images/silk/arrow_join.png b/CubeIT/images/silk/arrow_join.png
new file mode 100644 (file)
index 0000000..a128413
Binary files /dev/null and b/CubeIT/images/silk/arrow_join.png differ
diff --git a/CubeIT/images/silk/arrow_left.png b/CubeIT/images/silk/arrow_left.png
new file mode 100644 (file)
index 0000000..5dc6967
Binary files /dev/null and b/CubeIT/images/silk/arrow_left.png differ
diff --git a/CubeIT/images/silk/arrow_merge.png b/CubeIT/images/silk/arrow_merge.png
new file mode 100644 (file)
index 0000000..7502dbb
Binary files /dev/null and b/CubeIT/images/silk/arrow_merge.png differ
diff --git a/CubeIT/images/silk/arrow_out.png b/CubeIT/images/silk/arrow_out.png
new file mode 100644 (file)
index 0000000..2e9bc42
Binary files /dev/null and b/CubeIT/images/silk/arrow_out.png differ
diff --git a/CubeIT/images/silk/arrow_redo.png b/CubeIT/images/silk/arrow_redo.png
new file mode 100644 (file)
index 0000000..fdc394c
Binary files /dev/null and b/CubeIT/images/silk/arrow_redo.png differ
diff --git a/CubeIT/images/silk/arrow_refresh.png b/CubeIT/images/silk/arrow_refresh.png
new file mode 100644 (file)
index 0000000..0de2656
Binary files /dev/null and b/CubeIT/images/silk/arrow_refresh.png differ
diff --git a/CubeIT/images/silk/arrow_refresh_small.png b/CubeIT/images/silk/arrow_refresh_small.png
new file mode 100644 (file)
index 0000000..d3087df
Binary files /dev/null and b/CubeIT/images/silk/arrow_refresh_small.png differ
diff --git a/CubeIT/images/silk/arrow_right.png b/CubeIT/images/silk/arrow_right.png
new file mode 100644 (file)
index 0000000..b1a1819
Binary files /dev/null and b/CubeIT/images/silk/arrow_right.png differ
diff --git a/CubeIT/images/silk/arrow_rotate_anticlockwise.png b/CubeIT/images/silk/arrow_rotate_anticlockwise.png
new file mode 100644 (file)
index 0000000..46c75aa
Binary files /dev/null and b/CubeIT/images/silk/arrow_rotate_anticlockwise.png differ
diff --git a/CubeIT/images/silk/arrow_rotate_clockwise.png b/CubeIT/images/silk/arrow_rotate_clockwise.png
new file mode 100644 (file)
index 0000000..aa65210
Binary files /dev/null and b/CubeIT/images/silk/arrow_rotate_clockwise.png differ
diff --git a/CubeIT/images/silk/arrow_switch.png b/CubeIT/images/silk/arrow_switch.png
new file mode 100644 (file)
index 0000000..258c16c
Binary files /dev/null and b/CubeIT/images/silk/arrow_switch.png differ
diff --git a/CubeIT/images/silk/arrow_turn_left.png b/CubeIT/images/silk/arrow_turn_left.png
new file mode 100644 (file)
index 0000000..a3d6c9e
Binary files /dev/null and b/CubeIT/images/silk/arrow_turn_left.png differ
diff --git a/CubeIT/images/silk/arrow_turn_right.png b/CubeIT/images/silk/arrow_turn_right.png
new file mode 100644 (file)
index 0000000..629f20d
Binary files /dev/null and b/CubeIT/images/silk/arrow_turn_right.png differ
diff --git a/CubeIT/images/silk/arrow_undo.png b/CubeIT/images/silk/arrow_undo.png
new file mode 100644 (file)
index 0000000..6972c5e
Binary files /dev/null and b/CubeIT/images/silk/arrow_undo.png differ
diff --git a/CubeIT/images/silk/arrow_up.png b/CubeIT/images/silk/arrow_up.png
new file mode 100644 (file)
index 0000000..1ebb193
Binary files /dev/null and b/CubeIT/images/silk/arrow_up.png differ
diff --git a/CubeIT/images/silk/asterisk_orange.png b/CubeIT/images/silk/asterisk_orange.png
new file mode 100644 (file)
index 0000000..1ebebde
Binary files /dev/null and b/CubeIT/images/silk/asterisk_orange.png differ
diff --git a/CubeIT/images/silk/asterisk_yellow.png b/CubeIT/images/silk/asterisk_yellow.png
new file mode 100644 (file)
index 0000000..bab7cc9
Binary files /dev/null and b/CubeIT/images/silk/asterisk_yellow.png differ
diff --git a/CubeIT/images/silk/attach.png b/CubeIT/images/silk/attach.png
new file mode 100644 (file)
index 0000000..ea897cc
Binary files /dev/null and b/CubeIT/images/silk/attach.png differ
diff --git a/CubeIT/images/silk/award_star_add.png b/CubeIT/images/silk/award_star_add.png
new file mode 100644 (file)
index 0000000..9c4be9b
Binary files /dev/null and b/CubeIT/images/silk/award_star_add.png differ
diff --git a/CubeIT/images/silk/award_star_bronze_1.png b/CubeIT/images/silk/award_star_bronze_1.png
new file mode 100644 (file)
index 0000000..658c711
Binary files /dev/null and b/CubeIT/images/silk/award_star_bronze_1.png differ
diff --git a/CubeIT/images/silk/award_star_bronze_2.png b/CubeIT/images/silk/award_star_bronze_2.png
new file mode 100644 (file)
index 0000000..e47babd
Binary files /dev/null and b/CubeIT/images/silk/award_star_bronze_2.png differ
diff --git a/CubeIT/images/silk/award_star_bronze_3.png b/CubeIT/images/silk/award_star_bronze_3.png
new file mode 100644 (file)
index 0000000..396e4b3
Binary files /dev/null and b/CubeIT/images/silk/award_star_bronze_3.png differ
diff --git a/CubeIT/images/silk/award_star_delete.png b/CubeIT/images/silk/award_star_delete.png
new file mode 100644 (file)
index 0000000..4721b15
Binary files /dev/null and b/CubeIT/images/silk/award_star_delete.png differ
diff --git a/CubeIT/images/silk/award_star_gold_1.png b/CubeIT/images/silk/award_star_gold_1.png
new file mode 100644 (file)
index 0000000..97a22b7
Binary files /dev/null and b/CubeIT/images/silk/award_star_gold_1.png differ
diff --git a/CubeIT/images/silk/award_star_gold_2.png b/CubeIT/images/silk/award_star_gold_2.png
new file mode 100644 (file)
index 0000000..0eaa571
Binary files /dev/null and b/CubeIT/images/silk/award_star_gold_2.png differ
diff --git a/CubeIT/images/silk/award_star_gold_3.png b/CubeIT/images/silk/award_star_gold_3.png
new file mode 100644 (file)
index 0000000..124c991
Binary files /dev/null and b/CubeIT/images/silk/award_star_gold_3.png differ
diff --git a/CubeIT/images/silk/award_star_silver_1.png b/CubeIT/images/silk/award_star_silver_1.png
new file mode 100644 (file)
index 0000000..028a546
Binary files /dev/null and b/CubeIT/images/silk/award_star_silver_1.png differ
diff --git a/CubeIT/images/silk/award_star_silver_2.png b/CubeIT/images/silk/award_star_silver_2.png
new file mode 100644 (file)
index 0000000..e487c3a
Binary files /dev/null and b/CubeIT/images/silk/award_star_silver_2.png differ
diff --git a/CubeIT/images/silk/award_star_silver_3.png b/CubeIT/images/silk/award_star_silver_3.png
new file mode 100644 (file)
index 0000000..1d72d47
Binary files /dev/null and b/CubeIT/images/silk/award_star_silver_3.png differ
diff --git a/CubeIT/images/silk/basket.png b/CubeIT/images/silk/basket.png
new file mode 100644 (file)
index 0000000..b0686d7
Binary files /dev/null and b/CubeIT/images/silk/basket.png differ
diff --git a/CubeIT/images/silk/basket_add.png b/CubeIT/images/silk/basket_add.png
new file mode 100644 (file)
index 0000000..3554368
Binary files /dev/null and b/CubeIT/images/silk/basket_add.png differ
diff --git a/CubeIT/images/silk/basket_delete.png b/CubeIT/images/silk/basket_delete.png
new file mode 100644 (file)
index 0000000..1349974
Binary files /dev/null and b/CubeIT/images/silk/basket_delete.png differ
diff --git a/CubeIT/images/silk/basket_edit.png b/CubeIT/images/silk/basket_edit.png
new file mode 100644 (file)
index 0000000..8138bbd
Binary files /dev/null and b/CubeIT/images/silk/basket_edit.png differ
diff --git a/CubeIT/images/silk/basket_error.png b/CubeIT/images/silk/basket_error.png
new file mode 100644 (file)
index 0000000..3978b29
Binary files /dev/null and b/CubeIT/images/silk/basket_error.png differ
diff --git a/CubeIT/images/silk/basket_go.png b/CubeIT/images/silk/basket_go.png
new file mode 100644 (file)
index 0000000..ed8b9a5
Binary files /dev/null and b/CubeIT/images/silk/basket_go.png differ
diff --git a/CubeIT/images/silk/basket_put.png b/CubeIT/images/silk/basket_put.png
new file mode 100644 (file)
index 0000000..be62faa
Binary files /dev/null and b/CubeIT/images/silk/basket_put.png differ
diff --git a/CubeIT/images/silk/basket_remove.png b/CubeIT/images/silk/basket_remove.png
new file mode 100644 (file)
index 0000000..04dd7fd
Binary files /dev/null and b/CubeIT/images/silk/basket_remove.png differ
diff --git a/CubeIT/images/silk/bell.png b/CubeIT/images/silk/bell.png
new file mode 100644 (file)
index 0000000..6e0015d
Binary files /dev/null and b/CubeIT/images/silk/bell.png differ
diff --git a/CubeIT/images/silk/bell_add.png b/CubeIT/images/silk/bell_add.png
new file mode 100644 (file)
index 0000000..7db01d6
Binary files /dev/null and b/CubeIT/images/silk/bell_add.png differ
diff --git a/CubeIT/images/silk/bell_delete.png b/CubeIT/images/silk/bell_delete.png
new file mode 100644 (file)
index 0000000..23907bb
Binary files /dev/null and b/CubeIT/images/silk/bell_delete.png differ
diff --git a/CubeIT/images/silk/bell_error.png b/CubeIT/images/silk/bell_error.png
new file mode 100644 (file)
index 0000000..a0ddc00
Binary files /dev/null and b/CubeIT/images/silk/bell_error.png differ
diff --git a/CubeIT/images/silk/bell_go.png b/CubeIT/images/silk/bell_go.png
new file mode 100644 (file)
index 0000000..b89bb34
Binary files /dev/null and b/CubeIT/images/silk/bell_go.png differ
diff --git a/CubeIT/images/silk/bell_link.png b/CubeIT/images/silk/bell_link.png
new file mode 100644 (file)
index 0000000..b8c64af
Binary files /dev/null and b/CubeIT/images/silk/bell_link.png differ
diff --git a/CubeIT/images/silk/bin.png b/CubeIT/images/silk/bin.png
new file mode 100644 (file)
index 0000000..ebad933
Binary files /dev/null and b/CubeIT/images/silk/bin.png differ
diff --git a/CubeIT/images/silk/bin_closed.png b/CubeIT/images/silk/bin_closed.png
new file mode 100644 (file)
index 0000000..afe22ba
Binary files /dev/null and b/CubeIT/images/silk/bin_closed.png differ
diff --git a/CubeIT/images/silk/bin_empty.png b/CubeIT/images/silk/bin_empty.png
new file mode 100644 (file)
index 0000000..375b8bf
Binary files /dev/null and b/CubeIT/images/silk/bin_empty.png differ
diff --git a/CubeIT/images/silk/bomb.png b/CubeIT/images/silk/bomb.png
new file mode 100644 (file)
index 0000000..1be3797
Binary files /dev/null and b/CubeIT/images/silk/bomb.png differ
diff --git a/CubeIT/images/silk/book.png b/CubeIT/images/silk/book.png
new file mode 100644 (file)
index 0000000..b0f4dd7
Binary files /dev/null and b/CubeIT/images/silk/book.png differ
diff --git a/CubeIT/images/silk/book_add.png b/CubeIT/images/silk/book_add.png
new file mode 100644 (file)
index 0000000..e2f0847
Binary files /dev/null and b/CubeIT/images/silk/book_add.png differ
diff --git a/CubeIT/images/silk/book_addresses.png b/CubeIT/images/silk/book_addresses.png
new file mode 100644 (file)
index 0000000..b73419b
Binary files /dev/null and b/CubeIT/images/silk/book_addresses.png differ
diff --git a/CubeIT/images/silk/book_delete.png b/CubeIT/images/silk/book_delete.png
new file mode 100644 (file)
index 0000000..d9a6340
Binary files /dev/null and b/CubeIT/images/silk/book_delete.png differ
diff --git a/CubeIT/images/silk/book_edit.png b/CubeIT/images/silk/book_edit.png
new file mode 100644 (file)
index 0000000..6e756cc
Binary files /dev/null and b/CubeIT/images/silk/book_edit.png differ
diff --git a/CubeIT/images/silk/book_error.png b/CubeIT/images/silk/book_error.png
new file mode 100644 (file)
index 0000000..f3fbed0
Binary files /dev/null and b/CubeIT/images/silk/book_error.png differ
diff --git a/CubeIT/images/silk/book_go.png b/CubeIT/images/silk/book_go.png
new file mode 100644 (file)
index 0000000..cd4e196
Binary files /dev/null and b/CubeIT/images/silk/book_go.png differ
diff --git a/CubeIT/images/silk/book_key.png b/CubeIT/images/silk/book_key.png
new file mode 100644 (file)
index 0000000..d8e23ec
Binary files /dev/null and b/CubeIT/images/silk/book_key.png differ
diff --git a/CubeIT/images/silk/book_link.png b/CubeIT/images/silk/book_link.png
new file mode 100644 (file)
index 0000000..dd0820e
Binary files /dev/null and b/CubeIT/images/silk/book_link.png differ
diff --git a/CubeIT/images/silk/book_next.png b/CubeIT/images/silk/book_next.png
new file mode 100644 (file)
index 0000000..ff2ea1a
Binary files /dev/null and b/CubeIT/images/silk/book_next.png differ
diff --git a/CubeIT/images/silk/book_open.png b/CubeIT/images/silk/book_open.png
new file mode 100644 (file)
index 0000000..7d863f9
Binary files /dev/null and b/CubeIT/images/silk/book_open.png differ
diff --git a/CubeIT/images/silk/book_previous.png b/CubeIT/images/silk/book_previous.png
new file mode 100644 (file)
index 0000000..2e53c69
Binary files /dev/null and b/CubeIT/images/silk/book_previous.png differ
diff --git a/CubeIT/images/silk/box.png b/CubeIT/images/silk/box.png
new file mode 100644 (file)
index 0000000..8443c23
Binary files /dev/null and b/CubeIT/images/silk/box.png differ
diff --git a/CubeIT/images/silk/brick.png b/CubeIT/images/silk/brick.png
new file mode 100644 (file)
index 0000000..7851cf3
Binary files /dev/null and b/CubeIT/images/silk/brick.png differ
diff --git a/CubeIT/images/silk/brick_add.png b/CubeIT/images/silk/brick_add.png
new file mode 100644 (file)
index 0000000..fac186b
Binary files /dev/null and b/CubeIT/images/silk/brick_add.png differ
diff --git a/CubeIT/images/silk/brick_delete.png b/CubeIT/images/silk/brick_delete.png
new file mode 100644 (file)
index 0000000..3a8c373
Binary files /dev/null and b/CubeIT/images/silk/brick_delete.png differ
diff --git a/CubeIT/images/silk/brick_edit.png b/CubeIT/images/silk/brick_edit.png
new file mode 100644 (file)
index 0000000..eb06df3
Binary files /dev/null and b/CubeIT/images/silk/brick_edit.png differ
diff --git a/CubeIT/images/silk/brick_error.png b/CubeIT/images/silk/brick_error.png
new file mode 100644 (file)
index 0000000..18ab01e
Binary files /dev/null and b/CubeIT/images/silk/brick_error.png differ
diff --git a/CubeIT/images/silk/brick_go.png b/CubeIT/images/silk/brick_go.png
new file mode 100644 (file)
index 0000000..fe0d335
Binary files /dev/null and b/CubeIT/images/silk/brick_go.png differ
diff --git a/CubeIT/images/silk/brick_link.png b/CubeIT/images/silk/brick_link.png
new file mode 100644 (file)
index 0000000..9ebf013
Binary files /dev/null and b/CubeIT/images/silk/brick_link.png differ
diff --git a/CubeIT/images/silk/bricks.png b/CubeIT/images/silk/bricks.png
new file mode 100644 (file)
index 0000000..0905f93
Binary files /dev/null and b/CubeIT/images/silk/bricks.png differ
diff --git a/CubeIT/images/silk/briefcase.png b/CubeIT/images/silk/briefcase.png
new file mode 100644 (file)
index 0000000..05c5649
Binary files /dev/null and b/CubeIT/images/silk/briefcase.png differ
diff --git a/CubeIT/images/silk/bug.png b/CubeIT/images/silk/bug.png
new file mode 100644 (file)
index 0000000..2d5fb90
Binary files /dev/null and b/CubeIT/images/silk/bug.png differ
diff --git a/CubeIT/images/silk/bug_add.png b/CubeIT/images/silk/bug_add.png
new file mode 100644 (file)
index 0000000..ced7817
Binary files /dev/null and b/CubeIT/images/silk/bug_add.png differ
diff --git a/CubeIT/images/silk/bug_delete.png b/CubeIT/images/silk/bug_delete.png
new file mode 100644 (file)
index 0000000..e81d757
Binary files /dev/null and b/CubeIT/images/silk/bug_delete.png differ
diff --git a/CubeIT/images/silk/bug_edit.png b/CubeIT/images/silk/bug_edit.png
new file mode 100644 (file)
index 0000000..e5c7dc0
Binary files /dev/null and b/CubeIT/images/silk/bug_edit.png differ
diff --git a/CubeIT/images/silk/bug_error.png b/CubeIT/images/silk/bug_error.png
new file mode 100644 (file)
index 0000000..c4e8c28
Binary files /dev/null and b/CubeIT/images/silk/bug_error.png differ
diff --git a/CubeIT/images/silk/bug_go.png b/CubeIT/images/silk/bug_go.png
new file mode 100644 (file)
index 0000000..4e4ae99
Binary files /dev/null and b/CubeIT/images/silk/bug_go.png differ
diff --git a/CubeIT/images/silk/bug_link.png b/CubeIT/images/silk/bug_link.png
new file mode 100644 (file)
index 0000000..30e25ab
Binary files /dev/null and b/CubeIT/images/silk/bug_link.png differ
diff --git a/CubeIT/images/silk/building.png b/CubeIT/images/silk/building.png
new file mode 100644 (file)
index 0000000..11a017c
Binary files /dev/null and b/CubeIT/images/silk/building.png differ
diff --git a/CubeIT/images/silk/building_add.png b/CubeIT/images/silk/building_add.png
new file mode 100644 (file)
index 0000000..d88e2b9
Binary files /dev/null and b/CubeIT/images/silk/building_add.png differ
diff --git a/CubeIT/images/silk/building_delete.png b/CubeIT/images/silk/building_delete.png
new file mode 100644 (file)
index 0000000..db6455d
Binary files /dev/null and b/CubeIT/images/silk/building_delete.png differ
diff --git a/CubeIT/images/silk/building_edit.png b/CubeIT/images/silk/building_edit.png
new file mode 100644 (file)
index 0000000..646db36
Binary files /dev/null and b/CubeIT/images/silk/building_edit.png differ
diff --git a/CubeIT/images/silk/building_error.png b/CubeIT/images/silk/building_error.png
new file mode 100644 (file)
index 0000000..a342eef
Binary files /dev/null and b/CubeIT/images/silk/building_error.png differ
diff --git a/CubeIT/images/silk/building_go.png b/CubeIT/images/silk/building_go.png
new file mode 100644 (file)
index 0000000..cdcbcb3
Binary files /dev/null and b/CubeIT/images/silk/building_go.png differ
diff --git a/CubeIT/images/silk/building_key.png b/CubeIT/images/silk/building_key.png
new file mode 100644 (file)
index 0000000..8b79e30
Binary files /dev/null and b/CubeIT/images/silk/building_key.png differ
diff --git a/CubeIT/images/silk/building_link.png b/CubeIT/images/silk/building_link.png
new file mode 100644 (file)
index 0000000..a340629
Binary files /dev/null and b/CubeIT/images/silk/building_link.png differ
diff --git a/CubeIT/images/silk/bullet_add.png b/CubeIT/images/silk/bullet_add.png
new file mode 100644 (file)
index 0000000..41ff833
Binary files /dev/null and b/CubeIT/images/silk/bullet_add.png differ
diff --git a/CubeIT/images/silk/bullet_arrow_bottom.png b/CubeIT/images/silk/bullet_arrow_bottom.png
new file mode 100644 (file)
index 0000000..1a28d82
Binary files /dev/null and b/CubeIT/images/silk/bullet_arrow_bottom.png differ
diff --git a/CubeIT/images/silk/bullet_arrow_down.png b/CubeIT/images/silk/bullet_arrow_down.png
new file mode 100644 (file)
index 0000000..9b23c06
Binary files /dev/null and b/CubeIT/images/silk/bullet_arrow_down.png differ
diff --git a/CubeIT/images/silk/bullet_arrow_top.png b/CubeIT/images/silk/bullet_arrow_top.png
new file mode 100644 (file)
index 0000000..0ce86d2
Binary files /dev/null and b/CubeIT/images/silk/bullet_arrow_top.png differ
diff --git a/CubeIT/images/silk/bullet_arrow_up.png b/CubeIT/images/silk/bullet_arrow_up.png
new file mode 100644 (file)
index 0000000..24df0f4
Binary files /dev/null and b/CubeIT/images/silk/bullet_arrow_up.png differ
diff --git a/CubeIT/images/silk/bullet_black.png b/CubeIT/images/silk/bullet_black.png
new file mode 100644 (file)
index 0000000..5761970
Binary files /dev/null and b/CubeIT/images/silk/bullet_black.png differ
diff --git a/CubeIT/images/silk/bullet_blue.png b/CubeIT/images/silk/bullet_blue.png
new file mode 100644 (file)
index 0000000..a7651ec
Binary files /dev/null and b/CubeIT/images/silk/bullet_blue.png differ
diff --git a/CubeIT/images/silk/bullet_delete.png b/CubeIT/images/silk/bullet_delete.png
new file mode 100644 (file)
index 0000000..bd6271b
Binary files /dev/null and b/CubeIT/images/silk/bullet_delete.png differ
diff --git a/CubeIT/images/silk/bullet_disk.png b/CubeIT/images/silk/bullet_disk.png
new file mode 100644 (file)
index 0000000..209c6a7
Binary files /dev/null and b/CubeIT/images/silk/bullet_disk.png differ
diff --git a/CubeIT/images/silk/bullet_error.png b/CubeIT/images/silk/bullet_error.png
new file mode 100644 (file)
index 0000000..bca2b49
Binary files /dev/null and b/CubeIT/images/silk/bullet_error.png differ
diff --git a/CubeIT/images/silk/bullet_feed.png b/CubeIT/images/silk/bullet_feed.png
new file mode 100644 (file)
index 0000000..1a0e0f1
Binary files /dev/null and b/CubeIT/images/silk/bullet_feed.png differ
diff --git a/CubeIT/images/silk/bullet_go.png b/CubeIT/images/silk/bullet_go.png
new file mode 100644 (file)
index 0000000..bc4faa7
Binary files /dev/null and b/CubeIT/images/silk/bullet_go.png differ
diff --git a/CubeIT/images/silk/bullet_green.png b/CubeIT/images/silk/bullet_green.png
new file mode 100644 (file)
index 0000000..058ad26
Binary files /dev/null and b/CubeIT/images/silk/bullet_green.png differ
diff --git a/CubeIT/images/silk/bullet_key.png b/CubeIT/images/silk/bullet_key.png
new file mode 100644 (file)
index 0000000..3d37f2e
Binary files /dev/null and b/CubeIT/images/silk/bullet_key.png differ
diff --git a/CubeIT/images/silk/bullet_orange.png b/CubeIT/images/silk/bullet_orange.png
new file mode 100644 (file)
index 0000000..fa63024
Binary files /dev/null and b/CubeIT/images/silk/bullet_orange.png differ
diff --git a/CubeIT/images/silk/bullet_picture.png b/CubeIT/images/silk/bullet_picture.png
new file mode 100644 (file)
index 0000000..386cb30
Binary files /dev/null and b/CubeIT/images/silk/bullet_picture.png differ
diff --git a/CubeIT/images/silk/bullet_pink.png b/CubeIT/images/silk/bullet_pink.png
new file mode 100644 (file)
index 0000000..0c9f73e
Binary files /dev/null and b/CubeIT/images/silk/bullet_pink.png differ
diff --git a/CubeIT/images/silk/bullet_purple.png b/CubeIT/images/silk/bullet_purple.png
new file mode 100644 (file)
index 0000000..52ba503
Binary files /dev/null and b/CubeIT/images/silk/bullet_purple.png differ
diff --git a/CubeIT/images/silk/bullet_red.png b/CubeIT/images/silk/bullet_red.png
new file mode 100644 (file)
index 0000000..0cd8031
Binary files /dev/null and b/CubeIT/images/silk/bullet_red.png differ
diff --git a/CubeIT/images/silk/bullet_star.png b/CubeIT/images/silk/bullet_star.png
new file mode 100644 (file)
index 0000000..fab774a
Binary files /dev/null and b/CubeIT/images/silk/bullet_star.png differ
diff --git a/CubeIT/images/silk/bullet_toggle_minus.png b/CubeIT/images/silk/bullet_toggle_minus.png
new file mode 100644 (file)
index 0000000..b47ce55
Binary files /dev/null and b/CubeIT/images/silk/bullet_toggle_minus.png differ
diff --git a/CubeIT/images/silk/bullet_toggle_plus.png b/CubeIT/images/silk/bullet_toggle_plus.png
new file mode 100644 (file)
index 0000000..9ab4a89
Binary files /dev/null and b/CubeIT/images/silk/bullet_toggle_plus.png differ
diff --git a/CubeIT/images/silk/bullet_white.png b/CubeIT/images/silk/bullet_white.png
new file mode 100644 (file)
index 0000000..a9af8d4
Binary files /dev/null and b/CubeIT/images/silk/bullet_white.png differ
diff --git a/CubeIT/images/silk/bullet_wrench.png b/CubeIT/images/silk/bullet_wrench.png
new file mode 100644 (file)
index 0000000..67817e6
Binary files /dev/null and b/CubeIT/images/silk/bullet_wrench.png differ
diff --git a/CubeIT/images/silk/bullet_yellow.png b/CubeIT/images/silk/bullet_yellow.png
new file mode 100644 (file)
index 0000000..6469cea
Binary files /dev/null and b/CubeIT/images/silk/bullet_yellow.png differ
diff --git a/CubeIT/images/silk/cake.png b/CubeIT/images/silk/cake.png
new file mode 100644 (file)
index 0000000..4ef151a
Binary files /dev/null and b/CubeIT/images/silk/cake.png differ
diff --git a/CubeIT/images/silk/calculator.png b/CubeIT/images/silk/calculator.png
new file mode 100644 (file)
index 0000000..701a60a
Binary files /dev/null and b/CubeIT/images/silk/calculator.png differ
diff --git a/CubeIT/images/silk/calculator_add.png b/CubeIT/images/silk/calculator_add.png
new file mode 100644 (file)
index 0000000..fd377bd
Binary files /dev/null and b/CubeIT/images/silk/calculator_add.png differ
diff --git a/CubeIT/images/silk/calculator_delete.png b/CubeIT/images/silk/calculator_delete.png
new file mode 100644 (file)
index 0000000..ac96170
Binary files /dev/null and b/CubeIT/images/silk/calculator_delete.png differ
diff --git a/CubeIT/images/silk/calculator_edit.png b/CubeIT/images/silk/calculator_edit.png
new file mode 100644 (file)
index 0000000..63b06b9
Binary files /dev/null and b/CubeIT/images/silk/calculator_edit.png differ
diff --git a/CubeIT/images/silk/calculator_error.png b/CubeIT/images/silk/calculator_error.png
new file mode 100644 (file)
index 0000000..0bc4288
Binary files /dev/null and b/CubeIT/images/silk/calculator_error.png differ
diff --git a/CubeIT/images/silk/calculator_link.png b/CubeIT/images/silk/calculator_link.png
new file mode 100644 (file)
index 0000000..a2a8fe6
Binary files /dev/null and b/CubeIT/images/silk/calculator_link.png differ
diff --git a/CubeIT/images/silk/calendar.png b/CubeIT/images/silk/calendar.png
new file mode 100644 (file)
index 0000000..6589138
Binary files /dev/null and b/CubeIT/images/silk/calendar.png differ
diff --git a/CubeIT/images/silk/calendar_add.png b/CubeIT/images/silk/calendar_add.png
new file mode 100644 (file)
index 0000000..17679db
Binary files /dev/null and b/CubeIT/images/silk/calendar_add.png differ
diff --git a/CubeIT/images/silk/calendar_delete.png b/CubeIT/images/silk/calendar_delete.png
new file mode 100644 (file)
index 0000000..69a3b10
Binary files /dev/null and b/CubeIT/images/silk/calendar_delete.png differ
diff --git a/CubeIT/images/silk/calendar_edit.png b/CubeIT/images/silk/calendar_edit.png
new file mode 100644 (file)
index 0000000..d1d2d6e
Binary files /dev/null and b/CubeIT/images/silk/calendar_edit.png differ
diff --git a/CubeIT/images/silk/calendar_link.png b/CubeIT/images/silk/calendar_link.png
new file mode 100644 (file)
index 0000000..6b106b9
Binary files /dev/null and b/CubeIT/images/silk/calendar_link.png differ
diff --git a/CubeIT/images/silk/calendar_view_day.png b/CubeIT/images/silk/calendar_view_day.png
new file mode 100644 (file)
index 0000000..9740f76
Binary files /dev/null and b/CubeIT/images/silk/calendar_view_day.png differ
diff --git a/CubeIT/images/silk/calendar_view_month.png b/CubeIT/images/silk/calendar_view_month.png
new file mode 100644 (file)
index 0000000..6cff76c
Binary files /dev/null and b/CubeIT/images/silk/calendar_view_month.png differ
diff --git a/CubeIT/images/silk/calendar_view_week.png b/CubeIT/images/silk/calendar_view_week.png
new file mode 100644 (file)
index 0000000..8fe695f
Binary files /dev/null and b/CubeIT/images/silk/calendar_view_week.png differ
diff --git a/CubeIT/images/silk/camera.png b/CubeIT/images/silk/camera.png
new file mode 100644 (file)
index 0000000..8536d1a
Binary files /dev/null and b/CubeIT/images/silk/camera.png differ
diff --git a/CubeIT/images/silk/camera_add.png b/CubeIT/images/silk/camera_add.png
new file mode 100644 (file)
index 0000000..08b5da9
Binary files /dev/null and b/CubeIT/images/silk/camera_add.png differ
diff --git a/CubeIT/images/silk/camera_delete.png b/CubeIT/images/silk/camera_delete.png
new file mode 100644 (file)
index 0000000..3846d74
Binary files /dev/null and b/CubeIT/images/silk/camera_delete.png differ
diff --git a/CubeIT/images/silk/camera_edit.png b/CubeIT/images/silk/camera_edit.png
new file mode 100644 (file)
index 0000000..b5015b1
Binary files /dev/null and b/CubeIT/images/silk/camera_edit.png differ
diff --git a/CubeIT/images/silk/camera_error.png b/CubeIT/images/silk/camera_error.png
new file mode 100644 (file)
index 0000000..3c1bc95
Binary files /dev/null and b/CubeIT/images/silk/camera_error.png differ
diff --git a/CubeIT/images/silk/camera_go.png b/CubeIT/images/silk/camera_go.png
new file mode 100644 (file)
index 0000000..94ce2b2
Binary files /dev/null and b/CubeIT/images/silk/camera_go.png differ
diff --git a/CubeIT/images/silk/camera_link.png b/CubeIT/images/silk/camera_link.png
new file mode 100644 (file)
index 0000000..d2ac9f9
Binary files /dev/null and b/CubeIT/images/silk/camera_link.png differ
diff --git a/CubeIT/images/silk/camera_small.png b/CubeIT/images/silk/camera_small.png
new file mode 100644 (file)
index 0000000..454b0b0
Binary files /dev/null and b/CubeIT/images/silk/camera_small.png differ
diff --git a/CubeIT/images/silk/cancel.png b/CubeIT/images/silk/cancel.png
new file mode 100644 (file)
index 0000000..c149c2b
Binary files /dev/null and b/CubeIT/images/silk/cancel.png differ
diff --git a/CubeIT/images/silk/car.png b/CubeIT/images/silk/car.png
new file mode 100644 (file)
index 0000000..4f3a770
Binary files /dev/null and b/CubeIT/images/silk/car.png differ
diff --git a/CubeIT/images/silk/car_add.png b/CubeIT/images/silk/car_add.png
new file mode 100644 (file)
index 0000000..1215a51
Binary files /dev/null and b/CubeIT/images/silk/car_add.png differ
diff --git a/CubeIT/images/silk/car_delete.png b/CubeIT/images/silk/car_delete.png
new file mode 100644 (file)
index 0000000..2803b56
Binary files /dev/null and b/CubeIT/images/silk/car_delete.png differ
diff --git a/CubeIT/images/silk/cart.png b/CubeIT/images/silk/cart.png
new file mode 100644 (file)
index 0000000..1baf7b9
Binary files /dev/null and b/CubeIT/images/silk/cart.png differ
diff --git a/CubeIT/images/silk/cart_add.png b/CubeIT/images/silk/cart_add.png
new file mode 100644 (file)
index 0000000..45c2900
Binary files /dev/null and b/CubeIT/images/silk/cart_add.png differ
diff --git a/CubeIT/images/silk/cart_delete.png b/CubeIT/images/silk/cart_delete.png
new file mode 100644 (file)
index 0000000..ac5bce5
Binary files /dev/null and b/CubeIT/images/silk/cart_delete.png differ
diff --git a/CubeIT/images/silk/cart_edit.png b/CubeIT/images/silk/cart_edit.png
new file mode 100644 (file)
index 0000000..b94ff88
Binary files /dev/null and b/CubeIT/images/silk/cart_edit.png differ
diff --git a/CubeIT/images/silk/cart_error.png b/CubeIT/images/silk/cart_error.png
new file mode 100644 (file)
index 0000000..144c835
Binary files /dev/null and b/CubeIT/images/silk/cart_error.png differ
diff --git a/CubeIT/images/silk/cart_go.png b/CubeIT/images/silk/cart_go.png
new file mode 100644 (file)
index 0000000..20ee058
Binary files /dev/null and b/CubeIT/images/silk/cart_go.png differ
diff --git a/CubeIT/images/silk/cart_put.png b/CubeIT/images/silk/cart_put.png
new file mode 100644 (file)
index 0000000..3aec353
Binary files /dev/null and b/CubeIT/images/silk/cart_put.png differ
diff --git a/CubeIT/images/silk/cart_remove.png b/CubeIT/images/silk/cart_remove.png
new file mode 100644 (file)
index 0000000..360217b
Binary files /dev/null and b/CubeIT/images/silk/cart_remove.png differ
diff --git a/CubeIT/images/silk/cd.png b/CubeIT/images/silk/cd.png
new file mode 100644 (file)
index 0000000..ef43223
Binary files /dev/null and b/CubeIT/images/silk/cd.png differ
diff --git a/CubeIT/images/silk/cd_add.png b/CubeIT/images/silk/cd_add.png
new file mode 100644 (file)
index 0000000..b0254ef
Binary files /dev/null and b/CubeIT/images/silk/cd_add.png differ
diff --git a/CubeIT/images/silk/cd_burn.png b/CubeIT/images/silk/cd_burn.png
new file mode 100644 (file)
index 0000000..157cb0b
Binary files /dev/null and b/CubeIT/images/silk/cd_burn.png differ
diff --git a/CubeIT/images/silk/cd_delete.png b/CubeIT/images/silk/cd_delete.png
new file mode 100644 (file)
index 0000000..7d7b3d5
Binary files /dev/null and b/CubeIT/images/silk/cd_delete.png differ
diff --git a/CubeIT/images/silk/cd_edit.png b/CubeIT/images/silk/cd_edit.png
new file mode 100644 (file)
index 0000000..b0dc194
Binary files /dev/null and b/CubeIT/images/silk/cd_edit.png differ
diff --git a/CubeIT/images/silk/cd_eject.png b/CubeIT/images/silk/cd_eject.png
new file mode 100644 (file)
index 0000000..762932f
Binary files /dev/null and b/CubeIT/images/silk/cd_eject.png differ
diff --git a/CubeIT/images/silk/cd_go.png b/CubeIT/images/silk/cd_go.png
new file mode 100644 (file)
index 0000000..13e0499
Binary files /dev/null and b/CubeIT/images/silk/cd_go.png differ
diff --git a/CubeIT/images/silk/chart_bar.png b/CubeIT/images/silk/chart_bar.png
new file mode 100644 (file)
index 0000000..9051fbc
Binary files /dev/null and b/CubeIT/images/silk/chart_bar.png differ
diff --git a/CubeIT/images/silk/chart_bar_add.png b/CubeIT/images/silk/chart_bar_add.png
new file mode 100644 (file)
index 0000000..d283e84
Binary files /dev/null and b/CubeIT/images/silk/chart_bar_add.png differ
diff --git a/CubeIT/images/silk/chart_bar_delete.png b/CubeIT/images/silk/chart_bar_delete.png
new file mode 100644 (file)
index 0000000..259f686
Binary files /dev/null and b/CubeIT/images/silk/chart_bar_delete.png differ
diff --git a/CubeIT/images/silk/chart_bar_edit.png b/CubeIT/images/silk/chart_bar_edit.png
new file mode 100644 (file)
index 0000000..df64d97
Binary files /dev/null and b/CubeIT/images/silk/chart_bar_edit.png differ
diff --git a/CubeIT/images/silk/chart_bar_error.png b/CubeIT/images/silk/chart_bar_error.png
new file mode 100644 (file)
index 0000000..bdacea5
Binary files /dev/null and b/CubeIT/images/silk/chart_bar_error.png differ
diff --git a/CubeIT/images/silk/chart_bar_link.png b/CubeIT/images/silk/chart_bar_link.png
new file mode 100644 (file)
index 0000000..bf18aed
Binary files /dev/null and b/CubeIT/images/silk/chart_bar_link.png differ
diff --git a/CubeIT/images/silk/chart_curve.png b/CubeIT/images/silk/chart_curve.png
new file mode 100644 (file)
index 0000000..01e933a
Binary files /dev/null and b/CubeIT/images/silk/chart_curve.png differ
diff --git a/CubeIT/images/silk/chart_curve_add.png b/CubeIT/images/silk/chart_curve_add.png
new file mode 100644 (file)
index 0000000..f9e2050
Binary files /dev/null and b/CubeIT/images/silk/chart_curve_add.png differ
diff --git a/CubeIT/images/silk/chart_curve_delete.png b/CubeIT/images/silk/chart_curve_delete.png
new file mode 100644 (file)
index 0000000..b411391
Binary files /dev/null and b/CubeIT/images/silk/chart_curve_delete.png differ
diff --git a/CubeIT/images/silk/chart_curve_edit.png b/CubeIT/images/silk/chart_curve_edit.png
new file mode 100644 (file)
index 0000000..bd07673
Binary files /dev/null and b/CubeIT/images/silk/chart_curve_edit.png differ
diff --git a/CubeIT/images/silk/chart_curve_error.png b/CubeIT/images/silk/chart_curve_error.png
new file mode 100644 (file)
index 0000000..906dd03
Binary files /dev/null and b/CubeIT/images/silk/chart_curve_error.png differ
diff --git a/CubeIT/images/silk/chart_curve_go.png b/CubeIT/images/silk/chart_curve_go.png
new file mode 100644 (file)
index 0000000..ac9eda5
Binary files /dev/null and b/CubeIT/images/silk/chart_curve_go.png differ
diff --git a/CubeIT/images/silk/chart_curve_link.png b/CubeIT/images/silk/chart_curve_link.png
new file mode 100644 (file)
index 0000000..144eafe
Binary files /dev/null and b/CubeIT/images/silk/chart_curve_link.png differ
diff --git a/CubeIT/images/silk/chart_line.png b/CubeIT/images/silk/chart_line.png
new file mode 100644 (file)
index 0000000..85020f3
Binary files /dev/null and b/CubeIT/images/silk/chart_line.png differ
diff --git a/CubeIT/images/silk/chart_line_add.png b/CubeIT/images/silk/chart_line_add.png
new file mode 100644 (file)
index 0000000..5571a5e
Binary files /dev/null and b/CubeIT/images/silk/chart_line_add.png differ
diff --git a/CubeIT/images/silk/chart_line_delete.png b/CubeIT/images/silk/chart_line_delete.png
new file mode 100644 (file)
index 0000000..5b0aa90
Binary files /dev/null and b/CubeIT/images/silk/chart_line_delete.png differ
diff --git a/CubeIT/images/silk/chart_line_edit.png b/CubeIT/images/silk/chart_line_edit.png
new file mode 100644 (file)
index 0000000..9cf6607
Binary files /dev/null and b/CubeIT/images/silk/chart_line_edit.png differ
diff --git a/CubeIT/images/silk/chart_line_error.png b/CubeIT/images/silk/chart_line_error.png
new file mode 100644 (file)
index 0000000..ff23c03
Binary files /dev/null and b/CubeIT/images/silk/chart_line_error.png differ
diff --git a/CubeIT/images/silk/chart_line_link.png b/CubeIT/images/silk/chart_line_link.png
new file mode 100644 (file)
index 0000000..f3727d2
Binary files /dev/null and b/CubeIT/images/silk/chart_line_link.png differ
diff --git a/CubeIT/images/silk/chart_organisation.png b/CubeIT/images/silk/chart_organisation.png
new file mode 100644 (file)
index 0000000..c32d25c
Binary files /dev/null and b/CubeIT/images/silk/chart_organisation.png differ
diff --git a/CubeIT/images/silk/chart_organisation_add.png b/CubeIT/images/silk/chart_organisation_add.png
new file mode 100644 (file)
index 0000000..f0dba4a
Binary files /dev/null and b/CubeIT/images/silk/chart_organisation_add.png differ
diff --git a/CubeIT/images/silk/chart_organisation_delete.png b/CubeIT/images/silk/chart_organisation_delete.png
new file mode 100644 (file)
index 0000000..7dc8dca
Binary files /dev/null and b/CubeIT/images/silk/chart_organisation_delete.png differ
diff --git a/CubeIT/images/silk/chart_pie.png b/CubeIT/images/silk/chart_pie.png
new file mode 100644 (file)
index 0000000..fe00fa0
Binary files /dev/null and b/CubeIT/images/silk/chart_pie.png differ
diff --git a/CubeIT/images/silk/chart_pie_add.png b/CubeIT/images/silk/chart_pie_add.png
new file mode 100644 (file)
index 0000000..bf0822e
Binary files /dev/null and b/CubeIT/images/silk/chart_pie_add.png differ
diff --git a/CubeIT/images/silk/chart_pie_delete.png b/CubeIT/images/silk/chart_pie_delete.png
new file mode 100644 (file)
index 0000000..5ab9efd
Binary files /dev/null and b/CubeIT/images/silk/chart_pie_delete.png differ
diff --git a/CubeIT/images/silk/chart_pie_edit.png b/CubeIT/images/silk/chart_pie_edit.png
new file mode 100644 (file)
index 0000000..3debc12
Binary files /dev/null and b/CubeIT/images/silk/chart_pie_edit.png differ
diff --git a/CubeIT/images/silk/chart_pie_error.png b/CubeIT/images/silk/chart_pie_error.png
new file mode 100644 (file)
index 0000000..7344174
Binary files /dev/null and b/CubeIT/images/silk/chart_pie_error.png differ
diff --git a/CubeIT/images/silk/chart_pie_link.png b/CubeIT/images/silk/chart_pie_link.png
new file mode 100644 (file)
index 0000000..c072f8e
Binary files /dev/null and b/CubeIT/images/silk/chart_pie_link.png differ
diff --git a/CubeIT/images/silk/clock.png b/CubeIT/images/silk/clock.png
new file mode 100644 (file)
index 0000000..e2672c2
Binary files /dev/null and b/CubeIT/images/silk/clock.png differ
diff --git a/CubeIT/images/silk/clock_add.png b/CubeIT/images/silk/clock_add.png
new file mode 100644 (file)
index 0000000..598b839
Binary files /dev/null and b/CubeIT/images/silk/clock_add.png differ
diff --git a/CubeIT/images/silk/clock_delete.png b/CubeIT/images/silk/clock_delete.png
new file mode 100644 (file)
index 0000000..8bf9efe
Binary files /dev/null and b/CubeIT/images/silk/clock_delete.png differ
diff --git a/CubeIT/images/silk/clock_edit.png b/CubeIT/images/silk/clock_edit.png
new file mode 100644 (file)
index 0000000..7d35718
Binary files /dev/null and b/CubeIT/images/silk/clock_edit.png differ
diff --git a/CubeIT/images/silk/clock_error.png b/CubeIT/images/silk/clock_error.png
new file mode 100644 (file)
index 0000000..a7c461b
Binary files /dev/null and b/CubeIT/images/silk/clock_error.png differ
diff --git a/CubeIT/images/silk/clock_go.png b/CubeIT/images/silk/clock_go.png
new file mode 100644 (file)
index 0000000..a1a24d3
Binary files /dev/null and b/CubeIT/images/silk/clock_go.png differ
diff --git a/CubeIT/images/silk/clock_link.png b/CubeIT/images/silk/clock_link.png
new file mode 100644 (file)
index 0000000..481cf04
Binary files /dev/null and b/CubeIT/images/silk/clock_link.png differ
diff --git a/CubeIT/images/silk/clock_pause.png b/CubeIT/images/silk/clock_pause.png
new file mode 100644 (file)
index 0000000..ba74725
Binary files /dev/null and b/CubeIT/images/silk/clock_pause.png differ
diff --git a/CubeIT/images/silk/clock_play.png b/CubeIT/images/silk/clock_play.png
new file mode 100644 (file)
index 0000000..fb4ebc8
Binary files /dev/null and b/CubeIT/images/silk/clock_play.png differ
diff --git a/CubeIT/images/silk/clock_red.png b/CubeIT/images/silk/clock_red.png
new file mode 100644 (file)
index 0000000..2842cc3
Binary files /dev/null and b/CubeIT/images/silk/clock_red.png differ
diff --git a/CubeIT/images/silk/clock_stop.png b/CubeIT/images/silk/clock_stop.png
new file mode 100644 (file)
index 0000000..6fe8a6f
Binary files /dev/null and b/CubeIT/images/silk/clock_stop.png differ
diff --git a/CubeIT/images/silk/cog.png b/CubeIT/images/silk/cog.png
new file mode 100644 (file)
index 0000000..67de2c6
Binary files /dev/null and b/CubeIT/images/silk/cog.png differ
diff --git a/CubeIT/images/silk/cog_add.png b/CubeIT/images/silk/cog_add.png
new file mode 100644 (file)
index 0000000..04f22ba
Binary files /dev/null and b/CubeIT/images/silk/cog_add.png differ
diff --git a/CubeIT/images/silk/cog_delete.png b/CubeIT/images/silk/cog_delete.png
new file mode 100644 (file)
index 0000000..8ce71c4
Binary files /dev/null and b/CubeIT/images/silk/cog_delete.png differ
diff --git a/CubeIT/images/silk/cog_edit.png b/CubeIT/images/silk/cog_edit.png
new file mode 100644 (file)
index 0000000..47b75a4
Binary files /dev/null and b/CubeIT/images/silk/cog_edit.png differ
diff --git a/CubeIT/images/silk/cog_error.png b/CubeIT/images/silk/cog_error.png
new file mode 100644 (file)
index 0000000..4766743
Binary files /dev/null and b/CubeIT/images/silk/cog_error.png differ
diff --git a/CubeIT/images/silk/cog_go.png b/CubeIT/images/silk/cog_go.png
new file mode 100644 (file)
index 0000000..3262767
Binary files /dev/null and b/CubeIT/images/silk/cog_go.png differ
diff --git a/CubeIT/images/silk/coins.png b/CubeIT/images/silk/coins.png
new file mode 100644 (file)
index 0000000..0ca9074
Binary files /dev/null and b/CubeIT/images/silk/coins.png differ
diff --git a/CubeIT/images/silk/coins_add.png b/CubeIT/images/silk/coins_add.png
new file mode 100644 (file)
index 0000000..cdff5d3
Binary files /dev/null and b/CubeIT/images/silk/coins_add.png differ
diff --git a/CubeIT/images/silk/coins_delete.png b/CubeIT/images/silk/coins_delete.png
new file mode 100644 (file)
index 0000000..18e0c0f
Binary files /dev/null and b/CubeIT/images/silk/coins_delete.png differ
diff --git a/CubeIT/images/silk/color_swatch.png b/CubeIT/images/silk/color_swatch.png
new file mode 100644 (file)
index 0000000..6e6e852
Binary files /dev/null and b/CubeIT/images/silk/color_swatch.png differ
diff --git a/CubeIT/images/silk/color_wheel.png b/CubeIT/images/silk/color_wheel.png
new file mode 100644 (file)
index 0000000..809fb00
Binary files /dev/null and b/CubeIT/images/silk/color_wheel.png differ
diff --git a/CubeIT/images/silk/comment.png b/CubeIT/images/silk/comment.png
new file mode 100644 (file)
index 0000000..7bc9233
Binary files /dev/null and b/CubeIT/images/silk/comment.png differ
diff --git a/CubeIT/images/silk/comment_add.png b/CubeIT/images/silk/comment_add.png
new file mode 100644 (file)
index 0000000..75e78de
Binary files /dev/null and b/CubeIT/images/silk/comment_add.png differ
diff --git a/CubeIT/images/silk/comment_delete.png b/CubeIT/images/silk/comment_delete.png
new file mode 100644 (file)
index 0000000..643fdbe
Binary files /dev/null and b/CubeIT/images/silk/comment_delete.png differ
diff --git a/CubeIT/images/silk/comment_edit.png b/CubeIT/images/silk/comment_edit.png
new file mode 100644 (file)
index 0000000..73db110
Binary files /dev/null and b/CubeIT/images/silk/comment_edit.png differ
diff --git a/CubeIT/images/silk/comments.png b/CubeIT/images/silk/comments.png
new file mode 100644 (file)
index 0000000..39433cf
Binary files /dev/null and b/CubeIT/images/silk/comments.png differ
diff --git a/CubeIT/images/silk/comments_add.png b/CubeIT/images/silk/comments_add.png
new file mode 100644 (file)
index 0000000..b325634
Binary files /dev/null and b/CubeIT/images/silk/comments_add.png differ
diff --git a/CubeIT/images/silk/comments_delete.png b/CubeIT/images/silk/comments_delete.png
new file mode 100644 (file)
index 0000000..6df7376
Binary files /dev/null and b/CubeIT/images/silk/comments_delete.png differ
diff --git a/CubeIT/images/silk/compress.png b/CubeIT/images/silk/compress.png
new file mode 100644 (file)
index 0000000..8606ff0
Binary files /dev/null and b/CubeIT/images/silk/compress.png differ
diff --git a/CubeIT/images/silk/computer.png b/CubeIT/images/silk/computer.png
new file mode 100644 (file)
index 0000000..9bc37dc
Binary files /dev/null and b/CubeIT/images/silk/computer.png differ
diff --git a/CubeIT/images/silk/computer_add.png b/CubeIT/images/silk/computer_add.png
new file mode 100644 (file)
index 0000000..db604ee
Binary files /dev/null and b/CubeIT/images/silk/computer_add.png differ
diff --git a/CubeIT/images/silk/computer_delete.png b/CubeIT/images/silk/computer_delete.png
new file mode 100644 (file)
index 0000000..5e9b268
Binary files /dev/null and b/CubeIT/images/silk/computer_delete.png differ
diff --git a/CubeIT/images/silk/computer_edit.png b/CubeIT/images/silk/computer_edit.png
new file mode 100644 (file)
index 0000000..34c72fe
Binary files /dev/null and b/CubeIT/images/silk/computer_edit.png differ
diff --git a/CubeIT/images/silk/computer_error.png b/CubeIT/images/silk/computer_error.png
new file mode 100644 (file)
index 0000000..b2c3ed5
Binary files /dev/null and b/CubeIT/images/silk/computer_error.png differ
diff --git a/CubeIT/images/silk/computer_go.png b/CubeIT/images/silk/computer_go.png
new file mode 100644 (file)
index 0000000..0b26144
Binary files /dev/null and b/CubeIT/images/silk/computer_go.png differ
diff --git a/CubeIT/images/silk/computer_key.png b/CubeIT/images/silk/computer_key.png
new file mode 100644 (file)
index 0000000..eca5430
Binary files /dev/null and b/CubeIT/images/silk/computer_key.png differ
diff --git a/CubeIT/images/silk/computer_link.png b/CubeIT/images/silk/computer_link.png
new file mode 100644 (file)
index 0000000..3859db2
Binary files /dev/null and b/CubeIT/images/silk/computer_link.png differ
diff --git a/CubeIT/images/silk/connect.png b/CubeIT/images/silk/connect.png
new file mode 100644 (file)
index 0000000..024138e
Binary files /dev/null and b/CubeIT/images/silk/connect.png differ
diff --git a/CubeIT/images/silk/contrast.png b/CubeIT/images/silk/contrast.png
new file mode 100644 (file)
index 0000000..adcc004
Binary files /dev/null and b/CubeIT/images/silk/contrast.png differ
diff --git a/CubeIT/images/silk/contrast_decrease.png b/CubeIT/images/silk/contrast_decrease.png
new file mode 100644 (file)
index 0000000..0155bf5
Binary files /dev/null and b/CubeIT/images/silk/contrast_decrease.png differ
diff --git a/CubeIT/images/silk/contrast_high.png b/CubeIT/images/silk/contrast_high.png
new file mode 100644 (file)
index 0000000..d87c8cb
Binary files /dev/null and b/CubeIT/images/silk/contrast_high.png differ
diff --git a/CubeIT/images/silk/contrast_increase.png b/CubeIT/images/silk/contrast_increase.png
new file mode 100644 (file)
index 0000000..a3e7f52
Binary files /dev/null and b/CubeIT/images/silk/contrast_increase.png differ
diff --git a/CubeIT/images/silk/contrast_low.png b/CubeIT/images/silk/contrast_low.png
new file mode 100644 (file)
index 0000000..dc9f4b1
Binary files /dev/null and b/CubeIT/images/silk/contrast_low.png differ
diff --git a/CubeIT/images/silk/control_eject.png b/CubeIT/images/silk/control_eject.png
new file mode 100644 (file)
index 0000000..924d817
Binary files /dev/null and b/CubeIT/images/silk/control_eject.png differ
diff --git a/CubeIT/images/silk/control_eject_blue.png b/CubeIT/images/silk/control_eject_blue.png
new file mode 100644 (file)
index 0000000..2bd4963
Binary files /dev/null and b/CubeIT/images/silk/control_eject_blue.png differ
diff --git a/CubeIT/images/silk/control_end.png b/CubeIT/images/silk/control_end.png
new file mode 100644 (file)
index 0000000..036e04d
Binary files /dev/null and b/CubeIT/images/silk/control_end.png differ
diff --git a/CubeIT/images/silk/control_end_blue.png b/CubeIT/images/silk/control_end_blue.png
new file mode 100644 (file)
index 0000000..7207935
Binary files /dev/null and b/CubeIT/images/silk/control_end_blue.png differ
diff --git a/CubeIT/images/silk/control_equalizer.png b/CubeIT/images/silk/control_equalizer.png
new file mode 100644 (file)
index 0000000..4606087
Binary files /dev/null and b/CubeIT/images/silk/control_equalizer.png differ
diff --git a/CubeIT/images/silk/control_equalizer_blue.png b/CubeIT/images/silk/control_equalizer_blue.png
new file mode 100644 (file)
index 0000000..1b2e6a3
Binary files /dev/null and b/CubeIT/images/silk/control_equalizer_blue.png differ
diff --git a/CubeIT/images/silk/control_fastforward.png b/CubeIT/images/silk/control_fastforward.png
new file mode 100644 (file)
index 0000000..31f7fd3
Binary files /dev/null and b/CubeIT/images/silk/control_fastforward.png differ
diff --git a/CubeIT/images/silk/control_fastforward_blue.png b/CubeIT/images/silk/control_fastforward_blue.png
new file mode 100644 (file)
index 0000000..4a2f9d4
Binary files /dev/null and b/CubeIT/images/silk/control_fastforward_blue.png differ
diff --git a/CubeIT/images/silk/control_pause.png b/CubeIT/images/silk/control_pause.png
new file mode 100644 (file)
index 0000000..2d9ce9c
Binary files /dev/null and b/CubeIT/images/silk/control_pause.png differ
diff --git a/CubeIT/images/silk/control_pause_blue.png b/CubeIT/images/silk/control_pause_blue.png
new file mode 100644 (file)
index 0000000..ec61099
Binary files /dev/null and b/CubeIT/images/silk/control_pause_blue.png differ
diff --git a/CubeIT/images/silk/control_play.png b/CubeIT/images/silk/control_play.png
new file mode 100644 (file)
index 0000000..0846555
Binary files /dev/null and b/CubeIT/images/silk/control_play.png differ
diff --git a/CubeIT/images/silk/control_play_blue.png b/CubeIT/images/silk/control_play_blue.png
new file mode 100644 (file)
index 0000000..f8c8ec6
Binary files /dev/null and b/CubeIT/images/silk/control_play_blue.png differ
diff --git a/CubeIT/images/silk/control_repeat.png b/CubeIT/images/silk/control_repeat.png
new file mode 100644 (file)
index 0000000..1c4f57a
Binary files /dev/null and b/CubeIT/images/silk/control_repeat.png differ
diff --git a/CubeIT/images/silk/control_repeat_blue.png b/CubeIT/images/silk/control_repeat_blue.png
new file mode 100644 (file)
index 0000000..406ec33
Binary files /dev/null and b/CubeIT/images/silk/control_repeat_blue.png differ
diff --git a/CubeIT/images/silk/control_rewind.png b/CubeIT/images/silk/control_rewind.png
new file mode 100644 (file)
index 0000000..c029447
Binary files /dev/null and b/CubeIT/images/silk/control_rewind.png differ
diff --git a/CubeIT/images/silk/control_rewind_blue.png b/CubeIT/images/silk/control_rewind_blue.png
new file mode 100644 (file)
index 0000000..15d1584
Binary files /dev/null and b/CubeIT/images/silk/control_rewind_blue.png differ
diff --git a/CubeIT/images/silk/control_start.png b/CubeIT/images/silk/control_start.png
new file mode 100644 (file)
index 0000000..7dd1c07
Binary files /dev/null and b/CubeIT/images/silk/control_start.png differ
diff --git a/CubeIT/images/silk/control_start_blue.png b/CubeIT/images/silk/control_start_blue.png
new file mode 100644 (file)
index 0000000..6f11fcb
Binary files /dev/null and b/CubeIT/images/silk/control_start_blue.png differ
diff --git a/CubeIT/images/silk/control_stop.png b/CubeIT/images/silk/control_stop.png
new file mode 100644 (file)
index 0000000..893bb60
Binary files /dev/null and b/CubeIT/images/silk/control_stop.png differ
diff --git a/CubeIT/images/silk/control_stop_blue.png b/CubeIT/images/silk/control_stop_blue.png
new file mode 100644 (file)
index 0000000..e6f75d2
Binary files /dev/null and b/CubeIT/images/silk/control_stop_blue.png differ
diff --git a/CubeIT/images/silk/controller.png b/CubeIT/images/silk/controller.png
new file mode 100644 (file)
index 0000000..5cf76ed
Binary files /dev/null and b/CubeIT/images/silk/controller.png differ
diff --git a/CubeIT/images/silk/controller_add.png b/CubeIT/images/silk/controller_add.png
new file mode 100644 (file)
index 0000000..efecb38
Binary files /dev/null and b/CubeIT/images/silk/controller_add.png differ
diff --git a/CubeIT/images/silk/controller_delete.png b/CubeIT/images/silk/controller_delete.png
new file mode 100644 (file)
index 0000000..3d83bc7
Binary files /dev/null and b/CubeIT/images/silk/controller_delete.png differ
diff --git a/CubeIT/images/silk/controller_error.png b/CubeIT/images/silk/controller_error.png
new file mode 100644 (file)
index 0000000..7f17c0c
Binary files /dev/null and b/CubeIT/images/silk/controller_error.png differ
diff --git a/CubeIT/images/silk/creditcards.png b/CubeIT/images/silk/creditcards.png
new file mode 100644 (file)
index 0000000..4eae583
Binary files /dev/null and b/CubeIT/images/silk/creditcards.png differ
diff --git a/CubeIT/images/silk/cross.png b/CubeIT/images/silk/cross.png
new file mode 100644 (file)
index 0000000..1514d51
Binary files /dev/null and b/CubeIT/images/silk/cross.png differ
diff --git a/CubeIT/images/silk/css.png b/CubeIT/images/silk/css.png
new file mode 100644 (file)
index 0000000..23f3101
Binary files /dev/null and b/CubeIT/images/silk/css.png differ
diff --git a/CubeIT/images/silk/css_add.png b/CubeIT/images/silk/css_add.png
new file mode 100644 (file)
index 0000000..e8ea10f
Binary files /dev/null and b/CubeIT/images/silk/css_add.png differ
diff --git a/CubeIT/images/silk/css_delete.png b/CubeIT/images/silk/css_delete.png
new file mode 100644 (file)
index 0000000..326aba4
Binary files /dev/null and b/CubeIT/images/silk/css_delete.png differ
diff --git a/CubeIT/images/silk/css_go.png b/CubeIT/images/silk/css_go.png
new file mode 100644 (file)
index 0000000..6cdf38c
Binary files /dev/null and b/CubeIT/images/silk/css_go.png differ
diff --git a/CubeIT/images/silk/css_valid.png b/CubeIT/images/silk/css_valid.png
new file mode 100644 (file)
index 0000000..4c72ca5
Binary files /dev/null and b/CubeIT/images/silk/css_valid.png differ
diff --git a/CubeIT/images/silk/cup.png b/CubeIT/images/silk/cup.png
new file mode 100644 (file)
index 0000000..b7bfcd1
Binary files /dev/null and b/CubeIT/images/silk/cup.png differ
diff --git a/CubeIT/images/silk/cup_add.png b/CubeIT/images/silk/cup_add.png
new file mode 100644 (file)
index 0000000..4ecaece
Binary files /dev/null and b/CubeIT/images/silk/cup_add.png differ
diff --git a/CubeIT/images/silk/cup_delete.png b/CubeIT/images/silk/cup_delete.png
new file mode 100644 (file)
index 0000000..59a6d9c
Binary files /dev/null and b/CubeIT/images/silk/cup_delete.png differ
diff --git a/CubeIT/images/silk/cup_edit.png b/CubeIT/images/silk/cup_edit.png
new file mode 100644 (file)
index 0000000..0b8f1e1
Binary files /dev/null and b/CubeIT/images/silk/cup_edit.png differ
diff --git a/CubeIT/images/silk/cup_error.png b/CubeIT/images/silk/cup_error.png
new file mode 100644 (file)
index 0000000..6879874
Binary files /dev/null and b/CubeIT/images/silk/cup_error.png differ
diff --git a/CubeIT/images/silk/cup_go.png b/CubeIT/images/silk/cup_go.png
new file mode 100644 (file)
index 0000000..9527efb
Binary files /dev/null and b/CubeIT/images/silk/cup_go.png differ
diff --git a/CubeIT/images/silk/cup_key.png b/CubeIT/images/silk/cup_key.png
new file mode 100644 (file)
index 0000000..7ae160c
Binary files /dev/null and b/CubeIT/images/silk/cup_key.png differ
diff --git a/CubeIT/images/silk/cup_link.png b/CubeIT/images/silk/cup_link.png
new file mode 100644 (file)
index 0000000..41d1ace
Binary files /dev/null and b/CubeIT/images/silk/cup_link.png differ
diff --git a/CubeIT/images/silk/cursor.png b/CubeIT/images/silk/cursor.png
new file mode 100644 (file)
index 0000000..532f532
Binary files /dev/null and b/CubeIT/images/silk/cursor.png differ
diff --git a/CubeIT/images/silk/cut.png b/CubeIT/images/silk/cut.png
new file mode 100644 (file)
index 0000000..f215d6f
Binary files /dev/null and b/CubeIT/images/silk/cut.png differ
diff --git a/CubeIT/images/silk/cut_red.png b/CubeIT/images/silk/cut_red.png
new file mode 100644 (file)
index 0000000..85bb2f0
Binary files /dev/null and b/CubeIT/images/silk/cut_red.png differ
diff --git a/CubeIT/images/silk/database.png b/CubeIT/images/silk/database.png
new file mode 100644 (file)
index 0000000..3d09261
Binary files /dev/null and b/CubeIT/images/silk/database.png differ
diff --git a/CubeIT/images/silk/database_add.png b/CubeIT/images/silk/database_add.png
new file mode 100644 (file)
index 0000000..802bd6c
Binary files /dev/null and b/CubeIT/images/silk/database_add.png differ
diff --git a/CubeIT/images/silk/database_connect.png b/CubeIT/images/silk/database_connect.png
new file mode 100644 (file)
index 0000000..3a11197
Binary files /dev/null and b/CubeIT/images/silk/database_connect.png differ
diff --git a/CubeIT/images/silk/database_delete.png b/CubeIT/images/silk/database_delete.png
new file mode 100644 (file)
index 0000000..cce652e
Binary files /dev/null and b/CubeIT/images/silk/database_delete.png differ
diff --git a/CubeIT/images/silk/database_edit.png b/CubeIT/images/silk/database_edit.png
new file mode 100644 (file)
index 0000000..e501b66
Binary files /dev/null and b/CubeIT/images/silk/database_edit.png differ
diff --git a/CubeIT/images/silk/database_error.png b/CubeIT/images/silk/database_error.png
new file mode 100644 (file)
index 0000000..578221a
Binary files /dev/null and b/CubeIT/images/silk/database_error.png differ
diff --git a/CubeIT/images/silk/database_gear.png b/CubeIT/images/silk/database_gear.png
new file mode 100644 (file)
index 0000000..7c0ab2b
Binary files /dev/null and b/CubeIT/images/silk/database_gear.png differ
diff --git a/CubeIT/images/silk/database_go.png b/CubeIT/images/silk/database_go.png
new file mode 100644 (file)
index 0000000..61a8556
Binary files /dev/null and b/CubeIT/images/silk/database_go.png differ
diff --git a/CubeIT/images/silk/database_key.png b/CubeIT/images/silk/database_key.png
new file mode 100644 (file)
index 0000000..3334147
Binary files /dev/null and b/CubeIT/images/silk/database_key.png differ
diff --git a/CubeIT/images/silk/database_lightning.png b/CubeIT/images/silk/database_lightning.png
new file mode 100644 (file)
index 0000000..d9eefc2
Binary files /dev/null and b/CubeIT/images/silk/database_lightning.png differ
diff --git a/CubeIT/images/silk/database_link.png b/CubeIT/images/silk/database_link.png
new file mode 100644 (file)
index 0000000..4c8204a
Binary files /dev/null and b/CubeIT/images/silk/database_link.png differ
diff --git a/CubeIT/images/silk/database_refresh.png b/CubeIT/images/silk/database_refresh.png
new file mode 100644 (file)
index 0000000..ff803be
Binary files /dev/null and b/CubeIT/images/silk/database_refresh.png differ
diff --git a/CubeIT/images/silk/database_save.png b/CubeIT/images/silk/database_save.png
new file mode 100644 (file)
index 0000000..44c06dd
Binary files /dev/null and b/CubeIT/images/silk/database_save.png differ
diff --git a/CubeIT/images/silk/database_table.png b/CubeIT/images/silk/database_table.png
new file mode 100644 (file)
index 0000000..693709c
Binary files /dev/null and b/CubeIT/images/silk/database_table.png differ
diff --git a/CubeIT/images/silk/date.png b/CubeIT/images/silk/date.png
new file mode 100644 (file)
index 0000000..783c833
Binary files /dev/null and b/CubeIT/images/silk/date.png differ
diff --git a/CubeIT/images/silk/date_add.png b/CubeIT/images/silk/date_add.png
new file mode 100644 (file)
index 0000000..6a7ae02
Binary files /dev/null and b/CubeIT/images/silk/date_add.png differ
diff --git a/CubeIT/images/silk/date_delete.png b/CubeIT/images/silk/date_delete.png
new file mode 100644 (file)
index 0000000..969a6b7
Binary files /dev/null and b/CubeIT/images/silk/date_delete.png differ
diff --git a/CubeIT/images/silk/date_edit.png b/CubeIT/images/silk/date_edit.png
new file mode 100644 (file)
index 0000000..e681065
Binary files /dev/null and b/CubeIT/images/silk/date_edit.png differ
diff --git a/CubeIT/images/silk/date_error.png b/CubeIT/images/silk/date_error.png
new file mode 100644 (file)
index 0000000..442cd97
Binary files /dev/null and b/CubeIT/images/silk/date_error.png differ
diff --git a/CubeIT/images/silk/date_go.png b/CubeIT/images/silk/date_go.png
new file mode 100644 (file)
index 0000000..52dd9f3
Binary files /dev/null and b/CubeIT/images/silk/date_go.png differ
diff --git a/CubeIT/images/silk/date_link.png b/CubeIT/images/silk/date_link.png
new file mode 100644 (file)
index 0000000..9f0aada
Binary files /dev/null and b/CubeIT/images/silk/date_link.png differ
diff --git a/CubeIT/images/silk/date_magnify.png b/CubeIT/images/silk/date_magnify.png
new file mode 100644 (file)
index 0000000..cd05f19
Binary files /dev/null and b/CubeIT/images/silk/date_magnify.png differ
diff --git a/CubeIT/images/silk/date_next.png b/CubeIT/images/silk/date_next.png
new file mode 100644 (file)
index 0000000..48d740a
Binary files /dev/null and b/CubeIT/images/silk/date_next.png differ
diff --git a/CubeIT/images/silk/date_previous.png b/CubeIT/images/silk/date_previous.png
new file mode 100644 (file)
index 0000000..e117a83
Binary files /dev/null and b/CubeIT/images/silk/date_previous.png differ
diff --git a/CubeIT/images/silk/delete.png b/CubeIT/images/silk/delete.png
new file mode 100644 (file)
index 0000000..08f2493
Binary files /dev/null and b/CubeIT/images/silk/delete.png differ
diff --git a/CubeIT/images/silk/disconnect.png b/CubeIT/images/silk/disconnect.png
new file mode 100644 (file)
index 0000000..b335cb1
Binary files /dev/null and b/CubeIT/images/silk/disconnect.png differ
diff --git a/CubeIT/images/silk/disk.png b/CubeIT/images/silk/disk.png
new file mode 100644 (file)
index 0000000..99d532e
Binary files /dev/null and b/CubeIT/images/silk/disk.png differ
diff --git a/CubeIT/images/silk/disk_multiple.png b/CubeIT/images/silk/disk_multiple.png
new file mode 100644 (file)
index 0000000..fc5a52f
Binary files /dev/null and b/CubeIT/images/silk/disk_multiple.png differ
diff --git a/CubeIT/images/silk/door.png b/CubeIT/images/silk/door.png
new file mode 100644 (file)
index 0000000..369fc46
Binary files /dev/null and b/CubeIT/images/silk/door.png differ
diff --git a/CubeIT/images/silk/door_in.png b/CubeIT/images/silk/door_in.png
new file mode 100644 (file)
index 0000000..41676a0
Binary files /dev/null and b/CubeIT/images/silk/door_in.png differ
diff --git a/CubeIT/images/silk/door_open.png b/CubeIT/images/silk/door_open.png
new file mode 100644 (file)
index 0000000..64bab57
Binary files /dev/null and b/CubeIT/images/silk/door_open.png differ
diff --git a/CubeIT/images/silk/door_out.png b/CubeIT/images/silk/door_out.png
new file mode 100644 (file)
index 0000000..2541d2b
Binary files /dev/null and b/CubeIT/images/silk/door_out.png differ
diff --git a/CubeIT/images/silk/drink.png b/CubeIT/images/silk/drink.png
new file mode 100644 (file)
index 0000000..d98359c
Binary files /dev/null and b/CubeIT/images/silk/drink.png differ
diff --git a/CubeIT/images/silk/drink_empty.png b/CubeIT/images/silk/drink_empty.png
new file mode 100644 (file)
index 0000000..a40211e
Binary files /dev/null and b/CubeIT/images/silk/drink_empty.png differ
diff --git a/CubeIT/images/silk/drive.png b/CubeIT/images/silk/drive.png
new file mode 100644 (file)
index 0000000..37b7c9b
Binary files /dev/null and b/CubeIT/images/silk/drive.png differ
diff --git a/CubeIT/images/silk/drive_add.png b/CubeIT/images/silk/drive_add.png
new file mode 100644 (file)
index 0000000..29a35d5
Binary files /dev/null and b/CubeIT/images/silk/drive_add.png differ
diff --git a/CubeIT/images/silk/drive_burn.png b/CubeIT/images/silk/drive_burn.png
new file mode 100644 (file)
index 0000000..80fd79f
Binary files /dev/null and b/CubeIT/images/silk/drive_burn.png differ
diff --git a/CubeIT/images/silk/drive_cd.png b/CubeIT/images/silk/drive_cd.png
new file mode 100644 (file)
index 0000000..1850b70
Binary files /dev/null and b/CubeIT/images/silk/drive_cd.png differ
diff --git a/CubeIT/images/silk/drive_cd_empty.png b/CubeIT/images/silk/drive_cd_empty.png
new file mode 100644 (file)
index 0000000..8df38d9
Binary files /dev/null and b/CubeIT/images/silk/drive_cd_empty.png differ
diff --git a/CubeIT/images/silk/drive_delete.png b/CubeIT/images/silk/drive_delete.png
new file mode 100644 (file)
index 0000000..e6eb186
Binary files /dev/null and b/CubeIT/images/silk/drive_delete.png differ
diff --git a/CubeIT/images/silk/drive_disk.png b/CubeIT/images/silk/drive_disk.png
new file mode 100644 (file)
index 0000000..5a51e81
Binary files /dev/null and b/CubeIT/images/silk/drive_disk.png differ
diff --git a/CubeIT/images/silk/drive_edit.png b/CubeIT/images/silk/drive_edit.png
new file mode 100644 (file)
index 0000000..7923fad
Binary files /dev/null and b/CubeIT/images/silk/drive_edit.png differ
diff --git a/CubeIT/images/silk/drive_error.png b/CubeIT/images/silk/drive_error.png
new file mode 100644 (file)
index 0000000..309f639
Binary files /dev/null and b/CubeIT/images/silk/drive_error.png differ
diff --git a/CubeIT/images/silk/drive_go.png b/CubeIT/images/silk/drive_go.png
new file mode 100644 (file)
index 0000000..fc53379
Binary files /dev/null and b/CubeIT/images/silk/drive_go.png differ
diff --git a/CubeIT/images/silk/drive_key.png b/CubeIT/images/silk/drive_key.png
new file mode 100644 (file)
index 0000000..d0b3c67
Binary files /dev/null and b/CubeIT/images/silk/drive_key.png differ
diff --git a/CubeIT/images/silk/drive_link.png b/CubeIT/images/silk/drive_link.png
new file mode 100644 (file)
index 0000000..8679c4b
Binary files /dev/null and b/CubeIT/images/silk/drive_link.png differ
diff --git a/CubeIT/images/silk/drive_magnify.png b/CubeIT/images/silk/drive_magnify.png
new file mode 100644 (file)
index 0000000..0f0f444
Binary files /dev/null and b/CubeIT/images/silk/drive_magnify.png differ
diff --git a/CubeIT/images/silk/drive_network.png b/CubeIT/images/silk/drive_network.png
new file mode 100644 (file)
index 0000000..63d2d5d
Binary files /dev/null and b/CubeIT/images/silk/drive_network.png differ
diff --git a/CubeIT/images/silk/drive_rename.png b/CubeIT/images/silk/drive_rename.png
new file mode 100644 (file)
index 0000000..2a9f38b
Binary files /dev/null and b/CubeIT/images/silk/drive_rename.png differ
diff --git a/CubeIT/images/silk/drive_user.png b/CubeIT/images/silk/drive_user.png
new file mode 100644 (file)
index 0000000..0b4751c
Binary files /dev/null and b/CubeIT/images/silk/drive_user.png differ
diff --git a/CubeIT/images/silk/drive_web.png b/CubeIT/images/silk/drive_web.png
new file mode 100644 (file)
index 0000000..8850a83
Binary files /dev/null and b/CubeIT/images/silk/drive_web.png differ
diff --git a/CubeIT/images/silk/dvd.png b/CubeIT/images/silk/dvd.png
new file mode 100644 (file)
index 0000000..9d94de5
Binary files /dev/null and b/CubeIT/images/silk/dvd.png differ
diff --git a/CubeIT/images/silk/dvd_add.png b/CubeIT/images/silk/dvd_add.png
new file mode 100644 (file)
index 0000000..517d112
Binary files /dev/null and b/CubeIT/images/silk/dvd_add.png differ
diff --git a/CubeIT/images/silk/dvd_delete.png b/CubeIT/images/silk/dvd_delete.png
new file mode 100644 (file)
index 0000000..87bed22
Binary files /dev/null and b/CubeIT/images/silk/dvd_delete.png differ
diff --git a/CubeIT/images/silk/dvd_edit.png b/CubeIT/images/silk/dvd_edit.png
new file mode 100644 (file)
index 0000000..d6330aa
Binary files /dev/null and b/CubeIT/images/silk/dvd_edit.png differ
diff --git a/CubeIT/images/silk/dvd_error.png b/CubeIT/images/silk/dvd_error.png
new file mode 100644 (file)
index 0000000..8f6d4be
Binary files /dev/null and b/CubeIT/images/silk/dvd_error.png differ
diff --git a/CubeIT/images/silk/dvd_go.png b/CubeIT/images/silk/dvd_go.png
new file mode 100644 (file)
index 0000000..ef6959f
Binary files /dev/null and b/CubeIT/images/silk/dvd_go.png differ
diff --git a/CubeIT/images/silk/dvd_key.png b/CubeIT/images/silk/dvd_key.png
new file mode 100644 (file)
index 0000000..da9307f
Binary files /dev/null and b/CubeIT/images/silk/dvd_key.png differ
diff --git a/CubeIT/images/silk/dvd_link.png b/CubeIT/images/silk/dvd_link.png
new file mode 100644 (file)
index 0000000..caad726
Binary files /dev/null and b/CubeIT/images/silk/dvd_link.png differ
diff --git a/CubeIT/images/silk/email.png b/CubeIT/images/silk/email.png
new file mode 100644 (file)
index 0000000..7348aed
Binary files /dev/null and b/CubeIT/images/silk/email.png differ
diff --git a/CubeIT/images/silk/email_add.png b/CubeIT/images/silk/email_add.png
new file mode 100644 (file)
index 0000000..6c93368
Binary files /dev/null and b/CubeIT/images/silk/email_add.png differ
diff --git a/CubeIT/images/silk/email_attach.png b/CubeIT/images/silk/email_attach.png
new file mode 100644 (file)
index 0000000..1f99485
Binary files /dev/null and b/CubeIT/images/silk/email_attach.png differ
diff --git a/CubeIT/images/silk/email_delete.png b/CubeIT/images/silk/email_delete.png
new file mode 100644 (file)
index 0000000..a9932b1
Binary files /dev/null and b/CubeIT/images/silk/email_delete.png differ
diff --git a/CubeIT/images/silk/email_edit.png b/CubeIT/images/silk/email_edit.png
new file mode 100644 (file)
index 0000000..244f04a
Binary files /dev/null and b/CubeIT/images/silk/email_edit.png differ
diff --git a/CubeIT/images/silk/email_error.png b/CubeIT/images/silk/email_error.png
new file mode 100644 (file)
index 0000000..8bdd330
Binary files /dev/null and b/CubeIT/images/silk/email_error.png differ
diff --git a/CubeIT/images/silk/email_go.png b/CubeIT/images/silk/email_go.png
new file mode 100644 (file)
index 0000000..4a6c5d3
Binary files /dev/null and b/CubeIT/images/silk/email_go.png differ
diff --git a/CubeIT/images/silk/email_link.png b/CubeIT/images/silk/email_link.png
new file mode 100644 (file)
index 0000000..2c49f78
Binary files /dev/null and b/CubeIT/images/silk/email_link.png differ
diff --git a/CubeIT/images/silk/email_open.png b/CubeIT/images/silk/email_open.png
new file mode 100644 (file)
index 0000000..7b6f981
Binary files /dev/null and b/CubeIT/images/silk/email_open.png differ
diff --git a/CubeIT/images/silk/email_open_image.png b/CubeIT/images/silk/email_open_image.png
new file mode 100644 (file)
index 0000000..e588e2f
Binary files /dev/null and b/CubeIT/images/silk/email_open_image.png differ
diff --git a/CubeIT/images/silk/emoticon_evilgrin.png b/CubeIT/images/silk/emoticon_evilgrin.png
new file mode 100644 (file)
index 0000000..817bd50
Binary files /dev/null and b/CubeIT/images/silk/emoticon_evilgrin.png differ
diff --git a/CubeIT/images/silk/emoticon_grin.png b/CubeIT/images/silk/emoticon_grin.png
new file mode 100644 (file)
index 0000000..fc60c5e
Binary files /dev/null and b/CubeIT/images/silk/emoticon_grin.png differ
diff --git a/CubeIT/images/silk/emoticon_happy.png b/CubeIT/images/silk/emoticon_happy.png
new file mode 100644 (file)
index 0000000..6b7336e
Binary files /dev/null and b/CubeIT/images/silk/emoticon_happy.png differ
diff --git a/CubeIT/images/silk/emoticon_smile.png b/CubeIT/images/silk/emoticon_smile.png
new file mode 100644 (file)
index 0000000..ade4318
Binary files /dev/null and b/CubeIT/images/silk/emoticon_smile.png differ
diff --git a/CubeIT/images/silk/emoticon_surprised.png b/CubeIT/images/silk/emoticon_surprised.png
new file mode 100644 (file)
index 0000000..4520cfc
Binary files /dev/null and b/CubeIT/images/silk/emoticon_surprised.png differ
diff --git a/CubeIT/images/silk/emoticon_tongue.png b/CubeIT/images/silk/emoticon_tongue.png
new file mode 100644 (file)
index 0000000..ecafd2f
Binary files /dev/null and b/CubeIT/images/silk/emoticon_tongue.png differ
diff --git a/CubeIT/images/silk/emoticon_unhappy.png b/CubeIT/images/silk/emoticon_unhappy.png
new file mode 100644 (file)
index 0000000..fd5d030
Binary files /dev/null and b/CubeIT/images/silk/emoticon_unhappy.png differ
diff --git a/CubeIT/images/silk/emoticon_waii.png b/CubeIT/images/silk/emoticon_waii.png
new file mode 100644 (file)
index 0000000..458f936
Binary files /dev/null and b/CubeIT/images/silk/emoticon_waii.png differ
diff --git a/CubeIT/images/silk/emoticon_wink.png b/CubeIT/images/silk/emoticon_wink.png
new file mode 100644 (file)
index 0000000..a631949
Binary files /dev/null and b/CubeIT/images/silk/emoticon_wink.png differ
diff --git a/CubeIT/images/silk/error.png b/CubeIT/images/silk/error.png
new file mode 100644 (file)
index 0000000..628cf2d
Binary files /dev/null and b/CubeIT/images/silk/error.png differ
diff --git a/CubeIT/images/silk/error_add.png b/CubeIT/images/silk/error_add.png
new file mode 100644 (file)
index 0000000..4c97484
Binary files /dev/null and b/CubeIT/images/silk/error_add.png differ
diff --git a/CubeIT/images/silk/error_delete.png b/CubeIT/images/silk/error_delete.png
new file mode 100644 (file)
index 0000000..7f78bcc
Binary files /dev/null and b/CubeIT/images/silk/error_delete.png differ
diff --git a/CubeIT/images/silk/error_go.png b/CubeIT/images/silk/error_go.png
new file mode 100644 (file)
index 0000000..caa1838
Binary files /dev/null and b/CubeIT/images/silk/error_go.png differ
diff --git a/CubeIT/images/silk/exclamation.png b/CubeIT/images/silk/exclamation.png
new file mode 100644 (file)
index 0000000..c37bd06
Binary files /dev/null and b/CubeIT/images/silk/exclamation.png differ
diff --git a/CubeIT/images/silk/eye.png b/CubeIT/images/silk/eye.png
new file mode 100644 (file)
index 0000000..564a1a9
Binary files /dev/null and b/CubeIT/images/silk/eye.png differ
diff --git a/CubeIT/images/silk/feed.png b/CubeIT/images/silk/feed.png
new file mode 100644 (file)
index 0000000..315c4f4
Binary files /dev/null and b/CubeIT/images/silk/feed.png differ
diff --git a/CubeIT/images/silk/feed_add.png b/CubeIT/images/silk/feed_add.png
new file mode 100644 (file)
index 0000000..e77d46e
Binary files /dev/null and b/CubeIT/images/silk/feed_add.png differ
diff --git a/CubeIT/images/silk/feed_delete.png b/CubeIT/images/silk/feed_delete.png
new file mode 100644 (file)
index 0000000..5e332b4
Binary files /dev/null and b/CubeIT/images/silk/feed_delete.png differ
diff --git a/CubeIT/images/silk/feed_disk.png b/CubeIT/images/silk/feed_disk.png
new file mode 100644 (file)
index 0000000..a158c99
Binary files /dev/null and b/CubeIT/images/silk/feed_disk.png differ
diff --git a/CubeIT/images/silk/feed_edit.png b/CubeIT/images/silk/feed_edit.png
new file mode 100644 (file)
index 0000000..f1fde7a
Binary files /dev/null and b/CubeIT/images/silk/feed_edit.png differ
diff --git a/CubeIT/images/silk/feed_error.png b/CubeIT/images/silk/feed_error.png
new file mode 100644 (file)
index 0000000..c0a801c
Binary files /dev/null and b/CubeIT/images/silk/feed_error.png differ
diff --git a/CubeIT/images/silk/feed_go.png b/CubeIT/images/silk/feed_go.png
new file mode 100644 (file)
index 0000000..f2eed1e
Binary files /dev/null and b/CubeIT/images/silk/feed_go.png differ
diff --git a/CubeIT/images/silk/feed_key.png b/CubeIT/images/silk/feed_key.png
new file mode 100644 (file)
index 0000000..156bfa9
Binary files /dev/null and b/CubeIT/images/silk/feed_key.png differ
diff --git a/CubeIT/images/silk/feed_link.png b/CubeIT/images/silk/feed_link.png
new file mode 100644 (file)
index 0000000..c45a534
Binary files /dev/null and b/CubeIT/images/silk/feed_link.png differ
diff --git a/CubeIT/images/silk/feed_magnify.png b/CubeIT/images/silk/feed_magnify.png
new file mode 100644 (file)
index 0000000..3023695
Binary files /dev/null and b/CubeIT/images/silk/feed_magnify.png differ
diff --git a/CubeIT/images/silk/female.png b/CubeIT/images/silk/female.png
new file mode 100644 (file)
index 0000000..f92958e
Binary files /dev/null and b/CubeIT/images/silk/female.png differ
diff --git a/CubeIT/images/silk/film.png b/CubeIT/images/silk/film.png
new file mode 100644 (file)
index 0000000..b0ce7bb
Binary files /dev/null and b/CubeIT/images/silk/film.png differ
diff --git a/CubeIT/images/silk/film_add.png b/CubeIT/images/silk/film_add.png
new file mode 100644 (file)
index 0000000..40d681f
Binary files /dev/null and b/CubeIT/images/silk/film_add.png differ
diff --git a/CubeIT/images/silk/film_delete.png b/CubeIT/images/silk/film_delete.png
new file mode 100644 (file)
index 0000000..23a2508
Binary files /dev/null and b/CubeIT/images/silk/film_delete.png differ
diff --git a/CubeIT/images/silk/film_edit.png b/CubeIT/images/silk/film_edit.png
new file mode 100644 (file)
index 0000000..af66b73
Binary files /dev/null and b/CubeIT/images/silk/film_edit.png differ
diff --git a/CubeIT/images/silk/film_error.png b/CubeIT/images/silk/film_error.png
new file mode 100644 (file)
index 0000000..88f3d69
Binary files /dev/null and b/CubeIT/images/silk/film_error.png differ
diff --git a/CubeIT/images/silk/film_go.png b/CubeIT/images/silk/film_go.png
new file mode 100644 (file)
index 0000000..dd0168e
Binary files /dev/null and b/CubeIT/images/silk/film_go.png differ
diff --git a/CubeIT/images/silk/film_key.png b/CubeIT/images/silk/film_key.png
new file mode 100644 (file)
index 0000000..5892162
Binary files /dev/null and b/CubeIT/images/silk/film_key.png differ
diff --git a/CubeIT/images/silk/film_link.png b/CubeIT/images/silk/film_link.png
new file mode 100644 (file)
index 0000000..0f24e86
Binary files /dev/null and b/CubeIT/images/silk/film_link.png differ
diff --git a/CubeIT/images/silk/film_save.png b/CubeIT/images/silk/film_save.png
new file mode 100644 (file)
index 0000000..bc8c0d3
Binary files /dev/null and b/CubeIT/images/silk/film_save.png differ
diff --git a/CubeIT/images/silk/find.png b/CubeIT/images/silk/find.png
new file mode 100644 (file)
index 0000000..1547479
Binary files /dev/null and b/CubeIT/images/silk/find.png differ
diff --git a/CubeIT/images/silk/flag_blue.png b/CubeIT/images/silk/flag_blue.png
new file mode 100644 (file)
index 0000000..003924f
Binary files /dev/null and b/CubeIT/images/silk/flag_blue.png differ
diff --git a/CubeIT/images/silk/flag_green.png b/CubeIT/images/silk/flag_green.png
new file mode 100644 (file)
index 0000000..e4bc611
Binary files /dev/null and b/CubeIT/images/silk/flag_green.png differ
diff --git a/CubeIT/images/silk/flag_orange.png b/CubeIT/images/silk/flag_orange.png
new file mode 100644 (file)
index 0000000..e632024
Binary files /dev/null and b/CubeIT/images/silk/flag_orange.png differ
diff --git a/CubeIT/images/silk/flag_pink.png b/CubeIT/images/silk/flag_pink.png
new file mode 100644 (file)
index 0000000..5f15e52
Binary files /dev/null and b/CubeIT/images/silk/flag_pink.png differ
diff --git a/CubeIT/images/silk/flag_purple.png b/CubeIT/images/silk/flag_purple.png
new file mode 100644 (file)
index 0000000..d069866
Binary files /dev/null and b/CubeIT/images/silk/flag_purple.png differ
diff --git a/CubeIT/images/silk/flag_red.png b/CubeIT/images/silk/flag_red.png
new file mode 100644 (file)
index 0000000..e8a602d
Binary files /dev/null and b/CubeIT/images/silk/flag_red.png differ
diff --git a/CubeIT/images/silk/flag_yellow.png b/CubeIT/images/silk/flag_yellow.png
new file mode 100644 (file)
index 0000000..14c89a5
Binary files /dev/null and b/CubeIT/images/silk/flag_yellow.png differ
diff --git a/CubeIT/images/silk/folder.png b/CubeIT/images/silk/folder.png
new file mode 100644 (file)
index 0000000..784e8fa
Binary files /dev/null and b/CubeIT/images/silk/folder.png differ
diff --git a/CubeIT/images/silk/folder_add.png b/CubeIT/images/silk/folder_add.png
new file mode 100644 (file)
index 0000000..529fe8f
Binary files /dev/null and b/CubeIT/images/silk/folder_add.png differ
diff --git a/CubeIT/images/silk/folder_bell.png b/CubeIT/images/silk/folder_bell.png
new file mode 100644 (file)
index 0000000..d04dd7f
Binary files /dev/null and b/CubeIT/images/silk/folder_bell.png differ
diff --git a/CubeIT/images/silk/folder_brick.png b/CubeIT/images/silk/folder_brick.png
new file mode 100644 (file)
index 0000000..5dea976
Binary files /dev/null and b/CubeIT/images/silk/folder_brick.png differ
diff --git a/CubeIT/images/silk/folder_bug.png b/CubeIT/images/silk/folder_bug.png
new file mode 100644 (file)
index 0000000..4f791b6
Binary files /dev/null and b/CubeIT/images/silk/folder_bug.png differ
diff --git a/CubeIT/images/silk/folder_camera.png b/CubeIT/images/silk/folder_camera.png
new file mode 100644 (file)
index 0000000..c951941
Binary files /dev/null and b/CubeIT/images/silk/folder_camera.png differ
diff --git a/CubeIT/images/silk/folder_database.png b/CubeIT/images/silk/folder_database.png
new file mode 100644 (file)
index 0000000..5193e2e
Binary files /dev/null and b/CubeIT/images/silk/folder_database.png differ
diff --git a/CubeIT/images/silk/folder_delete.png b/CubeIT/images/silk/folder_delete.png
new file mode 100644 (file)
index 0000000..112b016
Binary files /dev/null and b/CubeIT/images/silk/folder_delete.png differ
diff --git a/CubeIT/images/silk/folder_edit.png b/CubeIT/images/silk/folder_edit.png
new file mode 100644 (file)
index 0000000..ad669cc
Binary files /dev/null and b/CubeIT/images/silk/folder_edit.png differ
diff --git a/CubeIT/images/silk/folder_error.png b/CubeIT/images/silk/folder_error.png
new file mode 100644 (file)
index 0000000..1af8809
Binary files /dev/null and b/CubeIT/images/silk/folder_error.png differ
diff --git a/CubeIT/images/silk/folder_explore.png b/CubeIT/images/silk/folder_explore.png
new file mode 100644 (file)
index 0000000..0ba9391
Binary files /dev/null and b/CubeIT/images/silk/folder_explore.png differ
diff --git a/CubeIT/images/silk/folder_feed.png b/CubeIT/images/silk/folder_feed.png
new file mode 100644 (file)
index 0000000..d06ee51
Binary files /dev/null and b/CubeIT/images/silk/folder_feed.png differ
diff --git a/CubeIT/images/silk/folder_find.png b/CubeIT/images/silk/folder_find.png
new file mode 100644 (file)
index 0000000..c64e2ee
Binary files /dev/null and b/CubeIT/images/silk/folder_find.png differ
diff --git a/CubeIT/images/silk/folder_go.png b/CubeIT/images/silk/folder_go.png
new file mode 100644 (file)
index 0000000..34a736f
Binary files /dev/null and b/CubeIT/images/silk/folder_go.png differ
diff --git a/CubeIT/images/silk/folder_heart.png b/CubeIT/images/silk/folder_heart.png
new file mode 100644 (file)
index 0000000..56d7da1
Binary files /dev/null and b/CubeIT/images/silk/folder_heart.png differ
diff --git a/CubeIT/images/silk/folder_image.png b/CubeIT/images/silk/folder_image.png
new file mode 100644 (file)
index 0000000..d5df75b
Binary files /dev/null and b/CubeIT/images/silk/folder_image.png differ
diff --git a/CubeIT/images/silk/folder_key.png b/CubeIT/images/silk/folder_key.png
new file mode 100644 (file)
index 0000000..fb9b4c2
Binary files /dev/null and b/CubeIT/images/silk/folder_key.png differ
diff --git a/CubeIT/images/silk/folder_lightbulb.png b/CubeIT/images/silk/folder_lightbulb.png
new file mode 100644 (file)
index 0000000..f367a51
Binary files /dev/null and b/CubeIT/images/silk/folder_lightbulb.png differ
diff --git a/CubeIT/images/silk/folder_link.png b/CubeIT/images/silk/folder_link.png
new file mode 100644 (file)
index 0000000..b9b75f6
Binary files /dev/null and b/CubeIT/images/silk/folder_link.png differ
diff --git a/CubeIT/images/silk/folder_magnify.png b/CubeIT/images/silk/folder_magnify.png
new file mode 100644 (file)
index 0000000..0a3e798
Binary files /dev/null and b/CubeIT/images/silk/folder_magnify.png differ
diff --git a/CubeIT/images/silk/folder_page.png b/CubeIT/images/silk/folder_page.png
new file mode 100644 (file)
index 0000000..1ef6e11
Binary files /dev/null and b/CubeIT/images/silk/folder_page.png differ
diff --git a/CubeIT/images/silk/folder_page_white.png b/CubeIT/images/silk/folder_page_white.png
new file mode 100644 (file)
index 0000000..14d6b61
Binary files /dev/null and b/CubeIT/images/silk/folder_page_white.png differ
diff --git a/CubeIT/images/silk/folder_palette.png b/CubeIT/images/silk/folder_palette.png
new file mode 100644 (file)
index 0000000..ba12fe8
Binary files /dev/null and b/CubeIT/images/silk/folder_palette.png differ
diff --git a/CubeIT/images/silk/folder_picture.png b/CubeIT/images/silk/folder_picture.png
new file mode 100644 (file)
index 0000000..052b336
Binary files /dev/null and b/CubeIT/images/silk/folder_picture.png differ
diff --git a/CubeIT/images/silk/folder_star.png b/CubeIT/images/silk/folder_star.png
new file mode 100644 (file)
index 0000000..448e46f
Binary files /dev/null and b/CubeIT/images/silk/folder_star.png differ
diff --git a/CubeIT/images/silk/folder_table.png b/CubeIT/images/silk/folder_table.png
new file mode 100644 (file)
index 0000000..473cee3
Binary files /dev/null and b/CubeIT/images/silk/folder_table.png differ
diff --git a/CubeIT/images/silk/folder_user.png b/CubeIT/images/silk/folder_user.png
new file mode 100644 (file)
index 0000000..f021c3e
Binary files /dev/null and b/CubeIT/images/silk/folder_user.png differ
diff --git a/CubeIT/images/silk/folder_wrench.png b/CubeIT/images/silk/folder_wrench.png
new file mode 100644 (file)
index 0000000..ea3404e
Binary files /dev/null and b/CubeIT/images/silk/folder_wrench.png differ
diff --git a/CubeIT/images/silk/font.png b/CubeIT/images/silk/font.png
new file mode 100644 (file)
index 0000000..b7960db
Binary files /dev/null and b/CubeIT/images/silk/font.png differ
diff --git a/CubeIT/images/silk/font_add.png b/CubeIT/images/silk/font_add.png
new file mode 100644 (file)
index 0000000..b709eba
Binary files /dev/null and b/CubeIT/images/silk/font_add.png differ
diff --git a/CubeIT/images/silk/font_delete.png b/CubeIT/images/silk/font_delete.png
new file mode 100644 (file)
index 0000000..1d6124d
Binary files /dev/null and b/CubeIT/images/silk/font_delete.png differ
diff --git a/CubeIT/images/silk/font_go.png b/CubeIT/images/silk/font_go.png
new file mode 100644 (file)
index 0000000..75eba80
Binary files /dev/null and b/CubeIT/images/silk/font_go.png differ
diff --git a/CubeIT/images/silk/group.png b/CubeIT/images/silk/group.png
new file mode 100644 (file)
index 0000000..7fb4e1f
Binary files /dev/null and b/CubeIT/images/silk/group.png differ
diff --git a/CubeIT/images/silk/group_add.png b/CubeIT/images/silk/group_add.png
new file mode 100644 (file)
index 0000000..06c5350
Binary files /dev/null and b/CubeIT/images/silk/group_add.png differ
diff --git a/CubeIT/images/silk/group_delete.png b/CubeIT/images/silk/group_delete.png
new file mode 100644 (file)
index 0000000..4489ca2
Binary files /dev/null and b/CubeIT/images/silk/group_delete.png differ
diff --git a/CubeIT/images/silk/group_edit.png b/CubeIT/images/silk/group_edit.png
new file mode 100644 (file)
index 0000000..c88b945
Binary files /dev/null and b/CubeIT/images/silk/group_edit.png differ
diff --git a/CubeIT/images/silk/group_error.png b/CubeIT/images/silk/group_error.png
new file mode 100644 (file)
index 0000000..7364a13
Binary files /dev/null and b/CubeIT/images/silk/group_error.png differ
diff --git a/CubeIT/images/silk/group_gear.png b/CubeIT/images/silk/group_gear.png
new file mode 100644 (file)
index 0000000..2544f2e
Binary files /dev/null and b/CubeIT/images/silk/group_gear.png differ
diff --git a/CubeIT/images/silk/group_go.png b/CubeIT/images/silk/group_go.png
new file mode 100644 (file)
index 0000000..1f52333
Binary files /dev/null and b/CubeIT/images/silk/group_go.png differ
diff --git a/CubeIT/images/silk/group_key.png b/CubeIT/images/silk/group_key.png
new file mode 100644 (file)
index 0000000..257f111
Binary files /dev/null and b/CubeIT/images/silk/group_key.png differ
diff --git a/CubeIT/images/silk/group_link.png b/CubeIT/images/silk/group_link.png
new file mode 100644 (file)
index 0000000..c77ed88
Binary files /dev/null and b/CubeIT/images/silk/group_link.png differ
diff --git a/CubeIT/images/silk/heart.png b/CubeIT/images/silk/heart.png
new file mode 100644 (file)
index 0000000..d9ee53e
Binary files /dev/null and b/CubeIT/images/silk/heart.png differ
diff --git a/CubeIT/images/silk/heart_add.png b/CubeIT/images/silk/heart_add.png
new file mode 100644 (file)
index 0000000..d4195ff
Binary files /dev/null and b/CubeIT/images/silk/heart_add.png differ
diff --git a/CubeIT/images/silk/heart_delete.png b/CubeIT/images/silk/heart_delete.png
new file mode 100644 (file)
index 0000000..ce523e3
Binary files /dev/null and b/CubeIT/images/silk/heart_delete.png differ
diff --git a/CubeIT/images/silk/help.png b/CubeIT/images/silk/help.png
new file mode 100644 (file)
index 0000000..5c87017
Binary files /dev/null and b/CubeIT/images/silk/help.png differ
diff --git a/CubeIT/images/silk/hourglass.png b/CubeIT/images/silk/hourglass.png
new file mode 100644 (file)
index 0000000..57b03ce
Binary files /dev/null and b/CubeIT/images/silk/hourglass.png differ
diff --git a/CubeIT/images/silk/hourglass_add.png b/CubeIT/images/silk/hourglass_add.png
new file mode 100644 (file)
index 0000000..170dfff
Binary files /dev/null and b/CubeIT/images/silk/hourglass_add.png differ
diff --git a/CubeIT/images/silk/hourglass_delete.png b/CubeIT/images/silk/hourglass_delete.png
new file mode 100644 (file)
index 0000000..4b1337b
Binary files /dev/null and b/CubeIT/images/silk/hourglass_delete.png differ
diff --git a/CubeIT/images/silk/hourglass_go.png b/CubeIT/images/silk/hourglass_go.png
new file mode 100644 (file)
index 0000000..b2d3a98
Binary files /dev/null and b/CubeIT/images/silk/hourglass_go.png differ
diff --git a/CubeIT/images/silk/hourglass_link.png b/CubeIT/images/silk/hourglass_link.png
new file mode 100644 (file)
index 0000000..ecc59b0
Binary files /dev/null and b/CubeIT/images/silk/hourglass_link.png differ
diff --git a/CubeIT/images/silk/house.png b/CubeIT/images/silk/house.png
new file mode 100644 (file)
index 0000000..fed6221
Binary files /dev/null and b/CubeIT/images/silk/house.png differ
diff --git a/CubeIT/images/silk/house_go.png b/CubeIT/images/silk/house_go.png
new file mode 100644 (file)
index 0000000..5457dbd
Binary files /dev/null and b/CubeIT/images/silk/house_go.png differ
diff --git a/CubeIT/images/silk/house_link.png b/CubeIT/images/silk/house_link.png
new file mode 100644 (file)
index 0000000..be2c271
Binary files /dev/null and b/CubeIT/images/silk/house_link.png differ
diff --git a/CubeIT/images/silk/html.png b/CubeIT/images/silk/html.png
new file mode 100644 (file)
index 0000000..55d1072
Binary files /dev/null and b/CubeIT/images/silk/html.png differ
diff --git a/CubeIT/images/silk/html_add.png b/CubeIT/images/silk/html_add.png
new file mode 100644 (file)
index 0000000..f1c08b7
Binary files /dev/null and b/CubeIT/images/silk/html_add.png differ
diff --git a/CubeIT/images/silk/html_delete.png b/CubeIT/images/silk/html_delete.png
new file mode 100644 (file)
index 0000000..1bd2848
Binary files /dev/null and b/CubeIT/images/silk/html_delete.png differ
diff --git a/CubeIT/images/silk/html_go.png b/CubeIT/images/silk/html_go.png
new file mode 100644 (file)
index 0000000..a95cede
Binary files /dev/null and b/CubeIT/images/silk/html_go.png differ
diff --git a/CubeIT/images/silk/html_valid.png b/CubeIT/images/silk/html_valid.png
new file mode 100644 (file)
index 0000000..71cec92
Binary files /dev/null and b/CubeIT/images/silk/html_valid.png differ
diff --git a/CubeIT/images/silk/image.png b/CubeIT/images/silk/image.png
new file mode 100644 (file)
index 0000000..fc3c393
Binary files /dev/null and b/CubeIT/images/silk/image.png differ
diff --git a/CubeIT/images/silk/image_add.png b/CubeIT/images/silk/image_add.png
new file mode 100644 (file)
index 0000000..fc5d613
Binary files /dev/null and b/CubeIT/images/silk/image_add.png differ
diff --git a/CubeIT/images/silk/image_delete.png b/CubeIT/images/silk/image_delete.png
new file mode 100644 (file)
index 0000000..c260e1d
Binary files /dev/null and b/CubeIT/images/silk/image_delete.png differ
diff --git a/CubeIT/images/silk/image_edit.png b/CubeIT/images/silk/image_edit.png
new file mode 100644 (file)
index 0000000..0aa4cc6
Binary files /dev/null and b/CubeIT/images/silk/image_edit.png differ
diff --git a/CubeIT/images/silk/image_link.png b/CubeIT/images/silk/image_link.png
new file mode 100644 (file)
index 0000000..4bdb354
Binary files /dev/null and b/CubeIT/images/silk/image_link.png differ
diff --git a/CubeIT/images/silk/images.png b/CubeIT/images/silk/images.png
new file mode 100644 (file)
index 0000000..184860d
Binary files /dev/null and b/CubeIT/images/silk/images.png differ
diff --git a/CubeIT/images/silk/index.html b/CubeIT/images/silk/index.html
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/CubeIT/images/silk/information.png b/CubeIT/images/silk/information.png
new file mode 100644 (file)
index 0000000..12cd1ae
Binary files /dev/null and b/CubeIT/images/silk/information.png differ
diff --git a/CubeIT/images/silk/ipod.png b/CubeIT/images/silk/ipod.png
new file mode 100644 (file)
index 0000000..3f768da
Binary files /dev/null and b/CubeIT/images/silk/ipod.png differ
diff --git a/CubeIT/images/silk/ipod_cast.png b/CubeIT/images/silk/ipod_cast.png
new file mode 100644 (file)
index 0000000..6f6d340
Binary files /dev/null and b/CubeIT/images/silk/ipod_cast.png differ
diff --git a/CubeIT/images/silk/ipod_cast_add.png b/CubeIT/images/silk/ipod_cast_add.png
new file mode 100644 (file)
index 0000000..c3257f5
Binary files /dev/null and b/CubeIT/images/silk/ipod_cast_add.png differ
diff --git a/CubeIT/images/silk/ipod_cast_delete.png b/CubeIT/images/silk/ipod_cast_delete.png
new file mode 100644 (file)
index 0000000..377ab69
Binary files /dev/null and b/CubeIT/images/silk/ipod_cast_delete.png differ
diff --git a/CubeIT/images/silk/ipod_sound.png b/CubeIT/images/silk/ipod_sound.png
new file mode 100644 (file)
index 0000000..fef6e8b
Binary files /dev/null and b/CubeIT/images/silk/ipod_sound.png differ
diff --git a/CubeIT/images/silk/joystick.png b/CubeIT/images/silk/joystick.png
new file mode 100644 (file)
index 0000000..62168f5
Binary files /dev/null and b/CubeIT/images/silk/joystick.png differ
diff --git a/CubeIT/images/silk/joystick_add.png b/CubeIT/images/silk/joystick_add.png
new file mode 100644 (file)
index 0000000..77e7107
Binary files /dev/null and b/CubeIT/images/silk/joystick_add.png differ
diff --git a/CubeIT/images/silk/joystick_delete.png b/CubeIT/images/silk/joystick_delete.png
new file mode 100644 (file)
index 0000000..5d44b59
Binary files /dev/null and b/CubeIT/images/silk/joystick_delete.png differ
diff --git a/CubeIT/images/silk/joystick_error.png b/CubeIT/images/silk/joystick_error.png
new file mode 100644 (file)
index 0000000..b32149e
Binary files /dev/null and b/CubeIT/images/silk/joystick_error.png differ
diff --git a/CubeIT/images/silk/key.png b/CubeIT/images/silk/key.png
new file mode 100644 (file)
index 0000000..4ec1a92
Binary files /dev/null and b/CubeIT/images/silk/key.png differ
diff --git a/CubeIT/images/silk/key_add.png b/CubeIT/images/silk/key_add.png
new file mode 100644 (file)
index 0000000..d407403
Binary files /dev/null and b/CubeIT/images/silk/key_add.png differ
diff --git a/CubeIT/images/silk/key_delete.png b/CubeIT/images/silk/key_delete.png
new file mode 100644 (file)
index 0000000..00dec80
Binary files /dev/null and b/CubeIT/images/silk/key_delete.png differ
diff --git a/CubeIT/images/silk/key_go.png b/CubeIT/images/silk/key_go.png
new file mode 100644 (file)
index 0000000..30b0dc3
Binary files /dev/null and b/CubeIT/images/silk/key_go.png differ
diff --git a/CubeIT/images/silk/keyboard.png b/CubeIT/images/silk/keyboard.png
new file mode 100644 (file)
index 0000000..898d402
Binary files /dev/null and b/CubeIT/images/silk/keyboard.png differ
diff --git a/CubeIT/images/silk/keyboard_add.png b/CubeIT/images/silk/keyboard_add.png
new file mode 100644 (file)
index 0000000..26938dd
Binary files /dev/null and b/CubeIT/images/silk/keyboard_add.png differ
diff --git a/CubeIT/images/silk/keyboard_delete.png b/CubeIT/images/silk/keyboard_delete.png
new file mode 100644 (file)
index 0000000..1786ed5
Binary files /dev/null and b/CubeIT/images/silk/keyboard_delete.png differ
diff --git a/CubeIT/images/silk/keyboard_magnify.png b/CubeIT/images/silk/keyboard_magnify.png
new file mode 100644 (file)
index 0000000..928fc17
Binary files /dev/null and b/CubeIT/images/silk/keyboard_magnify.png differ
diff --git a/CubeIT/images/silk/layers.png b/CubeIT/images/silk/layers.png
new file mode 100644 (file)
index 0000000..00818f6
Binary files /dev/null and b/CubeIT/images/silk/layers.png differ
diff --git a/CubeIT/images/silk/layout.png b/CubeIT/images/silk/layout.png
new file mode 100644 (file)
index 0000000..ea086b0
Binary files /dev/null and b/CubeIT/images/silk/layout.png differ
diff --git a/CubeIT/images/silk/layout_add.png b/CubeIT/images/silk/layout_add.png
new file mode 100644 (file)
index 0000000..6203722
Binary files /dev/null and b/CubeIT/images/silk/layout_add.png differ
diff --git a/CubeIT/images/silk/layout_content.png b/CubeIT/images/silk/layout_content.png
new file mode 100644 (file)
index 0000000..b4aaad9
Binary files /dev/null and b/CubeIT/images/silk/layout_content.png differ
diff --git a/CubeIT/images/silk/layout_delete.png b/CubeIT/images/silk/layout_delete.png
new file mode 100644 (file)
index 0000000..4bd45f1
Binary files /dev/null and b/CubeIT/images/silk/layout_delete.png differ
diff --git a/CubeIT/images/silk/layout_edit.png b/CubeIT/images/silk/layout_edit.png
new file mode 100644 (file)
index 0000000..ab3100b
Binary files /dev/null and b/CubeIT/images/silk/layout_edit.png differ
diff --git a/CubeIT/images/silk/layout_error.png b/CubeIT/images/silk/layout_error.png
new file mode 100644 (file)
index 0000000..5b5acea
Binary files /dev/null and b/CubeIT/images/silk/layout_error.png differ
diff --git a/CubeIT/images/silk/layout_header.png b/CubeIT/images/silk/layout_header.png
new file mode 100644 (file)
index 0000000..c6ea7f2
Binary files /dev/null and b/CubeIT/images/silk/layout_header.png differ
diff --git a/CubeIT/images/silk/layout_link.png b/CubeIT/images/silk/layout_link.png
new file mode 100644 (file)
index 0000000..3445d42
Binary files /dev/null and b/CubeIT/images/silk/layout_link.png differ
diff --git a/CubeIT/images/silk/layout_sidebar.png b/CubeIT/images/silk/layout_sidebar.png
new file mode 100644 (file)
index 0000000..3be27bb
Binary files /dev/null and b/CubeIT/images/silk/layout_sidebar.png differ
diff --git a/CubeIT/images/silk/lightbulb.png b/CubeIT/images/silk/lightbulb.png
new file mode 100644 (file)
index 0000000..d22fde8
Binary files /dev/null and b/CubeIT/images/silk/lightbulb.png differ
diff --git a/CubeIT/images/silk/lightbulb_add.png b/CubeIT/images/silk/lightbulb_add.png
new file mode 100644 (file)
index 0000000..0dd848b
Binary files /dev/null and b/CubeIT/images/silk/lightbulb_add.png differ
diff --git a/CubeIT/images/silk/lightbulb_delete.png b/CubeIT/images/silk/lightbulb_delete.png
new file mode 100644 (file)
index 0000000..f4781da
Binary files /dev/null and b/CubeIT/images/silk/lightbulb_delete.png differ
diff --git a/CubeIT/images/silk/lightbulb_off.png b/CubeIT/images/silk/lightbulb_off.png
new file mode 100644 (file)
index 0000000..e95b8c5
Binary files /dev/null and b/CubeIT/images/silk/lightbulb_off.png differ
diff --git a/CubeIT/images/silk/lightning.png b/CubeIT/images/silk/lightning.png
new file mode 100644 (file)
index 0000000..9680afd
Binary files /dev/null and b/CubeIT/images/silk/lightning.png differ
diff --git a/CubeIT/images/silk/lightning_add.png b/CubeIT/images/silk/lightning_add.png
new file mode 100644 (file)
index 0000000..dac3c90
Binary files /dev/null and b/CubeIT/images/silk/lightning_add.png differ
diff --git a/CubeIT/images/silk/lightning_delete.png b/CubeIT/images/silk/lightning_delete.png
new file mode 100644 (file)
index 0000000..dfe2770
Binary files /dev/null and b/CubeIT/images/silk/lightning_delete.png differ
diff --git a/CubeIT/images/silk/lightning_go.png b/CubeIT/images/silk/lightning_go.png
new file mode 100644 (file)
index 0000000..29039e6
Binary files /dev/null and b/CubeIT/images/silk/lightning_go.png differ
diff --git a/CubeIT/images/silk/link.png b/CubeIT/images/silk/link.png
new file mode 100644 (file)
index 0000000..25eacb7
Binary files /dev/null and b/CubeIT/images/silk/link.png differ
diff --git a/CubeIT/images/silk/link_add.png b/CubeIT/images/silk/link_add.png
new file mode 100644 (file)
index 0000000..00be352
Binary files /dev/null and b/CubeIT/images/silk/link_add.png differ
diff --git a/CubeIT/images/silk/link_break.png b/CubeIT/images/silk/link_break.png
new file mode 100644 (file)
index 0000000..5235753
Binary files /dev/null and b/CubeIT/images/silk/link_break.png differ
diff --git a/CubeIT/images/silk/link_delete.png b/CubeIT/images/silk/link_delete.png
new file mode 100644 (file)
index 0000000..f66e297
Binary files /dev/null and b/CubeIT/images/silk/link_delete.png differ
diff --git a/CubeIT/images/silk/link_edit.png b/CubeIT/images/silk/link_edit.png
new file mode 100644 (file)
index 0000000..5b3aed0
Binary files /dev/null and b/CubeIT/images/silk/link_edit.png differ
diff --git a/CubeIT/images/silk/link_error.png b/CubeIT/images/silk/link_error.png
new file mode 100644 (file)
index 0000000..ab694b1
Binary files /dev/null and b/CubeIT/images/silk/link_error.png differ
diff --git a/CubeIT/images/silk/link_go.png b/CubeIT/images/silk/link_go.png
new file mode 100644 (file)
index 0000000..ae8cae8
Binary files /dev/null and b/CubeIT/images/silk/link_go.png differ
diff --git a/CubeIT/images/silk/lock.png b/CubeIT/images/silk/lock.png
new file mode 100644 (file)
index 0000000..2ebc4f6
Binary files /dev/null and b/CubeIT/images/silk/lock.png differ
diff --git a/CubeIT/images/silk/lock_add.png b/CubeIT/images/silk/lock_add.png
new file mode 100644 (file)
index 0000000..a7b566b
Binary files /dev/null and b/CubeIT/images/silk/lock_add.png differ
diff --git a/CubeIT/images/silk/lock_break.png b/CubeIT/images/silk/lock_break.png
new file mode 100644 (file)
index 0000000..13578ab
Binary files /dev/null and b/CubeIT/images/silk/lock_break.png differ
diff --git a/CubeIT/images/silk/lock_delete.png b/CubeIT/images/silk/lock_delete.png
new file mode 100644 (file)
index 0000000..ecb50a9
Binary files /dev/null and b/CubeIT/images/silk/lock_delete.png differ
diff --git a/CubeIT/images/silk/lock_edit.png b/CubeIT/images/silk/lock_edit.png
new file mode 100644 (file)
index 0000000..116aa5b
Binary files /dev/null and b/CubeIT/images/silk/lock_edit.png differ
diff --git a/CubeIT/images/silk/lock_go.png b/CubeIT/images/silk/lock_go.png
new file mode 100644 (file)
index 0000000..8c7c89b
Binary files /dev/null and b/CubeIT/images/silk/lock_go.png differ
diff --git a/CubeIT/images/silk/lock_open.png b/CubeIT/images/silk/lock_open.png
new file mode 100644 (file)
index 0000000..a471765
Binary files /dev/null and b/CubeIT/images/silk/lock_open.png differ
diff --git a/CubeIT/images/silk/lorry.png b/CubeIT/images/silk/lorry.png
new file mode 100644 (file)
index 0000000..8f95f5a
Binary files /dev/null and b/CubeIT/images/silk/lorry.png differ
diff --git a/CubeIT/images/silk/lorry_add.png b/CubeIT/images/silk/lorry_add.png
new file mode 100644 (file)
index 0000000..a2c5124
Binary files /dev/null and b/CubeIT/images/silk/lorry_add.png differ
diff --git a/CubeIT/images/silk/lorry_delete.png b/CubeIT/images/silk/lorry_delete.png
new file mode 100644 (file)
index 0000000..66217f5
Binary files /dev/null and b/CubeIT/images/silk/lorry_delete.png differ
diff --git a/CubeIT/images/silk/lorry_error.png b/CubeIT/images/silk/lorry_error.png
new file mode 100644 (file)
index 0000000..3619ead
Binary files /dev/null and b/CubeIT/images/silk/lorry_error.png differ
diff --git a/CubeIT/images/silk/lorry_flatbed.png b/CubeIT/images/silk/lorry_flatbed.png
new file mode 100644 (file)
index 0000000..8b20f55
Binary files /dev/null and b/CubeIT/images/silk/lorry_flatbed.png differ
diff --git a/CubeIT/images/silk/lorry_go.png b/CubeIT/images/silk/lorry_go.png
new file mode 100644 (file)
index 0000000..1c296a6
Binary files /dev/null and b/CubeIT/images/silk/lorry_go.png differ
diff --git a/CubeIT/images/silk/lorry_link.png b/CubeIT/images/silk/lorry_link.png
new file mode 100644 (file)
index 0000000..5e6663e
Binary files /dev/null and b/CubeIT/images/silk/lorry_link.png differ
diff --git a/CubeIT/images/silk/magifier_zoom_out.png b/CubeIT/images/silk/magifier_zoom_out.png
new file mode 100644 (file)
index 0000000..81f2819
Binary files /dev/null and b/CubeIT/images/silk/magifier_zoom_out.png differ
diff --git a/CubeIT/images/silk/magnifier.png b/CubeIT/images/silk/magnifier.png
new file mode 100644 (file)
index 0000000..cf3d97f
Binary files /dev/null and b/CubeIT/images/silk/magnifier.png differ
diff --git a/CubeIT/images/silk/magnifier_zoom_in.png b/CubeIT/images/silk/magnifier_zoom_in.png
new file mode 100644 (file)
index 0000000..af4fe07
Binary files /dev/null and b/CubeIT/images/silk/magnifier_zoom_in.png differ
diff --git a/CubeIT/images/silk/male.png b/CubeIT/images/silk/male.png
new file mode 100644 (file)
index 0000000..25d6ea9
Binary files /dev/null and b/CubeIT/images/silk/male.png differ
diff --git a/CubeIT/images/silk/map.png b/CubeIT/images/silk/map.png
new file mode 100644 (file)
index 0000000..f90ef25
Binary files /dev/null and b/CubeIT/images/silk/map.png differ
diff --git a/CubeIT/images/silk/map_add.png b/CubeIT/images/silk/map_add.png
new file mode 100644 (file)
index 0000000..2b72da0
Binary files /dev/null and b/CubeIT/images/silk/map_add.png differ
diff --git a/CubeIT/images/silk/map_delete.png b/CubeIT/images/silk/map_delete.png
new file mode 100644 (file)
index 0000000..e74402f
Binary files /dev/null and b/CubeIT/images/silk/map_delete.png differ
diff --git a/CubeIT/images/silk/map_edit.png b/CubeIT/images/silk/map_edit.png
new file mode 100644 (file)
index 0000000..93d4d7e
Binary files /dev/null and b/CubeIT/images/silk/map_edit.png differ
diff --git a/CubeIT/images/silk/map_go.png b/CubeIT/images/silk/map_go.png
new file mode 100644 (file)
index 0000000..11eab26
Binary files /dev/null and b/CubeIT/images/silk/map_go.png differ
diff --git a/CubeIT/images/silk/map_magnify.png b/CubeIT/images/silk/map_magnify.png
new file mode 100644 (file)
index 0000000..7184c9d
Binary files /dev/null and b/CubeIT/images/silk/map_magnify.png differ
diff --git a/CubeIT/images/silk/medal_bronze_1.png b/CubeIT/images/silk/medal_bronze_1.png
new file mode 100644 (file)
index 0000000..5f8a6d6
Binary files /dev/null and b/CubeIT/images/silk/medal_bronze_1.png differ
diff --git a/CubeIT/images/silk/medal_bronze_2.png b/CubeIT/images/silk/medal_bronze_2.png
new file mode 100644 (file)
index 0000000..623d68c
Binary files /dev/null and b/CubeIT/images/silk/medal_bronze_2.png differ
diff --git a/CubeIT/images/silk/medal_bronze_3.png b/CubeIT/images/silk/medal_bronze_3.png
new file mode 100644 (file)
index 0000000..ed3f43e
Binary files /dev/null and b/CubeIT/images/silk/medal_bronze_3.png differ
diff --git a/CubeIT/images/silk/medal_bronze_add.png b/CubeIT/images/silk/medal_bronze_add.png
new file mode 100644 (file)
index 0000000..8487b2c
Binary files /dev/null and b/CubeIT/images/silk/medal_bronze_add.png differ
diff --git a/CubeIT/images/silk/medal_bronze_delete.png b/CubeIT/images/silk/medal_bronze_delete.png
new file mode 100644 (file)
index 0000000..d32aed7
Binary files /dev/null and b/CubeIT/images/silk/medal_bronze_delete.png differ
diff --git a/CubeIT/images/silk/medal_gold_1.png b/CubeIT/images/silk/medal_gold_1.png
new file mode 100644 (file)
index 0000000..87584dc
Binary files /dev/null and b/CubeIT/images/silk/medal_gold_1.png differ
diff --git a/CubeIT/images/silk/medal_gold_2.png b/CubeIT/images/silk/medal_gold_2.png
new file mode 100644 (file)
index 0000000..fa3a15d
Binary files /dev/null and b/CubeIT/images/silk/medal_gold_2.png differ
diff --git a/CubeIT/images/silk/medal_gold_3.png b/CubeIT/images/silk/medal_gold_3.png
new file mode 100644 (file)
index 0000000..ef1b08b
Binary files /dev/null and b/CubeIT/images/silk/medal_gold_3.png differ
diff --git a/CubeIT/images/silk/medal_gold_add.png b/CubeIT/images/silk/medal_gold_add.png
new file mode 100644 (file)
index 0000000..dcade0d
Binary files /dev/null and b/CubeIT/images/silk/medal_gold_add.png differ
diff --git a/CubeIT/images/silk/medal_gold_delete.png b/CubeIT/images/silk/medal_gold_delete.png
new file mode 100644 (file)
index 0000000..84b06d5
Binary files /dev/null and b/CubeIT/images/silk/medal_gold_delete.png differ
diff --git a/CubeIT/images/silk/medal_silver_1.png b/CubeIT/images/silk/medal_silver_1.png
new file mode 100644 (file)
index 0000000..75a64da
Binary files /dev/null and b/CubeIT/images/silk/medal_silver_1.png differ
diff --git a/CubeIT/images/silk/medal_silver_2.png b/CubeIT/images/silk/medal_silver_2.png
new file mode 100644 (file)
index 0000000..2e0fe75
Binary files /dev/null and b/CubeIT/images/silk/medal_silver_2.png differ
diff --git a/CubeIT/images/silk/medal_silver_3.png b/CubeIT/images/silk/medal_silver_3.png
new file mode 100644 (file)
index 0000000..e385b54
Binary files /dev/null and b/CubeIT/images/silk/medal_silver_3.png differ
diff --git a/CubeIT/images/silk/medal_silver_add.png b/CubeIT/images/silk/medal_silver_add.png
new file mode 100644 (file)
index 0000000..b0633fa
Binary files /dev/null and b/CubeIT/images/silk/medal_silver_add.png differ
diff --git a/CubeIT/images/silk/medal_silver_delete.png b/CubeIT/images/silk/medal_silver_delete.png
new file mode 100644 (file)
index 0000000..06cab46
Binary files /dev/null and b/CubeIT/images/silk/medal_silver_delete.png differ
diff --git a/CubeIT/images/silk/money.png b/CubeIT/images/silk/money.png
new file mode 100644 (file)
index 0000000..42c52d0
Binary files /dev/null and b/CubeIT/images/silk/money.png differ
diff --git a/CubeIT/images/silk/money_add.png b/CubeIT/images/silk/money_add.png
new file mode 100644 (file)
index 0000000..588fa9d
Binary files /dev/null and b/CubeIT/images/silk/money_add.png differ
diff --git a/CubeIT/images/silk/money_delete.png b/CubeIT/images/silk/money_delete.png
new file mode 100644 (file)
index 0000000..eae2c52
Binary files /dev/null and b/CubeIT/images/silk/money_delete.png differ
diff --git a/CubeIT/images/silk/money_dollar.png b/CubeIT/images/silk/money_dollar.png
new file mode 100644 (file)
index 0000000..59af163
Binary files /dev/null and b/CubeIT/images/silk/money_dollar.png differ
diff --git a/CubeIT/images/silk/money_euro.png b/CubeIT/images/silk/money_euro.png
new file mode 100644 (file)
index 0000000..b322ba9
Binary files /dev/null and b/CubeIT/images/silk/money_euro.png differ
diff --git a/CubeIT/images/silk/money_pound.png b/CubeIT/images/silk/money_pound.png
new file mode 100644 (file)
index 0000000..b711364
Binary files /dev/null and b/CubeIT/images/silk/money_pound.png differ
diff --git a/CubeIT/images/silk/money_yen.png b/CubeIT/images/silk/money_yen.png
new file mode 100644 (file)
index 0000000..228a677
Binary files /dev/null and b/CubeIT/images/silk/money_yen.png differ
diff --git a/CubeIT/images/silk/monitor.png b/CubeIT/images/silk/monitor.png
new file mode 100644 (file)
index 0000000..d040bd0
Binary files /dev/null and b/CubeIT/images/silk/monitor.png differ
diff --git a/CubeIT/images/silk/monitor_add.png b/CubeIT/images/silk/monitor_add.png
new file mode 100644 (file)
index 0000000..a818066
Binary files /dev/null and b/CubeIT/images/silk/monitor_add.png differ
diff --git a/CubeIT/images/silk/monitor_delete.png b/CubeIT/images/silk/monitor_delete.png
new file mode 100644 (file)
index 0000000..3733256
Binary files /dev/null and b/CubeIT/images/silk/monitor_delete.png differ
diff --git a/CubeIT/images/silk/monitor_edit.png b/CubeIT/images/silk/monitor_edit.png
new file mode 100644 (file)
index 0000000..f772c56
Binary files /dev/null and b/CubeIT/images/silk/monitor_edit.png differ
diff --git a/CubeIT/images/silk/monitor_error.png b/CubeIT/images/silk/monitor_error.png
new file mode 100644 (file)
index 0000000..270c501
Binary files /dev/null and b/CubeIT/images/silk/monitor_error.png differ
diff --git a/CubeIT/images/silk/monitor_go.png b/CubeIT/images/silk/monitor_go.png
new file mode 100644 (file)
index 0000000..8af3eda
Binary files /dev/null and b/CubeIT/images/silk/monitor_go.png differ
diff --git a/CubeIT/images/silk/monitor_lightning.png b/CubeIT/images/silk/monitor_lightning.png
new file mode 100644 (file)
index 0000000..06e53a9
Binary files /dev/null and b/CubeIT/images/silk/monitor_lightning.png differ
diff --git a/CubeIT/images/silk/monitor_link.png b/CubeIT/images/silk/monitor_link.png
new file mode 100644 (file)
index 0000000..a014b02
Binary files /dev/null and b/CubeIT/images/silk/monitor_link.png differ
diff --git a/CubeIT/images/silk/mouse.png b/CubeIT/images/silk/mouse.png
new file mode 100644 (file)
index 0000000..63a92fa
Binary files /dev/null and b/CubeIT/images/silk/mouse.png differ
diff --git a/CubeIT/images/silk/mouse_add.png b/CubeIT/images/silk/mouse_add.png
new file mode 100644 (file)
index 0000000..65bcab5
Binary files /dev/null and b/CubeIT/images/silk/mouse_add.png differ
diff --git a/CubeIT/images/silk/mouse_delete.png b/CubeIT/images/silk/mouse_delete.png
new file mode 100644 (file)
index 0000000..7286566
Binary files /dev/null and b/CubeIT/images/silk/mouse_delete.png differ
diff --git a/CubeIT/images/silk/mouse_error.png b/CubeIT/images/silk/mouse_error.png
new file mode 100644 (file)
index 0000000..bcc1562
Binary files /dev/null and b/CubeIT/images/silk/mouse_error.png differ
diff --git a/CubeIT/images/silk/music.png b/CubeIT/images/silk/music.png
new file mode 100644 (file)
index 0000000..a8b3ede
Binary files /dev/null and b/CubeIT/images/silk/music.png differ
diff --git a/CubeIT/images/silk/new.png b/CubeIT/images/silk/new.png
new file mode 100644 (file)
index 0000000..6a9bf03
Binary files /dev/null and b/CubeIT/images/silk/new.png differ
diff --git a/CubeIT/images/silk/newspaper.png b/CubeIT/images/silk/newspaper.png
new file mode 100644 (file)
index 0000000..6a2ecce
Binary files /dev/null and b/CubeIT/images/silk/newspaper.png differ
diff --git a/CubeIT/images/silk/newspaper_add.png b/CubeIT/images/silk/newspaper_add.png
new file mode 100644 (file)
index 0000000..8140e8c
Binary files /dev/null and b/CubeIT/images/silk/newspaper_add.png differ
diff --git a/CubeIT/images/silk/newspaper_delete.png b/CubeIT/images/silk/newspaper_delete.png
new file mode 100644 (file)
index 0000000..bde96ce
Binary files /dev/null and b/CubeIT/images/silk/newspaper_delete.png differ
diff --git a/CubeIT/images/silk/newspaper_go.png b/CubeIT/images/silk/newspaper_go.png
new file mode 100644 (file)
index 0000000..fd61428
Binary files /dev/null and b/CubeIT/images/silk/newspaper_go.png differ
diff --git a/CubeIT/images/silk/newspaper_link.png b/CubeIT/images/silk/newspaper_link.png
new file mode 100644 (file)
index 0000000..99e57cb
Binary files /dev/null and b/CubeIT/images/silk/newspaper_link.png differ
diff --git a/CubeIT/images/silk/note.png b/CubeIT/images/silk/note.png
new file mode 100644 (file)
index 0000000..244e6ca
Binary files /dev/null and b/CubeIT/images/silk/note.png differ
diff --git a/CubeIT/images/silk/note_add.png b/CubeIT/images/silk/note_add.png
new file mode 100644 (file)
index 0000000..abdad91
Binary files /dev/null and b/CubeIT/images/silk/note_add.png differ
diff --git a/CubeIT/images/silk/note_delete.png b/CubeIT/images/silk/note_delete.png
new file mode 100644 (file)
index 0000000..8a1f0ff
Binary files /dev/null and b/CubeIT/images/silk/note_delete.png differ
diff --git a/CubeIT/images/silk/note_edit.png b/CubeIT/images/silk/note_edit.png
new file mode 100644 (file)
index 0000000..291bfc7
Binary files /dev/null and b/CubeIT/images/silk/note_edit.png differ
diff --git a/CubeIT/images/silk/note_error.png b/CubeIT/images/silk/note_error.png
new file mode 100644 (file)
index 0000000..896dadf
Binary files /dev/null and b/CubeIT/images/silk/note_error.png differ
diff --git a/CubeIT/images/silk/note_go.png b/CubeIT/images/silk/note_go.png
new file mode 100644 (file)
index 0000000..49e54fd
Binary files /dev/null and b/CubeIT/images/silk/note_go.png differ
diff --git a/CubeIT/images/silk/overlays.png b/CubeIT/images/silk/overlays.png
new file mode 100644 (file)
index 0000000..ab3100b
Binary files /dev/null and b/CubeIT/images/silk/overlays.png differ
diff --git a/CubeIT/images/silk/package.png b/CubeIT/images/silk/package.png
new file mode 100644 (file)
index 0000000..da3c2a2
Binary files /dev/null and b/CubeIT/images/silk/package.png differ
diff --git a/CubeIT/images/silk/package_add.png b/CubeIT/images/silk/package_add.png
new file mode 100644 (file)
index 0000000..9c8a9da
Binary files /dev/null and b/CubeIT/images/silk/package_add.png differ
diff --git a/CubeIT/images/silk/package_delete.png b/CubeIT/images/silk/package_delete.png
new file mode 100644 (file)
index 0000000..86f7fbc
Binary files /dev/null and b/CubeIT/images/silk/package_delete.png differ
diff --git a/CubeIT/images/silk/package_go.png b/CubeIT/images/silk/package_go.png
new file mode 100644 (file)
index 0000000..aace63a
Binary files /dev/null and b/CubeIT/images/silk/package_go.png differ
diff --git a/CubeIT/images/silk/package_green.png b/CubeIT/images/silk/package_green.png
new file mode 100644 (file)
index 0000000..25b28bb
Binary files /dev/null and b/CubeIT/images/silk/package_green.png differ
diff --git a/CubeIT/images/silk/package_link.png b/CubeIT/images/silk/package_link.png
new file mode 100644 (file)
index 0000000..48e7ab5
Binary files /dev/null and b/CubeIT/images/silk/package_link.png differ
diff --git a/CubeIT/images/silk/page.png b/CubeIT/images/silk/page.png
new file mode 100644 (file)
index 0000000..03ddd79
Binary files /dev/null and b/CubeIT/images/silk/page.png differ
diff --git a/CubeIT/images/silk/page_add.png b/CubeIT/images/silk/page_add.png
new file mode 100644 (file)
index 0000000..d5bfa07
Binary files /dev/null and b/CubeIT/images/silk/page_add.png differ
diff --git a/CubeIT/images/silk/page_attach.png b/CubeIT/images/silk/page_attach.png
new file mode 100644 (file)
index 0000000..89ee2da
Binary files /dev/null and b/CubeIT/images/silk/page_attach.png differ
diff --git a/CubeIT/images/silk/page_code.png b/CubeIT/images/silk/page_code.png
new file mode 100644 (file)
index 0000000..f7ea904
Binary files /dev/null and b/CubeIT/images/silk/page_code.png differ
diff --git a/CubeIT/images/silk/page_copy.png b/CubeIT/images/silk/page_copy.png
new file mode 100644 (file)
index 0000000..195dc6d
Binary files /dev/null and b/CubeIT/images/silk/page_copy.png differ
diff --git a/CubeIT/images/silk/page_delete.png b/CubeIT/images/silk/page_delete.png
new file mode 100644 (file)
index 0000000..3141467
Binary files /dev/null and b/CubeIT/images/silk/page_delete.png differ
diff --git a/CubeIT/images/silk/page_edit.png b/CubeIT/images/silk/page_edit.png
new file mode 100644 (file)
index 0000000..046811e
Binary files /dev/null and b/CubeIT/images/silk/page_edit.png differ
diff --git a/CubeIT/images/silk/page_error.png b/CubeIT/images/silk/page_error.png
new file mode 100644 (file)
index 0000000..f07f449
Binary files /dev/null and b/CubeIT/images/silk/page_error.png differ
diff --git a/CubeIT/images/silk/page_excel.png b/CubeIT/images/silk/page_excel.png
new file mode 100644 (file)
index 0000000..eb6158e
Binary files /dev/null and b/CubeIT/images/silk/page_excel.png differ
diff --git a/CubeIT/images/silk/page_find.png b/CubeIT/images/silk/page_find.png
new file mode 100644 (file)
index 0000000..2f19388
Binary files /dev/null and b/CubeIT/images/silk/page_find.png differ
diff --git a/CubeIT/images/silk/page_gear.png b/CubeIT/images/silk/page_gear.png
new file mode 100644 (file)
index 0000000..8e83281
Binary files /dev/null and b/CubeIT/images/silk/page_gear.png differ
diff --git a/CubeIT/images/silk/page_go.png b/CubeIT/images/silk/page_go.png
new file mode 100644 (file)
index 0000000..80fe1ed
Binary files /dev/null and b/CubeIT/images/silk/page_go.png differ
diff --git a/CubeIT/images/silk/page_green.png b/CubeIT/images/silk/page_green.png
new file mode 100644 (file)
index 0000000..de8e003
Binary files /dev/null and b/CubeIT/images/silk/page_green.png differ
diff --git a/CubeIT/images/silk/page_key.png b/CubeIT/images/silk/page_key.png
new file mode 100644 (file)
index 0000000..d6626cb
Binary files /dev/null and b/CubeIT/images/silk/page_key.png differ
diff --git a/CubeIT/images/silk/page_lightning.png b/CubeIT/images/silk/page_lightning.png
new file mode 100644 (file)
index 0000000..7e56870
Binary files /dev/null and b/CubeIT/images/silk/page_lightning.png differ
diff --git a/CubeIT/images/silk/page_link.png b/CubeIT/images/silk/page_link.png
new file mode 100644 (file)
index 0000000..312eab0
Binary files /dev/null and b/CubeIT/images/silk/page_link.png differ
diff --git a/CubeIT/images/silk/page_paintbrush.png b/CubeIT/images/silk/page_paintbrush.png
new file mode 100644 (file)
index 0000000..246a2f0
Binary files /dev/null and b/CubeIT/images/silk/page_paintbrush.png differ
diff --git a/CubeIT/images/silk/page_paste.png b/CubeIT/images/silk/page_paste.png
new file mode 100644 (file)
index 0000000..968f073
Binary files /dev/null and b/CubeIT/images/silk/page_paste.png differ
diff --git a/CubeIT/images/silk/page_red.png b/CubeIT/images/silk/page_red.png
new file mode 100644 (file)
index 0000000..0b18247
Binary files /dev/null and b/CubeIT/images/silk/page_red.png differ
diff --git a/CubeIT/images/silk/page_refresh.png b/CubeIT/images/silk/page_refresh.png
new file mode 100644 (file)
index 0000000..cf347c7
Binary files /dev/null and b/CubeIT/images/silk/page_refresh.png differ
diff --git a/CubeIT/images/silk/page_save.png b/CubeIT/images/silk/page_save.png
new file mode 100644 (file)
index 0000000..caea546
Binary files /dev/null and b/CubeIT/images/silk/page_save.png differ
diff --git a/CubeIT/images/silk/page_white.png b/CubeIT/images/silk/page_white.png
new file mode 100644 (file)
index 0000000..8b8b1ca
Binary files /dev/null and b/CubeIT/images/silk/page_white.png differ
diff --git a/CubeIT/images/silk/page_white_acrobat.png b/CubeIT/images/silk/page_white_acrobat.png
new file mode 100644 (file)
index 0000000..8f8095e
Binary files /dev/null and b/CubeIT/images/silk/page_white_acrobat.png differ
diff --git a/CubeIT/images/silk/page_white_actionscript.png b/CubeIT/images/silk/page_white_actionscript.png
new file mode 100644 (file)
index 0000000..159b240
Binary files /dev/null and b/CubeIT/images/silk/page_white_actionscript.png differ
diff --git a/CubeIT/images/silk/page_white_add.png b/CubeIT/images/silk/page_white_add.png
new file mode 100644 (file)
index 0000000..aa23dde
Binary files /dev/null and b/CubeIT/images/silk/page_white_add.png differ
diff --git a/CubeIT/images/silk/page_white_c.png b/CubeIT/images/silk/page_white_c.png
new file mode 100644 (file)
index 0000000..34a05cc
Binary files /dev/null and b/CubeIT/images/silk/page_white_c.png differ
diff --git a/CubeIT/images/silk/page_white_camera.png b/CubeIT/images/silk/page_white_camera.png
new file mode 100644 (file)
index 0000000..f501a59
Binary files /dev/null and b/CubeIT/images/silk/page_white_camera.png differ
diff --git a/CubeIT/images/silk/page_white_cd.png b/CubeIT/images/silk/page_white_cd.png
new file mode 100644 (file)
index 0000000..848bdaf
Binary files /dev/null and b/CubeIT/images/silk/page_white_cd.png differ
diff --git a/CubeIT/images/silk/page_white_code.png b/CubeIT/images/silk/page_white_code.png
new file mode 100644 (file)
index 0000000..0c76bd1
Binary files /dev/null and b/CubeIT/images/silk/page_white_code.png differ
diff --git a/CubeIT/images/silk/page_white_code_red.png b/CubeIT/images/silk/page_white_code_red.png
new file mode 100644 (file)
index 0000000..87a6914
Binary files /dev/null and b/CubeIT/images/silk/page_white_code_red.png differ
diff --git a/CubeIT/images/silk/page_white_coldfusion.png b/CubeIT/images/silk/page_white_coldfusion.png
new file mode 100644 (file)
index 0000000..c66011f
Binary files /dev/null and b/CubeIT/images/silk/page_white_coldfusion.png differ
diff --git a/CubeIT/images/silk/page_white_compressed.png b/CubeIT/images/silk/page_white_compressed.png
new file mode 100644 (file)
index 0000000..2b6b100
Binary files /dev/null and b/CubeIT/images/silk/page_white_compressed.png differ
diff --git a/CubeIT/images/silk/page_white_copy.png b/CubeIT/images/silk/page_white_copy.png
new file mode 100644 (file)
index 0000000..a9f31a2
Binary files /dev/null and b/CubeIT/images/silk/page_white_copy.png differ
diff --git a/CubeIT/images/silk/page_white_cplusplus.png b/CubeIT/images/silk/page_white_cplusplus.png
new file mode 100644 (file)
index 0000000..a87cf84
Binary files /dev/null and b/CubeIT/images/silk/page_white_cplusplus.png differ
diff --git a/CubeIT/images/silk/page_white_csharp.png b/CubeIT/images/silk/page_white_csharp.png
new file mode 100644 (file)
index 0000000..ffb8fc9
Binary files /dev/null and b/CubeIT/images/silk/page_white_csharp.png differ
diff --git a/CubeIT/images/silk/page_white_cup.png b/CubeIT/images/silk/page_white_cup.png
new file mode 100644 (file)
index 0000000..0a7d6f4
Binary files /dev/null and b/CubeIT/images/silk/page_white_cup.png differ
diff --git a/CubeIT/images/silk/page_white_database.png b/CubeIT/images/silk/page_white_database.png
new file mode 100644 (file)
index 0000000..bddba1f
Binary files /dev/null and b/CubeIT/images/silk/page_white_database.png differ
diff --git a/CubeIT/images/silk/page_white_delete.png b/CubeIT/images/silk/page_white_delete.png
new file mode 100644 (file)
index 0000000..af1ecaf
Binary files /dev/null and b/CubeIT/images/silk/page_white_delete.png differ
diff --git a/CubeIT/images/silk/page_white_dvd.png b/CubeIT/images/silk/page_white_dvd.png
new file mode 100644 (file)
index 0000000..4cc537a
Binary files /dev/null and b/CubeIT/images/silk/page_white_dvd.png differ
diff --git a/CubeIT/images/silk/page_white_edit.png b/CubeIT/images/silk/page_white_edit.png
new file mode 100644 (file)
index 0000000..b93e776
Binary files /dev/null and b/CubeIT/images/silk/page_white_edit.png differ
diff --git a/CubeIT/images/silk/page_white_error.png b/CubeIT/images/silk/page_white_error.png
new file mode 100644 (file)
index 0000000..9fc5a0a
Binary files /dev/null and b/CubeIT/images/silk/page_white_error.png differ
diff --git a/CubeIT/images/silk/page_white_excel.png b/CubeIT/images/silk/page_white_excel.png
new file mode 100644 (file)
index 0000000..b977d7e
Binary files /dev/null and b/CubeIT/images/silk/page_white_excel.png differ
diff --git a/CubeIT/images/silk/page_white_find.png b/CubeIT/images/silk/page_white_find.png
new file mode 100644 (file)
index 0000000..5818436
Binary files /dev/null and b/CubeIT/images/silk/page_white_find.png differ
diff --git a/CubeIT/images/silk/page_white_flash.png b/CubeIT/images/silk/page_white_flash.png
new file mode 100644 (file)
index 0000000..5769120
Binary files /dev/null and b/CubeIT/images/silk/page_white_flash.png differ
diff --git a/CubeIT/images/silk/page_white_freehand.png b/CubeIT/images/silk/page_white_freehand.png
new file mode 100644 (file)
index 0000000..8d719df
Binary files /dev/null and b/CubeIT/images/silk/page_white_freehand.png differ
diff --git a/CubeIT/images/silk/page_white_gear.png b/CubeIT/images/silk/page_white_gear.png
new file mode 100644 (file)
index 0000000..106f5aa
Binary files /dev/null and b/CubeIT/images/silk/page_white_gear.png differ
diff --git a/CubeIT/images/silk/page_white_get.png b/CubeIT/images/silk/page_white_get.png
new file mode 100644 (file)
index 0000000..e4a1ecb
Binary files /dev/null and b/CubeIT/images/silk/page_white_get.png differ
diff --git a/CubeIT/images/silk/page_white_go.png b/CubeIT/images/silk/page_white_go.png
new file mode 100644 (file)
index 0000000..7e62a92
Binary files /dev/null and b/CubeIT/images/silk/page_white_go.png differ
diff --git a/CubeIT/images/silk/page_white_h.png b/CubeIT/images/silk/page_white_h.png
new file mode 100644 (file)
index 0000000..e902abb
Binary files /dev/null and b/CubeIT/images/silk/page_white_h.png differ
diff --git a/CubeIT/images/silk/page_white_horizontal.png b/CubeIT/images/silk/page_white_horizontal.png
new file mode 100644 (file)
index 0000000..1d2d0a4
Binary files /dev/null and b/CubeIT/images/silk/page_white_horizontal.png differ
diff --git a/CubeIT/images/silk/page_white_key.png b/CubeIT/images/silk/page_white_key.png
new file mode 100644 (file)
index 0000000..d616484
Binary files /dev/null and b/CubeIT/images/silk/page_white_key.png differ
diff --git a/CubeIT/images/silk/page_white_lightning.png b/CubeIT/images/silk/page_white_lightning.png
new file mode 100644 (file)
index 0000000..7215d1e
Binary files /dev/null and b/CubeIT/images/silk/page_white_lightning.png differ
diff --git a/CubeIT/images/silk/page_white_link.png b/CubeIT/images/silk/page_white_link.png
new file mode 100644 (file)
index 0000000..bf7bd1c
Binary files /dev/null and b/CubeIT/images/silk/page_white_link.png differ
diff --git a/CubeIT/images/silk/page_white_magnify.png b/CubeIT/images/silk/page_white_magnify.png
new file mode 100644 (file)
index 0000000..f6b74cc
Binary files /dev/null and b/CubeIT/images/silk/page_white_magnify.png differ
diff --git a/CubeIT/images/silk/page_white_medal.png b/CubeIT/images/silk/page_white_medal.png
new file mode 100644 (file)
index 0000000..d3fffb6
Binary files /dev/null and b/CubeIT/images/silk/page_white_medal.png differ
diff --git a/CubeIT/images/silk/page_white_office.png b/CubeIT/images/silk/page_white_office.png
new file mode 100644 (file)
index 0000000..a65bcb3
Binary files /dev/null and b/CubeIT/images/silk/page_white_office.png differ
diff --git a/CubeIT/images/silk/page_white_paint.png b/CubeIT/images/silk/page_white_paint.png
new file mode 100644 (file)
index 0000000..23a37b8
Binary files /dev/null and b/CubeIT/images/silk/page_white_paint.png differ
diff --git a/CubeIT/images/silk/page_white_paintbrush.png b/CubeIT/images/silk/page_white_paintbrush.png
new file mode 100644 (file)
index 0000000..f907e44
Binary files /dev/null and b/CubeIT/images/silk/page_white_paintbrush.png differ
diff --git a/CubeIT/images/silk/page_white_paste.png b/CubeIT/images/silk/page_white_paste.png
new file mode 100644 (file)
index 0000000..5b2cbb3
Binary files /dev/null and b/CubeIT/images/silk/page_white_paste.png differ
diff --git a/CubeIT/images/silk/page_white_php.png b/CubeIT/images/silk/page_white_php.png
new file mode 100644 (file)
index 0000000..7868a25
Binary files /dev/null and b/CubeIT/images/silk/page_white_php.png differ
diff --git a/CubeIT/images/silk/page_white_picture.png b/CubeIT/images/silk/page_white_picture.png
new file mode 100644 (file)
index 0000000..134b669
Binary files /dev/null and b/CubeIT/images/silk/page_white_picture.png differ
diff --git a/CubeIT/images/silk/page_white_powerpoint.png b/CubeIT/images/silk/page_white_powerpoint.png
new file mode 100644 (file)
index 0000000..c4eff03
Binary files /dev/null and b/CubeIT/images/silk/page_white_powerpoint.png differ
diff --git a/CubeIT/images/silk/page_white_put.png b/CubeIT/images/silk/page_white_put.png
new file mode 100644 (file)
index 0000000..884ffd6
Binary files /dev/null and b/CubeIT/images/silk/page_white_put.png differ
diff --git a/CubeIT/images/silk/page_white_ruby.png b/CubeIT/images/silk/page_white_ruby.png
new file mode 100644 (file)
index 0000000..f59b7c4
Binary files /dev/null and b/CubeIT/images/silk/page_white_ruby.png differ
diff --git a/CubeIT/images/silk/page_white_stack.png b/CubeIT/images/silk/page_white_stack.png
new file mode 100644 (file)
index 0000000..44084ad
Binary files /dev/null and b/CubeIT/images/silk/page_white_stack.png differ
diff --git a/CubeIT/images/silk/page_white_star.png b/CubeIT/images/silk/page_white_star.png
new file mode 100644 (file)
index 0000000..3a1441c
Binary files /dev/null and b/CubeIT/images/silk/page_white_star.png differ
diff --git a/CubeIT/images/silk/page_white_swoosh.png b/CubeIT/images/silk/page_white_swoosh.png
new file mode 100644 (file)
index 0000000..e770829
Binary files /dev/null and b/CubeIT/images/silk/page_white_swoosh.png differ
diff --git a/CubeIT/images/silk/page_white_text.png b/CubeIT/images/silk/page_white_text.png
new file mode 100644 (file)
index 0000000..813f712
Binary files /dev/null and b/CubeIT/images/silk/page_white_text.png differ
diff --git a/CubeIT/images/silk/page_white_text_width.png b/CubeIT/images/silk/page_white_text_width.png
new file mode 100644 (file)
index 0000000..d9cf132
Binary files /dev/null and b/CubeIT/images/silk/page_white_text_width.png differ
diff --git a/CubeIT/images/silk/page_white_tux.png b/CubeIT/images/silk/page_white_tux.png
new file mode 100644 (file)
index 0000000..52699bf
Binary files /dev/null and b/CubeIT/images/silk/page_white_tux.png differ
diff --git a/CubeIT/images/silk/page_white_vector.png b/CubeIT/images/silk/page_white_vector.png
new file mode 100644 (file)
index 0000000..4a05955
Binary files /dev/null and b/CubeIT/images/silk/page_white_vector.png differ
diff --git a/CubeIT/images/silk/page_white_visualstudio.png b/CubeIT/images/silk/page_white_visualstudio.png
new file mode 100644 (file)
index 0000000..a0a433d
Binary files /dev/null and b/CubeIT/images/silk/page_white_visualstudio.png differ
diff --git a/CubeIT/images/silk/page_white_width.png b/CubeIT/images/silk/page_white_width.png
new file mode 100644 (file)
index 0000000..1eb8809
Binary files /dev/null and b/CubeIT/images/silk/page_white_width.png differ
diff --git a/CubeIT/images/silk/page_white_word.png b/CubeIT/images/silk/page_white_word.png
new file mode 100644 (file)
index 0000000..ae8ecbf
Binary files /dev/null and b/CubeIT/images/silk/page_white_word.png differ
diff --git a/CubeIT/images/silk/page_white_world.png b/CubeIT/images/silk/page_white_world.png
new file mode 100644 (file)
index 0000000..6ed2490
Binary files /dev/null and b/CubeIT/images/silk/page_white_world.png differ
diff --git a/CubeIT/images/silk/page_white_wrench.png b/CubeIT/images/silk/page_white_wrench.png
new file mode 100644 (file)
index 0000000..fecadd0
Binary files /dev/null and b/CubeIT/images/silk/page_white_wrench.png differ
diff --git a/CubeIT/images/silk/page_white_zip.png b/CubeIT/images/silk/page_white_zip.png
new file mode 100644 (file)
index 0000000..fd4bbcc
Binary files /dev/null and b/CubeIT/images/silk/page_white_zip.png differ
diff --git a/CubeIT/images/silk/page_word.png b/CubeIT/images/silk/page_word.png
new file mode 100644 (file)
index 0000000..834cdfa
Binary files /dev/null and b/CubeIT/images/silk/page_word.png differ
diff --git a/CubeIT/images/silk/page_world.png b/CubeIT/images/silk/page_world.png
new file mode 100644 (file)
index 0000000..b8895dd
Binary files /dev/null and b/CubeIT/images/silk/page_world.png differ
diff --git a/CubeIT/images/silk/paintbrush.png b/CubeIT/images/silk/paintbrush.png
new file mode 100644 (file)
index 0000000..a3ecf87
Binary files /dev/null and b/CubeIT/images/silk/paintbrush.png differ
diff --git a/CubeIT/images/silk/paintcan.png b/CubeIT/images/silk/paintcan.png
new file mode 100644 (file)
index 0000000..f82a886
Binary files /dev/null and b/CubeIT/images/silk/paintcan.png differ
diff --git a/CubeIT/images/silk/palette.png b/CubeIT/images/silk/palette.png
new file mode 100644 (file)
index 0000000..73c5b3f
Binary files /dev/null and b/CubeIT/images/silk/palette.png differ
diff --git a/CubeIT/images/silk/paste_plain.png b/CubeIT/images/silk/paste_plain.png
new file mode 100644 (file)
index 0000000..c0490eb
Binary files /dev/null and b/CubeIT/images/silk/paste_plain.png differ
diff --git a/CubeIT/images/silk/paste_word.png b/CubeIT/images/silk/paste_word.png
new file mode 100644 (file)
index 0000000..f6b87f8
Binary files /dev/null and b/CubeIT/images/silk/paste_word.png differ
diff --git a/CubeIT/images/silk/pencil.png b/CubeIT/images/silk/pencil.png
new file mode 100644 (file)
index 0000000..0bfecd5
Binary files /dev/null and b/CubeIT/images/silk/pencil.png differ
diff --git a/CubeIT/images/silk/pencil_add.png b/CubeIT/images/silk/pencil_add.png
new file mode 100644 (file)
index 0000000..902bbe6
Binary files /dev/null and b/CubeIT/images/silk/pencil_add.png differ
diff --git a/CubeIT/images/silk/pencil_delete.png b/CubeIT/images/silk/pencil_delete.png
new file mode 100644 (file)
index 0000000..d8944e6
Binary files /dev/null and b/CubeIT/images/silk/pencil_delete.png differ
diff --git a/CubeIT/images/silk/pencil_go.png b/CubeIT/images/silk/pencil_go.png
new file mode 100644 (file)
index 0000000..937bded
Binary files /dev/null and b/CubeIT/images/silk/pencil_go.png differ
diff --git a/CubeIT/images/silk/phone.png b/CubeIT/images/silk/phone.png
new file mode 100644 (file)
index 0000000..c39f162
Binary files /dev/null and b/CubeIT/images/silk/phone.png differ
diff --git a/CubeIT/images/silk/phone_add.png b/CubeIT/images/silk/phone_add.png
new file mode 100644 (file)
index 0000000..d3555e0
Binary files /dev/null and b/CubeIT/images/silk/phone_add.png differ
diff --git a/CubeIT/images/silk/phone_delete.png b/CubeIT/images/silk/phone_delete.png
new file mode 100644 (file)
index 0000000..bbe4f8a
Binary files /dev/null and b/CubeIT/images/silk/phone_delete.png differ
diff --git a/CubeIT/images/silk/phone_sound.png b/CubeIT/images/silk/phone_sound.png
new file mode 100644 (file)
index 0000000..7fdf1c5
Binary files /dev/null and b/CubeIT/images/silk/phone_sound.png differ
diff --git a/CubeIT/images/silk/photo.png b/CubeIT/images/silk/photo.png
new file mode 100644 (file)
index 0000000..6c2aaaa
Binary files /dev/null and b/CubeIT/images/silk/photo.png differ
diff --git a/CubeIT/images/silk/photo_add.png b/CubeIT/images/silk/photo_add.png
new file mode 100644 (file)
index 0000000..63cc355
Binary files /dev/null and b/CubeIT/images/silk/photo_add.png differ
diff --git a/CubeIT/images/silk/photo_delete.png b/CubeIT/images/silk/photo_delete.png
new file mode 100644 (file)
index 0000000..18b67df
Binary files /dev/null and b/CubeIT/images/silk/photo_delete.png differ
diff --git a/CubeIT/images/silk/photo_link.png b/CubeIT/images/silk/photo_link.png
new file mode 100644 (file)
index 0000000..e6bb35f
Binary files /dev/null and b/CubeIT/images/silk/photo_link.png differ
diff --git a/CubeIT/images/silk/photos.png b/CubeIT/images/silk/photos.png
new file mode 100644 (file)
index 0000000..8836fe6
Binary files /dev/null and b/CubeIT/images/silk/photos.png differ
diff --git a/CubeIT/images/silk/picture.png b/CubeIT/images/silk/picture.png
new file mode 100644 (file)
index 0000000..4a158fe
Binary files /dev/null and b/CubeIT/images/silk/picture.png differ
diff --git a/CubeIT/images/silk/picture_add.png b/CubeIT/images/silk/picture_add.png
new file mode 100644 (file)
index 0000000..d6d3f85
Binary files /dev/null and b/CubeIT/images/silk/picture_add.png differ
diff --git a/CubeIT/images/silk/picture_delete.png b/CubeIT/images/silk/picture_delete.png
new file mode 100644 (file)
index 0000000..cca9f53
Binary files /dev/null and b/CubeIT/images/silk/picture_delete.png differ
diff --git a/CubeIT/images/silk/picture_edit.png b/CubeIT/images/silk/picture_edit.png
new file mode 100644 (file)
index 0000000..9a70c34
Binary files /dev/null and b/CubeIT/images/silk/picture_edit.png differ
diff --git a/CubeIT/images/silk/picture_empty.png b/CubeIT/images/silk/picture_empty.png
new file mode 100644 (file)
index 0000000..abd2b9b
Binary files /dev/null and b/CubeIT/images/silk/picture_empty.png differ
diff --git a/CubeIT/images/silk/picture_error.png b/CubeIT/images/silk/picture_error.png
new file mode 100644 (file)
index 0000000..d41d90d
Binary files /dev/null and b/CubeIT/images/silk/picture_error.png differ
diff --git a/CubeIT/images/silk/picture_go.png b/CubeIT/images/silk/picture_go.png
new file mode 100644 (file)
index 0000000..27c63c5
Binary files /dev/null and b/CubeIT/images/silk/picture_go.png differ
diff --git a/CubeIT/images/silk/picture_key.png b/CubeIT/images/silk/picture_key.png
new file mode 100644 (file)
index 0000000..667086c
Binary files /dev/null and b/CubeIT/images/silk/picture_key.png differ
diff --git a/CubeIT/images/silk/picture_link.png b/CubeIT/images/silk/picture_link.png
new file mode 100644 (file)
index 0000000..42dca74
Binary files /dev/null and b/CubeIT/images/silk/picture_link.png differ
diff --git a/CubeIT/images/silk/picture_save.png b/CubeIT/images/silk/picture_save.png
new file mode 100644 (file)
index 0000000..777fb5d
Binary files /dev/null and b/CubeIT/images/silk/picture_save.png differ
diff --git a/CubeIT/images/silk/pictures.png b/CubeIT/images/silk/pictures.png
new file mode 100644 (file)
index 0000000..d9591c1
Binary files /dev/null and b/CubeIT/images/silk/pictures.png differ
diff --git a/CubeIT/images/silk/pilcrow.png b/CubeIT/images/silk/pilcrow.png
new file mode 100644 (file)
index 0000000..95704fb
Binary files /dev/null and b/CubeIT/images/silk/pilcrow.png differ
diff --git a/CubeIT/images/silk/pill.png b/CubeIT/images/silk/pill.png
new file mode 100644 (file)
index 0000000..f2bdef6
Binary files /dev/null and b/CubeIT/images/silk/pill.png differ
diff --git a/CubeIT/images/silk/pill_add.png b/CubeIT/images/silk/pill_add.png
new file mode 100644 (file)
index 0000000..ac9c2df
Binary files /dev/null and b/CubeIT/images/silk/pill_add.png differ
diff --git a/CubeIT/images/silk/pill_delete.png b/CubeIT/images/silk/pill_delete.png
new file mode 100644 (file)
index 0000000..c61592e
Binary files /dev/null and b/CubeIT/images/silk/pill_delete.png differ
diff --git a/CubeIT/images/silk/pill_go.png b/CubeIT/images/silk/pill_go.png
new file mode 100644 (file)
index 0000000..e5c07d4
Binary files /dev/null and b/CubeIT/images/silk/pill_go.png differ
diff --git a/CubeIT/images/silk/plugin.png b/CubeIT/images/silk/plugin.png
new file mode 100644 (file)
index 0000000..6187b15
Binary files /dev/null and b/CubeIT/images/silk/plugin.png differ
diff --git a/CubeIT/images/silk/plugin_add.png b/CubeIT/images/silk/plugin_add.png
new file mode 100644 (file)
index 0000000..ae43690
Binary files /dev/null and b/CubeIT/images/silk/plugin_add.png differ
diff --git a/CubeIT/images/silk/plugin_delete.png b/CubeIT/images/silk/plugin_delete.png
new file mode 100644 (file)
index 0000000..d9c3376
Binary files /dev/null and b/CubeIT/images/silk/plugin_delete.png differ
diff --git a/CubeIT/images/silk/plugin_disabled.png b/CubeIT/images/silk/plugin_disabled.png
new file mode 100644 (file)
index 0000000..f4f6be5
Binary files /dev/null and b/CubeIT/images/silk/plugin_disabled.png differ
diff --git a/CubeIT/images/silk/plugin_edit.png b/CubeIT/images/silk/plugin_edit.png
new file mode 100644 (file)
index 0000000..b6cb0ec
Binary files /dev/null and b/CubeIT/images/silk/plugin_edit.png differ
diff --git a/CubeIT/images/silk/plugin_error.png b/CubeIT/images/silk/plugin_error.png
new file mode 100644 (file)
index 0000000..cff65d7
Binary files /dev/null and b/CubeIT/images/silk/plugin_error.png differ
diff --git a/CubeIT/images/silk/plugin_go.png b/CubeIT/images/silk/plugin_go.png
new file mode 100644 (file)
index 0000000..41da991
Binary files /dev/null and b/CubeIT/images/silk/plugin_go.png differ
diff --git a/CubeIT/images/silk/plugin_link.png b/CubeIT/images/silk/plugin_link.png
new file mode 100644 (file)
index 0000000..445c188
Binary files /dev/null and b/CubeIT/images/silk/plugin_link.png differ
diff --git a/CubeIT/images/silk/printer.png b/CubeIT/images/silk/printer.png
new file mode 100644 (file)
index 0000000..a350d18
Binary files /dev/null and b/CubeIT/images/silk/printer.png differ
diff --git a/CubeIT/images/silk/printer_add.png b/CubeIT/images/silk/printer_add.png
new file mode 100644 (file)
index 0000000..d228d05
Binary files /dev/null and b/CubeIT/images/silk/printer_add.png differ
diff --git a/CubeIT/images/silk/printer_delete.png b/CubeIT/images/silk/printer_delete.png
new file mode 100644 (file)
index 0000000..1d8605f
Binary files /dev/null and b/CubeIT/images/silk/printer_delete.png differ
diff --git a/CubeIT/images/silk/printer_empty.png b/CubeIT/images/silk/printer_empty.png
new file mode 100644 (file)
index 0000000..94e8c16
Binary files /dev/null and b/CubeIT/images/silk/printer_empty.png differ
diff --git a/CubeIT/images/silk/printer_error.png b/CubeIT/images/silk/printer_error.png
new file mode 100644 (file)
index 0000000..279ebb0
Binary files /dev/null and b/CubeIT/images/silk/printer_error.png differ
diff --git a/CubeIT/images/silk/rainbow.png b/CubeIT/images/silk/rainbow.png
new file mode 100644 (file)
index 0000000..5ede989
Binary files /dev/null and b/CubeIT/images/silk/rainbow.png differ
diff --git a/CubeIT/images/silk/report.png b/CubeIT/images/silk/report.png
new file mode 100644 (file)
index 0000000..779ad58
Binary files /dev/null and b/CubeIT/images/silk/report.png differ
diff --git a/CubeIT/images/silk/report_add.png b/CubeIT/images/silk/report_add.png
new file mode 100644 (file)
index 0000000..d5eac9b
Binary files /dev/null and b/CubeIT/images/silk/report_add.png differ
diff --git a/CubeIT/images/silk/report_delete.png b/CubeIT/images/silk/report_delete.png
new file mode 100644 (file)
index 0000000..dcce0b6
Binary files /dev/null and b/CubeIT/images/silk/report_delete.png differ
diff --git a/CubeIT/images/silk/report_disk.png b/CubeIT/images/silk/report_disk.png
new file mode 100644 (file)
index 0000000..1c856cd
Binary files /dev/null and b/CubeIT/images/silk/report_disk.png differ
diff --git a/CubeIT/images/silk/report_edit.png b/CubeIT/images/silk/report_edit.png
new file mode 100644 (file)
index 0000000..c61a6d8
Binary files /dev/null and b/CubeIT/images/silk/report_edit.png differ
diff --git a/CubeIT/images/silk/report_go.png b/CubeIT/images/silk/report_go.png
new file mode 100644 (file)
index 0000000..f35a979
Binary files /dev/null and b/CubeIT/images/silk/report_go.png differ
diff --git a/CubeIT/images/silk/report_key.png b/CubeIT/images/silk/report_key.png
new file mode 100644 (file)
index 0000000..90b758e
Binary files /dev/null and b/CubeIT/images/silk/report_key.png differ
diff --git a/CubeIT/images/silk/report_link.png b/CubeIT/images/silk/report_link.png
new file mode 100644 (file)
index 0000000..23f2611
Binary files /dev/null and b/CubeIT/images/silk/report_link.png differ
diff --git a/CubeIT/images/silk/report_magnify.png b/CubeIT/images/silk/report_magnify.png
new file mode 100644 (file)
index 0000000..aeaa889
Binary files /dev/null and b/CubeIT/images/silk/report_magnify.png differ
diff --git a/CubeIT/images/silk/report_picture.png b/CubeIT/images/silk/report_picture.png
new file mode 100644 (file)
index 0000000..3a9a7e5
Binary files /dev/null and b/CubeIT/images/silk/report_picture.png differ
diff --git a/CubeIT/images/silk/report_user.png b/CubeIT/images/silk/report_user.png
new file mode 100644 (file)
index 0000000..7766edd
Binary files /dev/null and b/CubeIT/images/silk/report_user.png differ
diff --git a/CubeIT/images/silk/report_word.png b/CubeIT/images/silk/report_word.png
new file mode 100644 (file)
index 0000000..9951342
Binary files /dev/null and b/CubeIT/images/silk/report_word.png differ
diff --git a/CubeIT/images/silk/resultset_first.png b/CubeIT/images/silk/resultset_first.png
new file mode 100644 (file)
index 0000000..b03eaf8
Binary files /dev/null and b/CubeIT/images/silk/resultset_first.png differ
diff --git a/CubeIT/images/silk/resultset_last.png b/CubeIT/images/silk/resultset_last.png
new file mode 100644 (file)
index 0000000..8ec8947
Binary files /dev/null and b/CubeIT/images/silk/resultset_last.png differ
diff --git a/CubeIT/images/silk/resultset_next.png b/CubeIT/images/silk/resultset_next.png
new file mode 100644 (file)
index 0000000..e252606
Binary files /dev/null and b/CubeIT/images/silk/resultset_next.png differ
diff --git a/CubeIT/images/silk/resultset_previous.png b/CubeIT/images/silk/resultset_previous.png
new file mode 100644 (file)
index 0000000..18f9cc1
Binary files /dev/null and b/CubeIT/images/silk/resultset_previous.png differ
diff --git a/CubeIT/images/silk/rosette.png b/CubeIT/images/silk/rosette.png
new file mode 100644 (file)
index 0000000..f233bc7
Binary files /dev/null and b/CubeIT/images/silk/rosette.png differ
diff --git a/CubeIT/images/silk/rss.png b/CubeIT/images/silk/rss.png
new file mode 100644 (file)
index 0000000..1dc6ff3
Binary files /dev/null and b/CubeIT/images/silk/rss.png differ
diff --git a/CubeIT/images/silk/rss_add.png b/CubeIT/images/silk/rss_add.png
new file mode 100644 (file)
index 0000000..b590beb
Binary files /dev/null and b/CubeIT/images/silk/rss_add.png differ
diff --git a/CubeIT/images/silk/rss_delete.png b/CubeIT/images/silk/rss_delete.png
new file mode 100644 (file)
index 0000000..9deb738
Binary files /dev/null and b/CubeIT/images/silk/rss_delete.png differ
diff --git a/CubeIT/images/silk/rss_go.png b/CubeIT/images/silk/rss_go.png
new file mode 100644 (file)
index 0000000..43a86bf
Binary files /dev/null and b/CubeIT/images/silk/rss_go.png differ
diff --git a/CubeIT/images/silk/rss_valid.png b/CubeIT/images/silk/rss_valid.png
new file mode 100644 (file)
index 0000000..a6d0b0e
Binary files /dev/null and b/CubeIT/images/silk/rss_valid.png differ
diff --git a/CubeIT/images/silk/ruby.png b/CubeIT/images/silk/ruby.png
new file mode 100644 (file)
index 0000000..f763a16
Binary files /dev/null and b/CubeIT/images/silk/ruby.png differ
diff --git a/CubeIT/images/silk/ruby_add.png b/CubeIT/images/silk/ruby_add.png
new file mode 100644 (file)
index 0000000..a2cd648
Binary files /dev/null and b/CubeIT/images/silk/ruby_add.png differ
diff --git a/CubeIT/images/silk/ruby_delete.png b/CubeIT/images/silk/ruby_delete.png
new file mode 100644 (file)
index 0000000..3002263
Binary files /dev/null and b/CubeIT/images/silk/ruby_delete.png differ
diff --git a/CubeIT/images/silk/ruby_gear.png b/CubeIT/images/silk/ruby_gear.png
new file mode 100644 (file)
index 0000000..4a10590
Binary files /dev/null and b/CubeIT/images/silk/ruby_gear.png differ
diff --git a/CubeIT/images/silk/ruby_get.png b/CubeIT/images/silk/ruby_get.png
new file mode 100644 (file)
index 0000000..f5203c7
Binary files /dev/null and b/CubeIT/images/silk/ruby_get.png differ
diff --git a/CubeIT/images/silk/ruby_go.png b/CubeIT/images/silk/ruby_go.png
new file mode 100644 (file)
index 0000000..d8d276e
Binary files /dev/null and b/CubeIT/images/silk/ruby_go.png differ
diff --git a/CubeIT/images/silk/ruby_key.png b/CubeIT/images/silk/ruby_key.png
new file mode 100644 (file)
index 0000000..451cfeb
Binary files /dev/null and b/CubeIT/images/silk/ruby_key.png differ
diff --git a/CubeIT/images/silk/ruby_link.png b/CubeIT/images/silk/ruby_link.png
new file mode 100644 (file)
index 0000000..bf4be52
Binary files /dev/null and b/CubeIT/images/silk/ruby_link.png differ
diff --git a/CubeIT/images/silk/ruby_put.png b/CubeIT/images/silk/ruby_put.png
new file mode 100644 (file)
index 0000000..e026323
Binary files /dev/null and b/CubeIT/images/silk/ruby_put.png differ
diff --git a/CubeIT/images/silk/script.png b/CubeIT/images/silk/script.png
new file mode 100644 (file)
index 0000000..0f9ed4d
Binary files /dev/null and b/CubeIT/images/silk/script.png differ
diff --git a/CubeIT/images/silk/script_add.png b/CubeIT/images/silk/script_add.png
new file mode 100644 (file)
index 0000000..d650552
Binary files /dev/null and b/CubeIT/images/silk/script_add.png differ
diff --git a/CubeIT/images/silk/script_code.png b/CubeIT/images/silk/script_code.png
new file mode 100644 (file)
index 0000000..63fe6ce
Binary files /dev/null and b/CubeIT/images/silk/script_code.png differ
diff --git a/CubeIT/images/silk/script_code_red.png b/CubeIT/images/silk/script_code_red.png
new file mode 100644 (file)
index 0000000..8fcf0f0
Binary files /dev/null and b/CubeIT/images/silk/script_code_red.png differ
diff --git a/CubeIT/images/silk/script_delete.png b/CubeIT/images/silk/script_delete.png
new file mode 100644 (file)
index 0000000..e6500ce
Binary files /dev/null and b/CubeIT/images/silk/script_delete.png differ
diff --git a/CubeIT/images/silk/script_edit.png b/CubeIT/images/silk/script_edit.png
new file mode 100644 (file)
index 0000000..b4d31ce
Binary files /dev/null and b/CubeIT/images/silk/script_edit.png differ
diff --git a/CubeIT/images/silk/script_error.png b/CubeIT/images/silk/script_error.png
new file mode 100644 (file)
index 0000000..0491954
Binary files /dev/null and b/CubeIT/images/silk/script_error.png differ
diff --git a/CubeIT/images/silk/script_gear.png b/CubeIT/images/silk/script_gear.png
new file mode 100644 (file)
index 0000000..56fcf84
Binary files /dev/null and b/CubeIT/images/silk/script_gear.png differ
diff --git a/CubeIT/images/silk/script_go.png b/CubeIT/images/silk/script_go.png
new file mode 100644 (file)
index 0000000..8e154e2
Binary files /dev/null and b/CubeIT/images/silk/script_go.png differ
diff --git a/CubeIT/images/silk/script_key.png b/CubeIT/images/silk/script_key.png
new file mode 100644 (file)
index 0000000..49bb24d
Binary files /dev/null and b/CubeIT/images/silk/script_key.png differ
diff --git a/CubeIT/images/silk/script_lightning.png b/CubeIT/images/silk/script_lightning.png
new file mode 100644 (file)
index 0000000..b3fa18c
Binary files /dev/null and b/CubeIT/images/silk/script_lightning.png differ
diff --git a/CubeIT/images/silk/script_link.png b/CubeIT/images/silk/script_link.png
new file mode 100644 (file)
index 0000000..bdeb985
Binary files /dev/null and b/CubeIT/images/silk/script_link.png differ
diff --git a/CubeIT/images/silk/script_palette.png b/CubeIT/images/silk/script_palette.png
new file mode 100644 (file)
index 0000000..6d46962
Binary files /dev/null and b/CubeIT/images/silk/script_palette.png differ
diff --git a/CubeIT/images/silk/script_save.png b/CubeIT/images/silk/script_save.png
new file mode 100644 (file)
index 0000000..36216d8
Binary files /dev/null and b/CubeIT/images/silk/script_save.png differ
diff --git a/CubeIT/images/silk/server.png b/CubeIT/images/silk/server.png
new file mode 100644 (file)
index 0000000..720a237
Binary files /dev/null and b/CubeIT/images/silk/server.png differ
diff --git a/CubeIT/images/silk/server_add.png b/CubeIT/images/silk/server_add.png
new file mode 100644 (file)
index 0000000..3f10a3a
Binary files /dev/null and b/CubeIT/images/silk/server_add.png differ
diff --git a/CubeIT/images/silk/server_chart.png b/CubeIT/images/silk/server_chart.png
new file mode 100644 (file)
index 0000000..1128d3f
Binary files /dev/null and b/CubeIT/images/silk/server_chart.png differ
diff --git a/CubeIT/images/silk/server_compressed.png b/CubeIT/images/silk/server_compressed.png
new file mode 100644 (file)
index 0000000..bf49fad
Binary files /dev/null and b/CubeIT/images/silk/server_compressed.png differ
diff --git a/CubeIT/images/silk/server_connect.png b/CubeIT/images/silk/server_connect.png
new file mode 100644 (file)
index 0000000..49b2691
Binary files /dev/null and b/CubeIT/images/silk/server_connect.png differ
diff --git a/CubeIT/images/silk/server_database.png b/CubeIT/images/silk/server_database.png
new file mode 100644 (file)
index 0000000..b24e826
Binary files /dev/null and b/CubeIT/images/silk/server_database.png differ
diff --git a/CubeIT/images/silk/server_delete.png b/CubeIT/images/silk/server_delete.png
new file mode 100644 (file)
index 0000000..61e740f
Binary files /dev/null and b/CubeIT/images/silk/server_delete.png differ
diff --git a/CubeIT/images/silk/server_edit.png b/CubeIT/images/silk/server_edit.png
new file mode 100644 (file)
index 0000000..dc76253
Binary files /dev/null and b/CubeIT/images/silk/server_edit.png differ
diff --git a/CubeIT/images/silk/server_error.png b/CubeIT/images/silk/server_error.png
new file mode 100644 (file)
index 0000000..f640256
Binary files /dev/null and b/CubeIT/images/silk/server_error.png differ
diff --git a/CubeIT/images/silk/server_go.png b/CubeIT/images/silk/server_go.png
new file mode 100644 (file)
index 0000000..540c8e2
Binary files /dev/null and b/CubeIT/images/silk/server_go.png differ
diff --git a/CubeIT/images/silk/server_key.png b/CubeIT/images/silk/server_key.png
new file mode 100644 (file)
index 0000000..ecd5174
Binary files /dev/null and b/CubeIT/images/silk/server_key.png differ
diff --git a/CubeIT/images/silk/server_lightning.png b/CubeIT/images/silk/server_lightning.png
new file mode 100644 (file)
index 0000000..b0f4e46
Binary files /dev/null and b/CubeIT/images/silk/server_lightning.png differ
diff --git a/CubeIT/images/silk/server_link.png b/CubeIT/images/silk/server_link.png
new file mode 100644 (file)
index 0000000..e8821df
Binary files /dev/null and b/CubeIT/images/silk/server_link.png differ
diff --git a/CubeIT/images/silk/server_uncompressed.png b/CubeIT/images/silk/server_uncompressed.png
new file mode 100644 (file)
index 0000000..86e8325
Binary files /dev/null and b/CubeIT/images/silk/server_uncompressed.png differ
diff --git a/CubeIT/images/silk/shading.png b/CubeIT/images/silk/shading.png
new file mode 100644 (file)
index 0000000..09275f9
Binary files /dev/null and b/CubeIT/images/silk/shading.png differ
diff --git a/CubeIT/images/silk/shape_align_bottom.png b/CubeIT/images/silk/shape_align_bottom.png
new file mode 100644 (file)
index 0000000..55d2694
Binary files /dev/null and b/CubeIT/images/silk/shape_align_bottom.png differ
diff --git a/CubeIT/images/silk/shape_align_center.png b/CubeIT/images/silk/shape_align_center.png
new file mode 100644 (file)
index 0000000..efe9a98
Binary files /dev/null and b/CubeIT/images/silk/shape_align_center.png differ
diff --git a/CubeIT/images/silk/shape_align_left.png b/CubeIT/images/silk/shape_align_left.png
new file mode 100644 (file)
index 0000000..aaedc41
Binary files /dev/null and b/CubeIT/images/silk/shape_align_left.png differ
diff --git a/CubeIT/images/silk/shape_align_middle.png b/CubeIT/images/silk/shape_align_middle.png
new file mode 100644 (file)
index 0000000..d350dd8
Binary files /dev/null and b/CubeIT/images/silk/shape_align_middle.png differ
diff --git a/CubeIT/images/silk/shape_align_right.png b/CubeIT/images/silk/shape_align_right.png
new file mode 100644 (file)
index 0000000..ff556b6
Binary files /dev/null and b/CubeIT/images/silk/shape_align_right.png differ
diff --git a/CubeIT/images/silk/shape_align_top.png b/CubeIT/images/silk/shape_align_top.png
new file mode 100644 (file)
index 0000000..1181b43
Binary files /dev/null and b/CubeIT/images/silk/shape_align_top.png differ
diff --git a/CubeIT/images/silk/shape_flip_horizontal.png b/CubeIT/images/silk/shape_flip_horizontal.png
new file mode 100644 (file)
index 0000000..8667c81
Binary files /dev/null and b/CubeIT/images/silk/shape_flip_horizontal.png differ
diff --git a/CubeIT/images/silk/shape_flip_vertical.png b/CubeIT/images/silk/shape_flip_vertical.png
new file mode 100644 (file)
index 0000000..0bd66d1
Binary files /dev/null and b/CubeIT/images/silk/shape_flip_vertical.png differ
diff --git a/CubeIT/images/silk/shape_group.png b/CubeIT/images/silk/shape_group.png
new file mode 100644 (file)
index 0000000..bb2ff51
Binary files /dev/null and b/CubeIT/images/silk/shape_group.png differ
diff --git a/CubeIT/images/silk/shape_handles.png b/CubeIT/images/silk/shape_handles.png
new file mode 100644 (file)
index 0000000..ce27fe3
Binary files /dev/null and b/CubeIT/images/silk/shape_handles.png differ
diff --git a/CubeIT/images/silk/shape_move_back.png b/CubeIT/images/silk/shape_move_back.png
new file mode 100644 (file)
index 0000000..a216ffd
Binary files /dev/null and b/CubeIT/images/silk/shape_move_back.png differ
diff --git a/CubeIT/images/silk/shape_move_backwards.png b/CubeIT/images/silk/shape_move_backwards.png
new file mode 100644 (file)
index 0000000..ee3f9b2
Binary files /dev/null and b/CubeIT/images/silk/shape_move_backwards.png differ
diff --git a/CubeIT/images/silk/shape_move_forwards.png b/CubeIT/images/silk/shape_move_forwards.png
new file mode 100644 (file)
index 0000000..cfe4493
Binary files /dev/null and b/CubeIT/images/silk/shape_move_forwards.png differ
diff --git a/CubeIT/images/silk/shape_move_front.png b/CubeIT/images/silk/shape_move_front.png
new file mode 100644 (file)
index 0000000..b4a4e3b
Binary files /dev/null and b/CubeIT/images/silk/shape_move_front.png differ
diff --git a/CubeIT/images/silk/shape_rotate_anticlockwise.png b/CubeIT/images/silk/shape_rotate_anticlockwise.png
new file mode 100644 (file)
index 0000000..07a3020
Binary files /dev/null and b/CubeIT/images/silk/shape_rotate_anticlockwise.png differ
diff --git a/CubeIT/images/silk/shape_rotate_clockwise.png b/CubeIT/images/silk/shape_rotate_clockwise.png
new file mode 100644 (file)
index 0000000..b99db7d
Binary files /dev/null and b/CubeIT/images/silk/shape_rotate_clockwise.png differ
diff --git a/CubeIT/images/silk/shape_square.png b/CubeIT/images/silk/shape_square.png
new file mode 100644 (file)
index 0000000..33af046
Binary files /dev/null and b/CubeIT/images/silk/shape_square.png differ
diff --git a/CubeIT/images/silk/shape_square_add.png b/CubeIT/images/silk/shape_square_add.png
new file mode 100644 (file)
index 0000000..31edfce
Binary files /dev/null and b/CubeIT/images/silk/shape_square_add.png differ
diff --git a/CubeIT/images/silk/shape_square_delete.png b/CubeIT/images/silk/shape_square_delete.png
new file mode 100644 (file)
index 0000000..ede912d
Binary files /dev/null and b/CubeIT/images/silk/shape_square_delete.png differ
diff --git a/CubeIT/images/silk/shape_square_edit.png b/CubeIT/images/silk/shape_square_edit.png
new file mode 100644 (file)
index 0000000..d28dc6b
Binary files /dev/null and b/CubeIT/images/silk/shape_square_edit.png differ
diff --git a/CubeIT/images/silk/shape_square_error.png b/CubeIT/images/silk/shape_square_error.png
new file mode 100644 (file)
index 0000000..0d0dcfa
Binary files /dev/null and b/CubeIT/images/silk/shape_square_error.png differ
diff --git a/CubeIT/images/silk/shape_square_go.png b/CubeIT/images/silk/shape_square_go.png
new file mode 100644 (file)
index 0000000..5a2ad90
Binary files /dev/null and b/CubeIT/images/silk/shape_square_go.png differ
diff --git a/CubeIT/images/silk/shape_square_key.png b/CubeIT/images/silk/shape_square_key.png
new file mode 100644 (file)
index 0000000..c34b982
Binary files /dev/null and b/CubeIT/images/silk/shape_square_key.png differ
diff --git a/CubeIT/images/silk/shape_square_link.png b/CubeIT/images/silk/shape_square_link.png
new file mode 100644 (file)
index 0000000..b885fcc
Binary files /dev/null and b/CubeIT/images/silk/shape_square_link.png differ
diff --git a/CubeIT/images/silk/shape_ungroup.png b/CubeIT/images/silk/shape_ungroup.png
new file mode 100644 (file)
index 0000000..3a6f369
Binary files /dev/null and b/CubeIT/images/silk/shape_ungroup.png differ
diff --git a/CubeIT/images/silk/shield.png b/CubeIT/images/silk/shield.png
new file mode 100644 (file)
index 0000000..3cb4e25
Binary files /dev/null and b/CubeIT/images/silk/shield.png differ
diff --git a/CubeIT/images/silk/shield_add.png b/CubeIT/images/silk/shield_add.png
new file mode 100644 (file)
index 0000000..e20a1b4
Binary files /dev/null and b/CubeIT/images/silk/shield_add.png differ
diff --git a/CubeIT/images/silk/shield_delete.png b/CubeIT/images/silk/shield_delete.png
new file mode 100644 (file)
index 0000000..22823a7
Binary files /dev/null and b/CubeIT/images/silk/shield_delete.png differ
diff --git a/CubeIT/images/silk/shield_go.png b/CubeIT/images/silk/shield_go.png
new file mode 100644 (file)
index 0000000..e9bd852
Binary files /dev/null and b/CubeIT/images/silk/shield_go.png differ
diff --git a/CubeIT/images/silk/sitemap.png b/CubeIT/images/silk/sitemap.png
new file mode 100644 (file)
index 0000000..ca779f3
Binary files /dev/null and b/CubeIT/images/silk/sitemap.png differ
diff --git a/CubeIT/images/silk/sitemap_color.png b/CubeIT/images/silk/sitemap_color.png
new file mode 100644 (file)
index 0000000..c64582b
Binary files /dev/null and b/CubeIT/images/silk/sitemap_color.png differ
diff --git a/CubeIT/images/silk/sound.png b/CubeIT/images/silk/sound.png
new file mode 100644 (file)
index 0000000..6056d23
Binary files /dev/null and b/CubeIT/images/silk/sound.png differ
diff --git a/CubeIT/images/silk/sound_add.png b/CubeIT/images/silk/sound_add.png
new file mode 100644 (file)
index 0000000..965c503
Binary files /dev/null and b/CubeIT/images/silk/sound_add.png differ
diff --git a/CubeIT/images/silk/sound_delete.png b/CubeIT/images/silk/sound_delete.png
new file mode 100644 (file)
index 0000000..ab9577a
Binary files /dev/null and b/CubeIT/images/silk/sound_delete.png differ
diff --git a/CubeIT/images/silk/sound_low.png b/CubeIT/images/silk/sound_low.png
new file mode 100644 (file)
index 0000000..4d91863
Binary files /dev/null and b/CubeIT/images/silk/sound_low.png differ
diff --git a/CubeIT/images/silk/sound_mute.png b/CubeIT/images/silk/sound_mute.png
new file mode 100644 (file)
index 0000000..b652d2a
Binary files /dev/null and b/CubeIT/images/silk/sound_mute.png differ
diff --git a/CubeIT/images/silk/sound_none.png b/CubeIT/images/silk/sound_none.png
new file mode 100644 (file)
index 0000000..b497ebd
Binary files /dev/null and b/CubeIT/images/silk/sound_none.png differ
diff --git a/CubeIT/images/silk/spellcheck.png b/CubeIT/images/silk/spellcheck.png
new file mode 100644 (file)
index 0000000..ebc632d
Binary files /dev/null and b/CubeIT/images/silk/spellcheck.png differ
diff --git a/CubeIT/images/silk/sport_8ball.png b/CubeIT/images/silk/sport_8ball.png
new file mode 100644 (file)
index 0000000..4f627b7
Binary files /dev/null and b/CubeIT/images/silk/sport_8ball.png differ
diff --git a/CubeIT/images/silk/sport_basketball.png b/CubeIT/images/silk/sport_basketball.png
new file mode 100644 (file)
index 0000000..f7a000b
Binary files /dev/null and b/CubeIT/images/silk/sport_basketball.png differ
diff --git a/CubeIT/images/silk/sport_football.png b/CubeIT/images/silk/sport_football.png
new file mode 100644 (file)
index 0000000..199f0f7
Binary files /dev/null and b/CubeIT/images/silk/sport_football.png differ
diff --git a/CubeIT/images/silk/sport_golf.png b/CubeIT/images/silk/sport_golf.png
new file mode 100644 (file)
index 0000000..e21fa44
Binary files /dev/null and b/CubeIT/images/silk/sport_golf.png differ
diff --git a/CubeIT/images/silk/sport_raquet.png b/CubeIT/images/silk/sport_raquet.png
new file mode 100644 (file)
index 0000000..f5e0f0c
Binary files /dev/null and b/CubeIT/images/silk/sport_raquet.png differ
diff --git a/CubeIT/images/silk/sport_shuttlecock.png b/CubeIT/images/silk/sport_shuttlecock.png
new file mode 100644 (file)
index 0000000..917287f
Binary files /dev/null and b/CubeIT/images/silk/sport_shuttlecock.png differ
diff --git a/CubeIT/images/silk/sport_soccer.png b/CubeIT/images/silk/sport_soccer.png
new file mode 100644 (file)
index 0000000..3eb1828
Binary files /dev/null and b/CubeIT/images/silk/sport_soccer.png differ
diff --git a/CubeIT/images/silk/sport_tennis.png b/CubeIT/images/silk/sport_tennis.png
new file mode 100644 (file)
index 0000000..e88a6ef
Binary files /dev/null and b/CubeIT/images/silk/sport_tennis.png differ
diff --git a/CubeIT/images/silk/star.png b/CubeIT/images/silk/star.png
new file mode 100644 (file)
index 0000000..b88c857
Binary files /dev/null and b/CubeIT/images/silk/star.png differ
diff --git a/CubeIT/images/silk/status_away.png b/CubeIT/images/silk/status_away.png
new file mode 100644 (file)
index 0000000..70bcbcc
Binary files /dev/null and b/CubeIT/images/silk/status_away.png differ
diff --git a/CubeIT/images/silk/status_busy.png b/CubeIT/images/silk/status_busy.png
new file mode 100644 (file)
index 0000000..987c806
Binary files /dev/null and b/CubeIT/images/silk/status_busy.png differ
diff --git a/CubeIT/images/silk/status_offline.png b/CubeIT/images/silk/status_offline.png
new file mode 100644 (file)
index 0000000..a88261a
Binary files /dev/null and b/CubeIT/images/silk/status_offline.png differ
diff --git a/CubeIT/images/silk/status_online.png b/CubeIT/images/silk/status_online.png
new file mode 100644 (file)
index 0000000..947bd4b
Binary files /dev/null and b/CubeIT/images/silk/status_online.png differ
diff --git a/CubeIT/images/silk/stop.png b/CubeIT/images/silk/stop.png
new file mode 100644 (file)
index 0000000..0cfd585
Binary files /dev/null and b/CubeIT/images/silk/stop.png differ
diff --git a/CubeIT/images/silk/style.png b/CubeIT/images/silk/style.png
new file mode 100644 (file)
index 0000000..81e41de
Binary files /dev/null and b/CubeIT/images/silk/style.png differ
diff --git a/CubeIT/images/silk/style_add.png b/CubeIT/images/silk/style_add.png
new file mode 100644 (file)
index 0000000..e0369c6
Binary files /dev/null and b/CubeIT/images/silk/style_add.png differ
diff --git a/CubeIT/images/silk/style_delete.png b/CubeIT/images/silk/style_delete.png
new file mode 100644 (file)
index 0000000..640f187
Binary files /dev/null and b/CubeIT/images/silk/style_delete.png differ
diff --git a/CubeIT/images/silk/style_edit.png b/CubeIT/images/silk/style_edit.png
new file mode 100644 (file)
index 0000000..25bb5b6
Binary files /dev/null and b/CubeIT/images/silk/style_edit.png differ
diff --git a/CubeIT/images/silk/style_go.png b/CubeIT/images/silk/style_go.png
new file mode 100644 (file)
index 0000000..25d6181
Binary files /dev/null and b/CubeIT/images/silk/style_go.png differ
diff --git a/CubeIT/images/silk/sum.png b/CubeIT/images/silk/sum.png
new file mode 100644 (file)
index 0000000..fd7b32e
Binary files /dev/null and b/CubeIT/images/silk/sum.png differ
diff --git a/CubeIT/images/silk/tab.png b/CubeIT/images/silk/tab.png
new file mode 100644 (file)
index 0000000..3d8207f
Binary files /dev/null and b/CubeIT/images/silk/tab.png differ
diff --git a/CubeIT/images/silk/tab_add.png b/CubeIT/images/silk/tab_add.png
new file mode 100644 (file)
index 0000000..d3b9936
Binary files /dev/null and b/CubeIT/images/silk/tab_add.png differ
diff --git a/CubeIT/images/silk/tab_delete.png b/CubeIT/images/silk/tab_delete.png
new file mode 100644 (file)
index 0000000..100da2f
Binary files /dev/null and b/CubeIT/images/silk/tab_delete.png differ
diff --git a/CubeIT/images/silk/tab_edit.png b/CubeIT/images/silk/tab_edit.png
new file mode 100644 (file)
index 0000000..4c09c0f
Binary files /dev/null and b/CubeIT/images/silk/tab_edit.png differ
diff --git a/CubeIT/images/silk/tab_go.png b/CubeIT/images/silk/tab_go.png
new file mode 100644 (file)
index 0000000..844ce04
Binary files /dev/null and b/CubeIT/images/silk/tab_go.png differ
diff --git a/CubeIT/images/silk/table.png b/CubeIT/images/silk/table.png
new file mode 100644 (file)
index 0000000..abcd936
Binary files /dev/null and b/CubeIT/images/silk/table.png differ
diff --git a/CubeIT/images/silk/table_add.png b/CubeIT/images/silk/table_add.png
new file mode 100644 (file)
index 0000000..2a3e5c4
Binary files /dev/null and b/CubeIT/images/silk/table_add.png differ
diff --git a/CubeIT/images/silk/table_delete.png b/CubeIT/images/silk/table_delete.png
new file mode 100644 (file)
index 0000000..b85916d
Binary files /dev/null and b/CubeIT/images/silk/table_delete.png differ
diff --git a/CubeIT/images/silk/table_edit.png b/CubeIT/images/silk/table_edit.png
new file mode 100644 (file)
index 0000000..bfcb024
Binary files /dev/null and b/CubeIT/images/silk/table_edit.png differ
diff --git a/CubeIT/images/silk/table_error.png b/CubeIT/images/silk/table_error.png
new file mode 100644 (file)
index 0000000..589e92b
Binary files /dev/null and b/CubeIT/images/silk/table_error.png differ
diff --git a/CubeIT/images/silk/table_gear.png b/CubeIT/images/silk/table_gear.png
new file mode 100644 (file)
index 0000000..cfc2702
Binary files /dev/null and b/CubeIT/images/silk/table_gear.png differ
diff --git a/CubeIT/images/silk/table_go.png b/CubeIT/images/silk/table_go.png
new file mode 100644 (file)
index 0000000..0528dfa
Binary files /dev/null and b/CubeIT/images/silk/table_go.png differ
diff --git a/CubeIT/images/silk/table_key.png b/CubeIT/images/silk/table_key.png
new file mode 100644 (file)
index 0000000..34e23e2
Binary files /dev/null and b/CubeIT/images/silk/table_key.png differ
diff --git a/CubeIT/images/silk/table_lightning.png b/CubeIT/images/silk/table_lightning.png
new file mode 100644 (file)
index 0000000..612612b
Binary files /dev/null and b/CubeIT/images/silk/table_lightning.png differ
diff --git a/CubeIT/images/silk/table_link.png b/CubeIT/images/silk/table_link.png
new file mode 100644 (file)
index 0000000..decac8a
Binary files /dev/null and b/CubeIT/images/silk/table_link.png differ
diff --git a/CubeIT/images/silk/table_multiple.png b/CubeIT/images/silk/table_multiple.png
new file mode 100644 (file)
index 0000000..d76448e
Binary files /dev/null and b/CubeIT/images/silk/table_multiple.png differ
diff --git a/CubeIT/images/silk/table_refresh.png b/CubeIT/images/silk/table_refresh.png
new file mode 100644 (file)
index 0000000..ab92010
Binary files /dev/null and b/CubeIT/images/silk/table_refresh.png differ
diff --git a/CubeIT/images/silk/table_relationship.png b/CubeIT/images/silk/table_relationship.png
new file mode 100644 (file)
index 0000000..28b8505
Binary files /dev/null and b/CubeIT/images/silk/table_relationship.png differ
diff --git a/CubeIT/images/silk/table_row_delete.png b/CubeIT/images/silk/table_row_delete.png
new file mode 100644 (file)
index 0000000..54c6969
Binary files /dev/null and b/CubeIT/images/silk/table_row_delete.png differ
diff --git a/CubeIT/images/silk/table_row_insert.png b/CubeIT/images/silk/table_row_insert.png
new file mode 100644 (file)
index 0000000..ff5925e
Binary files /dev/null and b/CubeIT/images/silk/table_row_insert.png differ
diff --git a/CubeIT/images/silk/table_save.png b/CubeIT/images/silk/table_save.png
new file mode 100644 (file)
index 0000000..25b74d1
Binary files /dev/null and b/CubeIT/images/silk/table_save.png differ
diff --git a/CubeIT/images/silk/table_sort.png b/CubeIT/images/silk/table_sort.png
new file mode 100644 (file)
index 0000000..ed6785a
Binary files /dev/null and b/CubeIT/images/silk/table_sort.png differ
diff --git a/CubeIT/images/silk/tag.png b/CubeIT/images/silk/tag.png
new file mode 100644 (file)
index 0000000..e093032
Binary files /dev/null and b/CubeIT/images/silk/tag.png differ
diff --git a/CubeIT/images/silk/tag_blue.png b/CubeIT/images/silk/tag_blue.png
new file mode 100644 (file)
index 0000000..9757fc6
Binary files /dev/null and b/CubeIT/images/silk/tag_blue.png differ
diff --git a/CubeIT/images/silk/tag_blue_add.png b/CubeIT/images/silk/tag_blue_add.png
new file mode 100644 (file)
index 0000000..f135248
Binary files /dev/null and b/CubeIT/images/silk/tag_blue_add.png differ
diff --git a/CubeIT/images/silk/tag_blue_delete.png b/CubeIT/images/silk/tag_blue_delete.png
new file mode 100644 (file)
index 0000000..9fbae67
Binary files /dev/null and b/CubeIT/images/silk/tag_blue_delete.png differ
diff --git a/CubeIT/images/silk/tag_blue_edit.png b/CubeIT/images/silk/tag_blue_edit.png
new file mode 100644 (file)
index 0000000..2a9f626
Binary files /dev/null and b/CubeIT/images/silk/tag_blue_edit.png differ
diff --git a/CubeIT/images/silk/tag_green.png b/CubeIT/images/silk/tag_green.png
new file mode 100644 (file)
index 0000000..83ec984
Binary files /dev/null and b/CubeIT/images/silk/tag_green.png differ
diff --git a/CubeIT/images/silk/tag_orange.png b/CubeIT/images/silk/tag_orange.png
new file mode 100644 (file)
index 0000000..454a59f
Binary files /dev/null and b/CubeIT/images/silk/tag_orange.png differ
diff --git a/CubeIT/images/silk/tag_pink.png b/CubeIT/images/silk/tag_pink.png
new file mode 100644 (file)
index 0000000..76e2296
Binary files /dev/null and b/CubeIT/images/silk/tag_pink.png differ
diff --git a/CubeIT/images/silk/tag_purple.png b/CubeIT/images/silk/tag_purple.png
new file mode 100644 (file)
index 0000000..ebaf0e8
Binary files /dev/null and b/CubeIT/images/silk/tag_purple.png differ
diff --git a/CubeIT/images/silk/tag_red.png b/CubeIT/images/silk/tag_red.png
new file mode 100644 (file)
index 0000000..6ebb37d
Binary files /dev/null and b/CubeIT/images/silk/tag_red.png differ
diff --git a/CubeIT/images/silk/tag_yellow.png b/CubeIT/images/silk/tag_yellow.png
new file mode 100644 (file)
index 0000000..83d1292
Binary files /dev/null and b/CubeIT/images/silk/tag_yellow.png differ
diff --git a/CubeIT/images/silk/telephone.png b/CubeIT/images/silk/telephone.png
new file mode 100644 (file)
index 0000000..cecc436
Binary files /dev/null and b/CubeIT/images/silk/telephone.png differ
diff --git a/CubeIT/images/silk/telephone_add.png b/CubeIT/images/silk/telephone_add.png
new file mode 100644 (file)
index 0000000..5591cfc
Binary files /dev/null and b/CubeIT/images/silk/telephone_add.png differ
diff --git a/CubeIT/images/silk/telephone_delete.png b/CubeIT/images/silk/telephone_delete.png
new file mode 100644 (file)
index 0000000..0013268
Binary files /dev/null and b/CubeIT/images/silk/telephone_delete.png differ
diff --git a/CubeIT/images/silk/telephone_edit.png b/CubeIT/images/silk/telephone_edit.png
new file mode 100644 (file)
index 0000000..bcf6d7e
Binary files /dev/null and b/CubeIT/images/silk/telephone_edit.png differ
diff --git a/CubeIT/images/silk/telephone_error.png b/CubeIT/images/silk/telephone_error.png
new file mode 100644 (file)
index 0000000..d3ec3a1
Binary files /dev/null and b/CubeIT/images/silk/telephone_error.png differ
diff --git a/CubeIT/images/silk/telephone_go.png b/CubeIT/images/silk/telephone_go.png
new file mode 100644 (file)
index 0000000..395c8fb
Binary files /dev/null and b/CubeIT/images/silk/telephone_go.png differ
diff --git a/CubeIT/images/silk/telephone_key.png b/CubeIT/images/silk/telephone_key.png
new file mode 100644 (file)
index 0000000..cef5dec
Binary files /dev/null and b/CubeIT/images/silk/telephone_key.png differ
diff --git a/CubeIT/images/silk/telephone_link.png b/CubeIT/images/silk/telephone_link.png
new file mode 100644 (file)
index 0000000..ef1ee5d
Binary files /dev/null and b/CubeIT/images/silk/telephone_link.png differ
diff --git a/CubeIT/images/silk/television.png b/CubeIT/images/silk/television.png
new file mode 100644 (file)
index 0000000..1738a4f
Binary files /dev/null and b/CubeIT/images/silk/television.png differ
diff --git a/CubeIT/images/silk/television_add.png b/CubeIT/images/silk/television_add.png
new file mode 100644 (file)
index 0000000..2baaad9
Binary files /dev/null and b/CubeIT/images/silk/television_add.png differ
diff --git a/CubeIT/images/silk/television_delete.png b/CubeIT/images/silk/television_delete.png
new file mode 100644 (file)
index 0000000..b9a5860
Binary files /dev/null and b/CubeIT/images/silk/television_delete.png differ
diff --git a/CubeIT/images/silk/text_align_center.png b/CubeIT/images/silk/text_align_center.png
new file mode 100644 (file)
index 0000000..57beb38
Binary files /dev/null and b/CubeIT/images/silk/text_align_center.png differ
diff --git a/CubeIT/images/silk/text_align_justify.png b/CubeIT/images/silk/text_align_justify.png
new file mode 100644 (file)
index 0000000..2fbdd69
Binary files /dev/null and b/CubeIT/images/silk/text_align_justify.png differ
diff --git a/CubeIT/images/silk/text_align_left.png b/CubeIT/images/silk/text_align_left.png
new file mode 100644 (file)
index 0000000..6c8fcc1
Binary files /dev/null and b/CubeIT/images/silk/text_align_left.png differ
diff --git a/CubeIT/images/silk/text_align_right.png b/CubeIT/images/silk/text_align_right.png
new file mode 100644 (file)
index 0000000..a150257
Binary files /dev/null and b/CubeIT/images/silk/text_align_right.png differ
diff --git a/CubeIT/images/silk/text_allcaps.png b/CubeIT/images/silk/text_allcaps.png
new file mode 100644 (file)
index 0000000..280fd44
Binary files /dev/null and b/CubeIT/images/silk/text_allcaps.png differ
diff --git a/CubeIT/images/silk/text_bold.png b/CubeIT/images/silk/text_bold.png
new file mode 100644 (file)
index 0000000..889ae80
Binary files /dev/null and b/CubeIT/images/silk/text_bold.png differ
diff --git a/CubeIT/images/silk/text_columns.png b/CubeIT/images/silk/text_columns.png
new file mode 100644 (file)
index 0000000..97b2e03
Binary files /dev/null and b/CubeIT/images/silk/text_columns.png differ
diff --git a/CubeIT/images/silk/text_dropcaps.png b/CubeIT/images/silk/text_dropcaps.png
new file mode 100644 (file)
index 0000000..dd65786
Binary files /dev/null and b/CubeIT/images/silk/text_dropcaps.png differ
diff --git a/CubeIT/images/silk/text_heading_1.png b/CubeIT/images/silk/text_heading_1.png
new file mode 100644 (file)
index 0000000..9c122e9
Binary files /dev/null and b/CubeIT/images/silk/text_heading_1.png differ
diff --git a/CubeIT/images/silk/text_heading_2.png b/CubeIT/images/silk/text_heading_2.png
new file mode 100644 (file)
index 0000000..fbd8765
Binary files /dev/null and b/CubeIT/images/silk/text_heading_2.png differ
diff --git a/CubeIT/images/silk/text_heading_3.png b/CubeIT/images/silk/text_heading_3.png
new file mode 100644 (file)
index 0000000..c7836cf
Binary files /dev/null and b/CubeIT/images/silk/text_heading_3.png differ
diff --git a/CubeIT/images/silk/text_heading_4.png b/CubeIT/images/silk/text_heading_4.png
new file mode 100644 (file)
index 0000000..4e929ea
Binary files /dev/null and b/CubeIT/images/silk/text_heading_4.png differ
diff --git a/CubeIT/images/silk/text_heading_5.png b/CubeIT/images/silk/text_heading_5.png
new file mode 100644 (file)
index 0000000..30cabeb
Binary files /dev/null and b/CubeIT/images/silk/text_heading_5.png differ
diff --git a/CubeIT/images/silk/text_heading_6.png b/CubeIT/images/silk/text_heading_6.png
new file mode 100644 (file)
index 0000000..058170a
Binary files /dev/null and b/CubeIT/images/silk/text_heading_6.png differ
diff --git a/CubeIT/images/silk/text_horizontalrule.png b/CubeIT/images/silk/text_horizontalrule.png
new file mode 100644 (file)
index 0000000..8dd1da1
Binary files /dev/null and b/CubeIT/images/silk/text_horizontalrule.png differ
diff --git a/CubeIT/images/silk/text_indent.png b/CubeIT/images/silk/text_indent.png
new file mode 100644 (file)
index 0000000..9364532
Binary files /dev/null and b/CubeIT/images/silk/text_indent.png differ
diff --git a/CubeIT/images/silk/text_indent_remove.png b/CubeIT/images/silk/text_indent_remove.png
new file mode 100644 (file)
index 0000000..1651b07
Binary files /dev/null and b/CubeIT/images/silk/text_indent_remove.png differ
diff --git a/CubeIT/images/silk/text_italic.png b/CubeIT/images/silk/text_italic.png
new file mode 100644 (file)
index 0000000..8482ac8
Binary files /dev/null and b/CubeIT/images/silk/text_italic.png differ
diff --git a/CubeIT/images/silk/text_kerning.png b/CubeIT/images/silk/text_kerning.png
new file mode 100644 (file)
index 0000000..377def6
Binary files /dev/null and b/CubeIT/images/silk/text_kerning.png differ
diff --git a/CubeIT/images/silk/text_letter_omega.png b/CubeIT/images/silk/text_letter_omega.png
new file mode 100644 (file)
index 0000000..5075ec6
Binary files /dev/null and b/CubeIT/images/silk/text_letter_omega.png differ
diff --git a/CubeIT/images/silk/text_letterspacing.png b/CubeIT/images/silk/text_letterspacing.png
new file mode 100644 (file)
index 0000000..41390f5
Binary files /dev/null and b/CubeIT/images/silk/text_letterspacing.png differ
diff --git a/CubeIT/images/silk/text_linespacing.png b/CubeIT/images/silk/text_linespacing.png
new file mode 100644 (file)
index 0000000..1a91cbd
Binary files /dev/null and b/CubeIT/images/silk/text_linespacing.png differ
diff --git a/CubeIT/images/silk/text_list_bullets.png b/CubeIT/images/silk/text_list_bullets.png
new file mode 100644 (file)
index 0000000..4a8672b
Binary files /dev/null and b/CubeIT/images/silk/text_list_bullets.png differ
diff --git a/CubeIT/images/silk/text_list_numbers.png b/CubeIT/images/silk/text_list_numbers.png
new file mode 100644 (file)
index 0000000..33b0b8d
Binary files /dev/null and b/CubeIT/images/silk/text_list_numbers.png differ
diff --git a/CubeIT/images/silk/text_lowercase.png b/CubeIT/images/silk/text_lowercase.png
new file mode 100644 (file)
index 0000000..382a102
Binary files /dev/null and b/CubeIT/images/silk/text_lowercase.png differ
diff --git a/CubeIT/images/silk/text_padding_bottom.png b/CubeIT/images/silk/text_padding_bottom.png
new file mode 100644 (file)
index 0000000..4880c43
Binary files /dev/null and b/CubeIT/images/silk/text_padding_bottom.png differ
diff --git a/CubeIT/images/silk/text_padding_left.png b/CubeIT/images/silk/text_padding_left.png
new file mode 100644 (file)
index 0000000..b55482e
Binary files /dev/null and b/CubeIT/images/silk/text_padding_left.png differ
diff --git a/CubeIT/images/silk/text_padding_right.png b/CubeIT/images/silk/text_padding_right.png
new file mode 100644 (file)
index 0000000..106edae
Binary files /dev/null and b/CubeIT/images/silk/text_padding_right.png differ
diff --git a/CubeIT/images/silk/text_padding_top.png b/CubeIT/images/silk/text_padding_top.png
new file mode 100644 (file)
index 0000000..c5c45b2
Binary files /dev/null and b/CubeIT/images/silk/text_padding_top.png differ
diff --git a/CubeIT/images/silk/text_replace.png b/CubeIT/images/silk/text_replace.png
new file mode 100644 (file)
index 0000000..877f82f
Binary files /dev/null and b/CubeIT/images/silk/text_replace.png differ
diff --git a/CubeIT/images/silk/text_signature.png b/CubeIT/images/silk/text_signature.png
new file mode 100644 (file)
index 0000000..c72fd80
Binary files /dev/null and b/CubeIT/images/silk/text_signature.png differ
diff --git a/CubeIT/images/silk/text_smallcaps.png b/CubeIT/images/silk/text_smallcaps.png
new file mode 100644 (file)
index 0000000..5b98a6e
Binary files /dev/null and b/CubeIT/images/silk/text_smallcaps.png differ
diff --git a/CubeIT/images/silk/text_strikethrough.png b/CubeIT/images/silk/text_strikethrough.png
new file mode 100644 (file)
index 0000000..612058a
Binary files /dev/null and b/CubeIT/images/silk/text_strikethrough.png differ
diff --git a/CubeIT/images/silk/text_subscript.png b/CubeIT/images/silk/text_subscript.png
new file mode 100644 (file)
index 0000000..1a2b010
Binary files /dev/null and b/CubeIT/images/silk/text_subscript.png differ
diff --git a/CubeIT/images/silk/text_superscript.png b/CubeIT/images/silk/text_superscript.png
new file mode 100644 (file)
index 0000000..2fb2a7c
Binary files /dev/null and b/CubeIT/images/silk/text_superscript.png differ
diff --git a/CubeIT/images/silk/text_underline.png b/CubeIT/images/silk/text_underline.png
new file mode 100644 (file)
index 0000000..90d0df2
Binary files /dev/null and b/CubeIT/images/silk/text_underline.png differ
diff --git a/CubeIT/images/silk/text_uppercase.png b/CubeIT/images/silk/text_uppercase.png
new file mode 100644 (file)
index 0000000..8dcc2db
Binary files /dev/null and b/CubeIT/images/silk/text_uppercase.png differ
diff --git a/CubeIT/images/silk/textfield.png b/CubeIT/images/silk/textfield.png
new file mode 100644 (file)
index 0000000..d37e730
Binary files /dev/null and b/CubeIT/images/silk/textfield.png differ
diff --git a/CubeIT/images/silk/textfield_add.png b/CubeIT/images/silk/textfield_add.png
new file mode 100644 (file)
index 0000000..204de72
Binary files /dev/null and b/CubeIT/images/silk/textfield_add.png differ
diff --git a/CubeIT/images/silk/textfield_delete.png b/CubeIT/images/silk/textfield_delete.png
new file mode 100644 (file)
index 0000000..c7bd58b
Binary files /dev/null and b/CubeIT/images/silk/textfield_delete.png differ
diff --git a/CubeIT/images/silk/textfield_key.png b/CubeIT/images/silk/textfield_key.png
new file mode 100644 (file)
index 0000000..a9d5e4f
Binary files /dev/null and b/CubeIT/images/silk/textfield_key.png differ
diff --git a/CubeIT/images/silk/textfield_rename.png b/CubeIT/images/silk/textfield_rename.png
new file mode 100644 (file)
index 0000000..4e3688e
Binary files /dev/null and b/CubeIT/images/silk/textfield_rename.png differ
diff --git a/CubeIT/images/silk/thumb_down.png b/CubeIT/images/silk/thumb_down.png
new file mode 100644 (file)
index 0000000..3c832d4
Binary files /dev/null and b/CubeIT/images/silk/thumb_down.png differ
diff --git a/CubeIT/images/silk/thumb_up.png b/CubeIT/images/silk/thumb_up.png
new file mode 100644 (file)
index 0000000..2bd16cc
Binary files /dev/null and b/CubeIT/images/silk/thumb_up.png differ
diff --git a/CubeIT/images/silk/tick.png b/CubeIT/images/silk/tick.png
new file mode 100644 (file)
index 0000000..a9925a0
Binary files /dev/null and b/CubeIT/images/silk/tick.png differ
diff --git a/CubeIT/images/silk/time.png b/CubeIT/images/silk/time.png
new file mode 100644 (file)
index 0000000..911da3f
Binary files /dev/null and b/CubeIT/images/silk/time.png differ
diff --git a/CubeIT/images/silk/time_add.png b/CubeIT/images/silk/time_add.png
new file mode 100644 (file)
index 0000000..dcc45cb
Binary files /dev/null and b/CubeIT/images/silk/time_add.png differ
diff --git a/CubeIT/images/silk/time_delete.png b/CubeIT/images/silk/time_delete.png
new file mode 100644 (file)
index 0000000..5bf8313
Binary files /dev/null and b/CubeIT/images/silk/time_delete.png differ
diff --git a/CubeIT/images/silk/time_go.png b/CubeIT/images/silk/time_go.png
new file mode 100644 (file)
index 0000000..d451ee0
Binary files /dev/null and b/CubeIT/images/silk/time_go.png differ
diff --git a/CubeIT/images/silk/timeline_marker.png b/CubeIT/images/silk/timeline_marker.png
new file mode 100644 (file)
index 0000000..a3fbddf
Binary files /dev/null and b/CubeIT/images/silk/timeline_marker.png differ
diff --git a/CubeIT/images/silk/transmit.png b/CubeIT/images/silk/transmit.png
new file mode 100644 (file)
index 0000000..f54bf73
Binary files /dev/null and b/CubeIT/images/silk/transmit.png differ
diff --git a/CubeIT/images/silk/transmit_add.png b/CubeIT/images/silk/transmit_add.png
new file mode 100644 (file)
index 0000000..b7fd4e6
Binary files /dev/null and b/CubeIT/images/silk/transmit_add.png differ
diff --git a/CubeIT/images/silk/transmit_blue.png b/CubeIT/images/silk/transmit_blue.png
new file mode 100644 (file)
index 0000000..7b1142f
Binary files /dev/null and b/CubeIT/images/silk/transmit_blue.png differ
diff --git a/CubeIT/images/silk/transmit_delete.png b/CubeIT/images/silk/transmit_delete.png
new file mode 100644 (file)
index 0000000..3d72be2
Binary files /dev/null and b/CubeIT/images/silk/transmit_delete.png differ
diff --git a/CubeIT/images/silk/transmit_edit.png b/CubeIT/images/silk/transmit_edit.png
new file mode 100644 (file)
index 0000000..eb9a3dd
Binary files /dev/null and b/CubeIT/images/silk/transmit_edit.png differ
diff --git a/CubeIT/images/silk/transmit_error.png b/CubeIT/images/silk/transmit_error.png
new file mode 100644 (file)
index 0000000..fd1d449
Binary files /dev/null and b/CubeIT/images/silk/transmit_error.png differ
diff --git a/CubeIT/images/silk/transmit_go.png b/CubeIT/images/silk/transmit_go.png
new file mode 100644 (file)
index 0000000..10137e5
Binary files /dev/null and b/CubeIT/images/silk/transmit_go.png differ
diff --git a/CubeIT/images/silk/tux.png b/CubeIT/images/silk/tux.png
new file mode 100644 (file)
index 0000000..bbefe2e
Binary files /dev/null and b/CubeIT/images/silk/tux.png differ
diff --git a/CubeIT/images/silk/user.png b/CubeIT/images/silk/user.png
new file mode 100644 (file)
index 0000000..79f35cc
Binary files /dev/null and b/CubeIT/images/silk/user.png differ
diff --git a/CubeIT/images/silk/user_add.png b/CubeIT/images/silk/user_add.png
new file mode 100644 (file)
index 0000000..deae99b
Binary files /dev/null and b/CubeIT/images/silk/user_add.png differ
diff --git a/CubeIT/images/silk/user_comment.png b/CubeIT/images/silk/user_comment.png
new file mode 100644 (file)
index 0000000..e54ebeb
Binary files /dev/null and b/CubeIT/images/silk/user_comment.png differ
diff --git a/CubeIT/images/silk/user_delete.png b/CubeIT/images/silk/user_delete.png
new file mode 100644 (file)
index 0000000..acbb563
Binary files /dev/null and b/CubeIT/images/silk/user_delete.png differ
diff --git a/CubeIT/images/silk/user_edit.png b/CubeIT/images/silk/user_edit.png
new file mode 100644 (file)
index 0000000..c1974cd
Binary files /dev/null and b/CubeIT/images/silk/user_edit.png differ
diff --git a/CubeIT/images/silk/user_female.png b/CubeIT/images/silk/user_female.png
new file mode 100644 (file)
index 0000000..7c71de0
Binary files /dev/null and b/CubeIT/images/silk/user_female.png differ
diff --git a/CubeIT/images/silk/user_go.png b/CubeIT/images/silk/user_go.png
new file mode 100644 (file)
index 0000000..0468cf0
Binary files /dev/null and b/CubeIT/images/silk/user_go.png differ
diff --git a/CubeIT/images/silk/user_gray.png b/CubeIT/images/silk/user_gray.png
new file mode 100644 (file)
index 0000000..8fd539e
Binary files /dev/null and b/CubeIT/images/silk/user_gray.png differ
diff --git a/CubeIT/images/silk/user_green.png b/CubeIT/images/silk/user_green.png
new file mode 100644 (file)
index 0000000..30383c2
Binary files /dev/null and b/CubeIT/images/silk/user_green.png differ
diff --git a/CubeIT/images/silk/user_orange.png b/CubeIT/images/silk/user_orange.png
new file mode 100644 (file)
index 0000000..b818127
Binary files /dev/null and b/CubeIT/images/silk/user_orange.png differ
diff --git a/CubeIT/images/silk/user_red.png b/CubeIT/images/silk/user_red.png
new file mode 100644 (file)
index 0000000..c6f66e8
Binary files /dev/null and b/CubeIT/images/silk/user_red.png differ
diff --git a/CubeIT/images/silk/user_suit.png b/CubeIT/images/silk/user_suit.png
new file mode 100644 (file)
index 0000000..b3454e1
Binary files /dev/null and b/CubeIT/images/silk/user_suit.png differ
diff --git a/CubeIT/images/silk/vcard.png b/CubeIT/images/silk/vcard.png
new file mode 100644 (file)
index 0000000..c02f315
Binary files /dev/null and b/CubeIT/images/silk/vcard.png differ
diff --git a/CubeIT/images/silk/vcard_add.png b/CubeIT/images/silk/vcard_add.png
new file mode 100644 (file)
index 0000000..2a68453
Binary files /dev/null and b/CubeIT/images/silk/vcard_add.png differ
diff --git a/CubeIT/images/silk/vcard_delete.png b/CubeIT/images/silk/vcard_delete.png
new file mode 100644 (file)
index 0000000..b194b97
Binary files /dev/null and b/CubeIT/images/silk/vcard_delete.png differ
diff --git a/CubeIT/images/silk/vcard_edit.png b/CubeIT/images/silk/vcard_edit.png
new file mode 100644 (file)
index 0000000..ab0f6e7
Binary files /dev/null and b/CubeIT/images/silk/vcard_edit.png differ
diff --git a/CubeIT/images/silk/vector.png b/CubeIT/images/silk/vector.png
new file mode 100644 (file)
index 0000000..a1291c2
Binary files /dev/null and b/CubeIT/images/silk/vector.png differ
diff --git a/CubeIT/images/silk/vector_add.png b/CubeIT/images/silk/vector_add.png
new file mode 100644 (file)
index 0000000..988770f
Binary files /dev/null and b/CubeIT/images/silk/vector_add.png differ
diff --git a/CubeIT/images/silk/vector_delete.png b/CubeIT/images/silk/vector_delete.png
new file mode 100644 (file)
index 0000000..ca139e0
Binary files /dev/null and b/CubeIT/images/silk/vector_delete.png differ
diff --git a/CubeIT/images/silk/wand.png b/CubeIT/images/silk/wand.png
new file mode 100644 (file)
index 0000000..44ccbf8
Binary files /dev/null and b/CubeIT/images/silk/wand.png differ
diff --git a/CubeIT/images/silk/weather_clouds.png b/CubeIT/images/silk/weather_clouds.png
new file mode 100644 (file)
index 0000000..3f73eaa
Binary files /dev/null and b/CubeIT/images/silk/weather_clouds.png differ
diff --git a/CubeIT/images/silk/weather_cloudy.png b/CubeIT/images/silk/weather_cloudy.png
new file mode 100644 (file)
index 0000000..5856e1d
Binary files /dev/null and b/CubeIT/images/silk/weather_cloudy.png differ
diff --git a/CubeIT/images/silk/weather_lightning.png b/CubeIT/images/silk/weather_lightning.png
new file mode 100644 (file)
index 0000000..1d42b36
Binary files /dev/null and b/CubeIT/images/silk/weather_lightning.png differ
diff --git a/CubeIT/images/silk/weather_rain.png b/CubeIT/images/silk/weather_rain.png
new file mode 100644 (file)
index 0000000..cb3d54d
Binary files /dev/null and b/CubeIT/images/silk/weather_rain.png differ
diff --git a/CubeIT/images/silk/weather_snow.png b/CubeIT/images/silk/weather_snow.png
new file mode 100644 (file)
index 0000000..45bbdf1
Binary files /dev/null and b/CubeIT/images/silk/weather_snow.png differ
diff --git a/CubeIT/images/silk/weather_sun.png b/CubeIT/images/silk/weather_sun.png
new file mode 100644 (file)
index 0000000..0156c26
Binary files /dev/null and b/CubeIT/images/silk/weather_sun.png differ
diff --git a/CubeIT/images/silk/webcam.png b/CubeIT/images/silk/webcam.png
new file mode 100644 (file)
index 0000000..af71c30
Binary files /dev/null and b/CubeIT/images/silk/webcam.png differ
diff --git a/CubeIT/images/silk/webcam_add.png b/CubeIT/images/silk/webcam_add.png
new file mode 100644 (file)
index 0000000..f02fcfa
Binary files /dev/null and b/CubeIT/images/silk/webcam_add.png differ
diff --git a/CubeIT/images/silk/webcam_delete.png b/CubeIT/images/silk/webcam_delete.png
new file mode 100644 (file)
index 0000000..bd6277f
Binary files /dev/null and b/CubeIT/images/silk/webcam_delete.png differ
diff --git a/CubeIT/images/silk/webcam_error.png b/CubeIT/images/silk/webcam_error.png
new file mode 100644 (file)
index 0000000..2faa706
Binary files /dev/null and b/CubeIT/images/silk/webcam_error.png differ
diff --git a/CubeIT/images/silk/world.png b/CubeIT/images/silk/world.png
new file mode 100644 (file)
index 0000000..68f21d3
Binary files /dev/null and b/CubeIT/images/silk/world.png differ
diff --git a/CubeIT/images/silk/world_add.png b/CubeIT/images/silk/world_add.png
new file mode 100644 (file)
index 0000000..6d0d7f7
Binary files /dev/null and b/CubeIT/images/silk/world_add.png differ
diff --git a/CubeIT/images/silk/world_delete.png b/CubeIT/images/silk/world_delete.png
new file mode 100644 (file)
index 0000000..ffcd115
Binary files /dev/null and b/CubeIT/images/silk/world_delete.png differ
diff --git a/CubeIT/images/silk/world_edit.png b/CubeIT/images/silk/world_edit.png
new file mode 100644 (file)
index 0000000..00794d4
Binary files /dev/null and b/CubeIT/images/silk/world_edit.png differ
diff --git a/CubeIT/images/silk/world_go.png b/CubeIT/images/silk/world_go.png
new file mode 100644 (file)
index 0000000..aee9c97
Binary files /dev/null and b/CubeIT/images/silk/world_go.png differ
diff --git a/CubeIT/images/silk/world_link.png b/CubeIT/images/silk/world_link.png
new file mode 100644 (file)
index 0000000..b8edc12
Binary files /dev/null and b/CubeIT/images/silk/world_link.png differ
diff --git a/CubeIT/images/silk/wrench.png b/CubeIT/images/silk/wrench.png
new file mode 100644 (file)
index 0000000..5c8213f
Binary files /dev/null and b/CubeIT/images/silk/wrench.png differ
diff --git a/CubeIT/images/silk/wrench_orange.png b/CubeIT/images/silk/wrench_orange.png
new file mode 100644 (file)
index 0000000..565a933
Binary files /dev/null and b/CubeIT/images/silk/wrench_orange.png differ
diff --git a/CubeIT/images/silk/xhtml.png b/CubeIT/images/silk/xhtml.png
new file mode 100644 (file)
index 0000000..da5dbf2
Binary files /dev/null and b/CubeIT/images/silk/xhtml.png differ
diff --git a/CubeIT/images/silk/xhtml_add.png b/CubeIT/images/silk/xhtml_add.png
new file mode 100644 (file)
index 0000000..bbaf784
Binary files /dev/null and b/CubeIT/images/silk/xhtml_add.png differ
diff --git a/CubeIT/images/silk/xhtml_delete.png b/CubeIT/images/silk/xhtml_delete.png
new file mode 100644 (file)
index 0000000..157b520
Binary files /dev/null and b/CubeIT/images/silk/xhtml_delete.png differ
diff --git a/CubeIT/images/silk/xhtml_go.png b/CubeIT/images/silk/xhtml_go.png
new file mode 100644 (file)
index 0000000..43cf814
Binary files /dev/null and b/CubeIT/images/silk/xhtml_go.png differ
diff --git a/CubeIT/images/silk/xhtml_valid.png b/CubeIT/images/silk/xhtml_valid.png
new file mode 100644 (file)
index 0000000..d2e1cfb
Binary files /dev/null and b/CubeIT/images/silk/xhtml_valid.png differ
diff --git a/CubeIT/images/silk/zoom.png b/CubeIT/images/silk/zoom.png
new file mode 100644 (file)
index 0000000..908612e
Binary files /dev/null and b/CubeIT/images/silk/zoom.png differ
diff --git a/CubeIT/images/silk/zoom_in.png b/CubeIT/images/silk/zoom_in.png
new file mode 100644 (file)
index 0000000..cdf0a52
Binary files /dev/null and b/CubeIT/images/silk/zoom_in.png differ
diff --git a/CubeIT/images/silk/zoom_out.png b/CubeIT/images/silk/zoom_out.png
new file mode 100644 (file)
index 0000000..07bf98a
Binary files /dev/null and b/CubeIT/images/silk/zoom_out.png differ
diff --git a/CubeIT/images/spacer.gif b/CubeIT/images/spacer.gif
new file mode 100644 (file)
index 0000000..d5aa864
Binary files /dev/null and b/CubeIT/images/spacer.gif differ
diff --git a/CubeIT/images/tango/16/actions/address-book-new.png b/CubeIT/images/tango/16/actions/address-book-new.png
new file mode 100644 (file)
index 0000000..2098cfd
Binary files /dev/null and b/CubeIT/images/tango/16/actions/address-book-new.png differ
diff --git a/CubeIT/images/tango/16/actions/appointment-new.png b/CubeIT/images/tango/16/actions/appointment-new.png
new file mode 100644 (file)
index 0000000..18b7c67
Binary files /dev/null and b/CubeIT/images/tango/16/actions/appointment-new.png differ
diff --git a/CubeIT/images/tango/16/actions/bookmark-new.png b/CubeIT/images/tango/16/actions/bookmark-new.png
new file mode 100644 (file)
index 0000000..6cf6443
Binary files /dev/null and b/CubeIT/images/tango/16/actions/bookmark-new.png differ
diff --git a/CubeIT/images/tango/16/actions/contact-new.png b/CubeIT/images/tango/16/actions/contact-new.png
new file mode 100644 (file)
index 0000000..46573ff
Binary files /dev/null and b/CubeIT/images/tango/16/actions/contact-new.png differ
diff --git a/CubeIT/images/tango/16/actions/document-new.png b/CubeIT/images/tango/16/actions/document-new.png
new file mode 100644 (file)
index 0000000..4c3efdd
Binary files /dev/null and b/CubeIT/images/tango/16/actions/document-new.png differ
diff --git a/CubeIT/images/tango/16/actions/document-open.png b/CubeIT/images/tango/16/actions/document-open.png
new file mode 100644 (file)
index 0000000..69dd8d4
Binary files /dev/null and b/CubeIT/images/tango/16/actions/document-open.png differ
diff --git a/CubeIT/images/tango/16/actions/document-print-preview.png b/CubeIT/images/tango/16/actions/document-print-preview.png
new file mode 100644 (file)
index 0000000..ab92a30
Binary files /dev/null and b/CubeIT/images/tango/16/actions/document-print-preview.png differ
diff --git a/CubeIT/images/tango/16/actions/document-print.png b/CubeIT/images/tango/16/actions/document-print.png
new file mode 100644 (file)
index 0000000..35c37bd
Binary files /dev/null and b/CubeIT/images/tango/16/actions/document-print.png differ
diff --git a/CubeIT/images/tango/16/actions/document-properties.png b/CubeIT/images/tango/16/actions/document-properties.png
new file mode 100644 (file)
index 0000000..ab0e8ea
Binary files /dev/null and b/CubeIT/images/tango/16/actions/document-properties.png differ
diff --git a/CubeIT/images/tango/16/actions/document-save-as.png b/CubeIT/images/tango/16/actions/document-save-as.png
new file mode 100644 (file)
index 0000000..9bed143
Binary files /dev/null and b/CubeIT/images/tango/16/actions/document-save-as.png differ
diff --git a/CubeIT/images/tango/16/actions/document-save.png b/CubeIT/images/tango/16/actions/document-save.png
new file mode 100644 (file)
index 0000000..22ff495
Binary files /dev/null and b/CubeIT/images/tango/16/actions/document-save.png differ
diff --git a/CubeIT/images/tango/16/actions/edit-clear.png b/CubeIT/images/tango/16/actions/edit-clear.png
new file mode 100644 (file)
index 0000000..e6c8e8b
Binary files /dev/null and b/CubeIT/images/tango/16/actions/edit-clear.png differ
diff --git a/CubeIT/images/tango/16/actions/edit-copy.png b/CubeIT/images/tango/16/actions/edit-copy.png
new file mode 100644 (file)
index 0000000..8dd48c4
Binary files /dev/null and b/CubeIT/images/tango/16/actions/edit-copy.png differ
diff --git a/CubeIT/images/tango/16/actions/edit-cut.png b/CubeIT/images/tango/16/actions/edit-cut.png
new file mode 100644 (file)
index 0000000..dc9eb9a
Binary files /dev/null and b/CubeIT/images/tango/16/actions/edit-cut.png differ
diff --git a/CubeIT/images/tango/16/actions/edit-delete.png b/CubeIT/images/tango/16/actions/edit-delete.png
new file mode 100644 (file)
index 0000000..ea03150
Binary files /dev/null and b/CubeIT/images/tango/16/actions/edit-delete.png differ
diff --git a/CubeIT/images/tango/16/actions/edit-find-replace.png b/CubeIT/images/tango/16/actions/edit-find-replace.png
new file mode 100644 (file)
index 0000000..6edbef6
Binary files /dev/null and b/CubeIT/images/tango/16/actions/edit-find-replace.png differ
diff --git a/CubeIT/images/tango/16/actions/edit-find.png b/CubeIT/images/tango/16/actions/edit-find.png
new file mode 100644 (file)
index 0000000..d072d3c
Binary files /dev/null and b/CubeIT/images/tango/16/actions/edit-find.png differ
diff --git a/CubeIT/images/tango/16/actions/edit-paste.png b/CubeIT/images/tango/16/actions/edit-paste.png
new file mode 100644 (file)
index 0000000..24588a3
Binary files /dev/null and b/CubeIT/images/tango/16/actions/edit-paste.png differ
diff --git a/CubeIT/images/tango/16/actions/edit-redo.png b/CubeIT/images/tango/16/actions/edit-redo.png
new file mode 100644 (file)
index 0000000..c3b0df0
Binary files /dev/null and b/CubeIT/images/tango/16/actions/edit-redo.png differ
diff --git a/CubeIT/images/tango/16/actions/edit-select-all.png b/CubeIT/images/tango/16/actions/edit-select-all.png
new file mode 100644 (file)
index 0000000..f4b0b19
Binary files /dev/null and b/CubeIT/images/tango/16/actions/edit-select-all.png differ
diff --git a/CubeIT/images/tango/16/actions/edit-undo.png b/CubeIT/images/tango/16/actions/edit-undo.png
new file mode 100644 (file)
index 0000000..8b0fef9
Binary files /dev/null and b/CubeIT/images/tango/16/actions/edit-undo.png differ
diff --git a/CubeIT/images/tango/16/actions/folder-new.png b/CubeIT/images/tango/16/actions/folder-new.png
new file mode 100644 (file)
index 0000000..628f4d5
Binary files /dev/null and b/CubeIT/images/tango/16/actions/folder-new.png differ
diff --git a/CubeIT/images/tango/16/actions/format-indent-less.png b/CubeIT/images/tango/16/actions/format-indent-less.png
new file mode 100644 (file)
index 0000000..1787a7f
Binary files /dev/null and b/CubeIT/images/tango/16/actions/format-indent-less.png differ
diff --git a/CubeIT/images/tango/16/actions/format-indent-more.png b/CubeIT/images/tango/16/actions/format-indent-more.png
new file mode 100644 (file)
index 0000000..6bad6bb
Binary files /dev/null and b/CubeIT/images/tango/16/actions/format-indent-more.png differ
diff --git a/CubeIT/images/tango/16/actions/format-justify-center.png b/CubeIT/images/tango/16/actions/format-justify-center.png
new file mode 100644 (file)
index 0000000..207dc4c
Binary files /dev/null and b/CubeIT/images/tango/16/actions/format-justify-center.png differ
diff --git a/CubeIT/images/tango/16/actions/format-justify-fill.png b/CubeIT/images/tango/16/actions/format-justify-fill.png
new file mode 100644 (file)
index 0000000..663cbad
Binary files /dev/null and b/CubeIT/images/tango/16/actions/format-justify-fill.png differ
diff --git a/CubeIT/images/tango/16/actions/format-justify-left.png b/CubeIT/images/tango/16/actions/format-justify-left.png
new file mode 100644 (file)
index 0000000..d9b40a7
Binary files /dev/null and b/CubeIT/images/tango/16/actions/format-justify-left.png differ
diff --git a/CubeIT/images/tango/16/actions/format-justify-right.png b/CubeIT/images/tango/16/actions/format-justify-right.png
new file mode 100644 (file)
index 0000000..c301307
Binary files /dev/null and b/CubeIT/images/tango/16/actions/format-justify-right.png differ
diff --git a/CubeIT/images/tango/16/actions/format-text-bold.png b/CubeIT/images/tango/16/actions/format-text-bold.png
new file mode 100644 (file)
index 0000000..c9cb630
Binary files /dev/null and b/CubeIT/images/tango/16/actions/format-text-bold.png differ
diff --git a/CubeIT/images/tango/16/actions/format-text-italic.png b/CubeIT/images/tango/16/actions/format-text-italic.png
new file mode 100644 (file)
index 0000000..977ea82
Binary files /dev/null and b/CubeIT/images/tango/16/actions/format-text-italic.png differ
diff --git a/CubeIT/images/tango/16/actions/format-text-strikethrough.png b/CubeIT/images/tango/16/actions/format-text-strikethrough.png
new file mode 100644 (file)
index 0000000..ccee76e
Binary files /dev/null and b/CubeIT/images/tango/16/actions/format-text-strikethrough.png differ
diff --git a/CubeIT/images/tango/16/actions/format-text-underline.png b/CubeIT/images/tango/16/actions/format-text-underline.png
new file mode 100644 (file)
index 0000000..0c48721
Binary files /dev/null and b/CubeIT/images/tango/16/actions/format-text-underline.png differ
diff --git a/CubeIT/images/tango/16/actions/go-bottom.png b/CubeIT/images/tango/16/actions/go-bottom.png
new file mode 100644 (file)
index 0000000..2c5a803
Binary files /dev/null and b/CubeIT/images/tango/16/actions/go-bottom.png differ
diff --git a/CubeIT/images/tango/16/actions/go-down.png b/CubeIT/images/tango/16/actions/go-down.png
new file mode 100644 (file)
index 0000000..3dd7fcc
Binary files /dev/null and b/CubeIT/images/tango/16/actions/go-down.png differ
diff --git a/CubeIT/images/tango/16/actions/go-first.png b/CubeIT/images/tango/16/actions/go-first.png
new file mode 100644 (file)
index 0000000..9c15c09
Binary files /dev/null and b/CubeIT/images/tango/16/actions/go-first.png differ
diff --git a/CubeIT/images/tango/16/actions/go-home.png b/CubeIT/images/tango/16/actions/go-home.png
new file mode 100644 (file)
index 0000000..a46fb22
Binary files /dev/null and b/CubeIT/images/tango/16/actions/go-home.png differ
diff --git a/CubeIT/images/tango/16/actions/go-jump.png b/CubeIT/images/tango/16/actions/go-jump.png
new file mode 100644 (file)
index 0000000..1d218c3
Binary files /dev/null and b/CubeIT/images/tango/16/actions/go-jump.png differ
diff --git a/CubeIT/images/tango/16/actions/go-last.png b/CubeIT/images/tango/16/actions/go-last.png
new file mode 100644 (file)
index 0000000..6e904ef
Binary files /dev/null and b/CubeIT/images/tango/16/actions/go-last.png differ
diff --git a/CubeIT/images/tango/16/actions/go-next.png b/CubeIT/images/tango/16/actions/go-next.png
new file mode 100644 (file)
index 0000000..6ef8de7
Binary files /dev/null and b/CubeIT/images/tango/16/actions/go-next.png differ
diff --git a/CubeIT/images/tango/16/actions/go-previous.png b/CubeIT/images/tango/16/actions/go-previous.png
new file mode 100644 (file)
index 0000000..659cd90
Binary files /dev/null and b/CubeIT/images/tango/16/actions/go-previous.png differ
diff --git a/CubeIT/images/tango/16/actions/go-top.png b/CubeIT/images/tango/16/actions/go-top.png
new file mode 100644 (file)
index 0000000..70f2c99
Binary files /dev/null and b/CubeIT/images/tango/16/actions/go-top.png differ
diff --git a/CubeIT/images/tango/16/actions/go-up.png b/CubeIT/images/tango/16/actions/go-up.png
new file mode 100644 (file)
index 0000000..fa9a7d7
Binary files /dev/null and b/CubeIT/images/tango/16/actions/go-up.png differ
diff --git a/CubeIT/images/tango/16/actions/list-add.png b/CubeIT/images/tango/16/actions/list-add.png
new file mode 100644 (file)
index 0000000..1aa7f09
Binary files /dev/null and b/CubeIT/images/tango/16/actions/list-add.png differ
diff --git a/CubeIT/images/tango/16/actions/list-remove.png b/CubeIT/images/tango/16/actions/list-remove.png
new file mode 100644 (file)
index 0000000..00b654e
Binary files /dev/null and b/CubeIT/images/tango/16/actions/list-remove.png differ
diff --git a/CubeIT/images/tango/16/actions/mail-forward.png b/CubeIT/images/tango/16/actions/mail-forward.png
new file mode 100644 (file)
index 0000000..de0199b
Binary files /dev/null and b/CubeIT/images/tango/16/actions/mail-forward.png differ
diff --git a/CubeIT/images/tango/16/actions/mail-mark-junk.png b/CubeIT/images/tango/16/actions/mail-mark-junk.png
new file mode 100644 (file)
index 0000000..f12d452
Binary files /dev/null and b/CubeIT/images/tango/16/actions/mail-mark-junk.png differ
diff --git a/CubeIT/images/tango/16/actions/mail-mark-not-junk.png b/CubeIT/images/tango/16/actions/mail-mark-not-junk.png
new file mode 100644 (file)
index 0000000..87c425f
Binary files /dev/null and b/CubeIT/images/tango/16/actions/mail-mark-not-junk.png differ
diff --git a/CubeIT/images/tango/16/actions/mail-message-new.png b/CubeIT/images/tango/16/actions/mail-message-new.png
new file mode 100644 (file)
index 0000000..7c68cb8
Binary files /dev/null and b/CubeIT/images/tango/16/actions/mail-message-new.png differ
diff --git a/CubeIT/images/tango/16/actions/mail-reply-all.png b/CubeIT/images/tango/16/actions/mail-reply-all.png
new file mode 100644 (file)
index 0000000..2017b0a
Binary files /dev/null and b/CubeIT/images/tango/16/actions/mail-reply-all.png differ
diff --git a/CubeIT/images/tango/16/actions/mail-reply-sender.png b/CubeIT/images/tango/16/actions/mail-reply-sender.png
new file mode 100644 (file)
index 0000000..a619741
Binary files /dev/null and b/CubeIT/images/tango/16/actions/mail-reply-sender.png differ
diff --git a/CubeIT/images/tango/16/actions/mail-send-receive.png b/CubeIT/images/tango/16/actions/mail-send-receive.png
new file mode 100644 (file)
index 0000000..3eb6a9c
Binary files /dev/null and b/CubeIT/images/tango/16/actions/mail-send-receive.png differ
diff --git a/CubeIT/images/tango/16/actions/media-eject.png b/CubeIT/images/tango/16/actions/media-eject.png
new file mode 100644 (file)
index 0000000..2084067
Binary files /dev/null and b/CubeIT/images/tango/16/actions/media-eject.png differ
diff --git a/CubeIT/images/tango/16/actions/media-playback-pause.png b/CubeIT/images/tango/16/actions/media-playback-pause.png
new file mode 100644 (file)
index 0000000..c8b4fe2
Binary files /dev/null and b/CubeIT/images/tango/16/actions/media-playback-pause.png differ
diff --git a/CubeIT/images/tango/16/actions/media-playback-start.png b/CubeIT/images/tango/16/actions/media-playback-start.png
new file mode 100644 (file)
index 0000000..a7de0fe
Binary files /dev/null and b/CubeIT/images/tango/16/actions/media-playback-start.png differ
diff --git a/CubeIT/images/tango/16/actions/media-playback-stop.png b/CubeIT/images/tango/16/actions/media-playback-stop.png
new file mode 100644 (file)
index 0000000..ede2815
Binary files /dev/null and b/CubeIT/images/tango/16/actions/media-playback-stop.png differ
diff --git a/CubeIT/images/tango/16/actions/media-record.png b/CubeIT/images/tango/16/actions/media-record.png
new file mode 100644 (file)
index 0000000..2f66cde
Binary files /dev/null and b/CubeIT/images/tango/16/actions/media-record.png differ
diff --git a/CubeIT/images/tango/16/actions/media-seek-backward.png b/CubeIT/images/tango/16/actions/media-seek-backward.png
new file mode 100644 (file)
index 0000000..ffcac31
Binary files /dev/null and b/CubeIT/images/tango/16/actions/media-seek-backward.png differ
diff --git a/CubeIT/images/tango/16/actions/media-seek-forward.png b/CubeIT/images/tango/16/actions/media-seek-forward.png
new file mode 100644 (file)
index 0000000..4d7e2cd
Binary files /dev/null and b/CubeIT/images/tango/16/actions/media-seek-forward.png differ
diff --git a/CubeIT/images/tango/16/actions/media-skip-backward.png b/CubeIT/images/tango/16/actions/media-skip-backward.png
new file mode 100644 (file)
index 0000000..94381f5
Binary files /dev/null and b/CubeIT/images/tango/16/actions/media-skip-backward.png differ
diff --git a/CubeIT/images/tango/16/actions/media-skip-forward.png b/CubeIT/images/tango/16/actions/media-skip-forward.png
new file mode 100644 (file)
index 0000000..758ec6f
Binary files /dev/null and b/CubeIT/images/tango/16/actions/media-skip-forward.png differ
diff --git a/CubeIT/images/tango/16/actions/process-stop.png b/CubeIT/images/tango/16/actions/process-stop.png
new file mode 100644 (file)
index 0000000..ab6808f
Binary files /dev/null and b/CubeIT/images/tango/16/actions/process-stop.png differ
diff --git a/CubeIT/images/tango/16/actions/system-lock-screen.png b/CubeIT/images/tango/16/actions/system-lock-screen.png
new file mode 100644 (file)
index 0000000..f7ea0cd
Binary files /dev/null and b/CubeIT/images/tango/16/actions/system-lock-screen.png differ
diff --git a/CubeIT/images/tango/16/actions/system-log-out.png b/CubeIT/images/tango/16/actions/system-log-out.png
new file mode 100644 (file)
index 0000000..0010931
Binary files /dev/null and b/CubeIT/images/tango/16/actions/system-log-out.png differ
diff --git a/CubeIT/images/tango/16/actions/system-search.png b/CubeIT/images/tango/16/actions/system-search.png
new file mode 100644 (file)
index 0000000..fd7f0b0
Binary files /dev/null and b/CubeIT/images/tango/16/actions/system-search.png differ
diff --git a/CubeIT/images/tango/16/actions/system-shutdown.png b/CubeIT/images/tango/16/actions/system-shutdown.png
new file mode 100644 (file)
index 0000000..afe62de
Binary files /dev/null and b/CubeIT/images/tango/16/actions/system-shutdown.png differ
diff --git a/CubeIT/images/tango/16/actions/tab-new.png b/CubeIT/images/tango/16/actions/tab-new.png
new file mode 100644 (file)
index 0000000..3e590f6
Binary files /dev/null and b/CubeIT/images/tango/16/actions/tab-new.png differ
diff --git a/CubeIT/images/tango/16/actions/view-fullscreen.png b/CubeIT/images/tango/16/actions/view-fullscreen.png
new file mode 100644 (file)
index 0000000..ffdabd4
Binary files /dev/null and b/CubeIT/images/tango/16/actions/view-fullscreen.png differ
diff --git a/CubeIT/images/tango/16/actions/view-refresh.png b/CubeIT/images/tango/16/actions/view-refresh.png
new file mode 100644 (file)
index 0000000..3fd71d6
Binary files /dev/null and b/CubeIT/images/tango/16/actions/view-refresh.png differ
diff --git a/CubeIT/images/tango/16/actions/window-new.png b/CubeIT/images/tango/16/actions/window-new.png
new file mode 100644 (file)
index 0000000..0e12ef9
Binary files /dev/null and b/CubeIT/images/tango/16/actions/window-new.png differ
diff --git a/CubeIT/images/tango/16/animations/process-working.png b/CubeIT/images/tango/16/animations/process-working.png
new file mode 100644 (file)
index 0000000..984bde4
Binary files /dev/null and b/CubeIT/images/tango/16/animations/process-working.png differ
diff --git a/CubeIT/images/tango/16/apps/accessories-calculator.png b/CubeIT/images/tango/16/apps/accessories-calculator.png
new file mode 100644 (file)
index 0000000..9248971
Binary files /dev/null and b/CubeIT/images/tango/16/apps/accessories-calculator.png differ
diff --git a/CubeIT/images/tango/16/apps/accessories-character-map.png b/CubeIT/images/tango/16/apps/accessories-character-map.png
new file mode 100644 (file)
index 0000000..5dd1124
Binary files /dev/null and b/CubeIT/images/tango/16/apps/accessories-character-map.png differ
diff --git a/CubeIT/images/tango/16/apps/accessories-text-editor.png b/CubeIT/images/tango/16/apps/accessories-text-editor.png
new file mode 100644 (file)
index 0000000..188e1c1
Binary files /dev/null and b/CubeIT/images/tango/16/apps/accessories-text-editor.png differ
diff --git a/CubeIT/images/tango/16/apps/help-browser.png b/CubeIT/images/tango/16/apps/help-browser.png
new file mode 100644 (file)
index 0000000..f25fc3f
Binary files /dev/null and b/CubeIT/images/tango/16/apps/help-browser.png differ
diff --git a/CubeIT/images/tango/16/apps/internet-group-chat.png b/CubeIT/images/tango/16/apps/internet-group-chat.png
new file mode 100644 (file)
index 0000000..f6e8325
Binary files /dev/null and b/CubeIT/images/tango/16/apps/internet-group-chat.png differ
diff --git a/CubeIT/images/tango/16/apps/internet-mail.png b/CubeIT/images/tango/16/apps/internet-mail.png
new file mode 100644 (file)
index 0000000..859251f
Binary files /dev/null and b/CubeIT/images/tango/16/apps/internet-mail.png differ
diff --git a/CubeIT/images/tango/16/apps/internet-news-reader.png b/CubeIT/images/tango/16/apps/internet-news-reader.png
new file mode 100644 (file)
index 0000000..a9850ee
Binary files /dev/null and b/CubeIT/images/tango/16/apps/internet-news-reader.png differ
diff --git a/CubeIT/images/tango/16/apps/internet-web-browser.png b/CubeIT/images/tango/16/apps/internet-web-browser.png
new file mode 100644 (file)
index 0000000..ac5957a
Binary files /dev/null and b/CubeIT/images/tango/16/apps/internet-web-browser.png differ
diff --git a/CubeIT/images/tango/16/apps/office-calendar.png b/CubeIT/images/tango/16/apps/office-calendar.png
new file mode 100644 (file)
index 0000000..106a592
Binary files /dev/null and b/CubeIT/images/tango/16/apps/office-calendar.png differ
diff --git a/CubeIT/images/tango/16/apps/preferences-desktop-accessibility.png b/CubeIT/images/tango/16/apps/preferences-desktop-accessibility.png
new file mode 100644 (file)
index 0000000..b365c27
Binary files /dev/null and b/CubeIT/images/tango/16/apps/preferences-desktop-accessibility.png differ
diff --git a/CubeIT/images/tango/16/apps/preferences-desktop-assistive-technology.png b/CubeIT/images/tango/16/apps/preferences-desktop-assistive-technology.png
new file mode 100644 (file)
index 0000000..513d817
Binary files /dev/null and b/CubeIT/images/tango/16/apps/preferences-desktop-assistive-technology.png differ
diff --git a/CubeIT/images/tango/16/apps/preferences-desktop-font.png b/CubeIT/images/tango/16/apps/preferences-desktop-font.png
new file mode 100644 (file)
index 0000000..18a0149
Binary files /dev/null and b/CubeIT/images/tango/16/apps/preferences-desktop-font.png differ
diff --git a/CubeIT/images/tango/16/apps/preferences-desktop-keyboard-shortcuts.png b/CubeIT/images/tango/16/apps/preferences-desktop-keyboard-shortcuts.png
new file mode 100644 (file)
index 0000000..291dc1a
Binary files /dev/null and b/CubeIT/images/tango/16/apps/preferences-desktop-keyboard-shortcuts.png differ
diff --git a/CubeIT/images/tango/16/apps/preferences-desktop-locale.png b/CubeIT/images/tango/16/apps/preferences-desktop-locale.png
new file mode 100644 (file)
index 0000000..5ef73a6
Binary files /dev/null and b/CubeIT/images/tango/16/apps/preferences-desktop-locale.png differ
diff --git a/CubeIT/images/tango/16/apps/preferences-desktop-multimedia.png b/CubeIT/images/tango/16/apps/preferences-desktop-multimedia.png
new file mode 100644 (file)
index 0000000..2e5ba43
Binary files /dev/null and b/CubeIT/images/tango/16/apps/preferences-desktop-multimedia.png differ
diff --git a/CubeIT/images/tango/16/apps/preferences-desktop-remote-desktop.png b/CubeIT/images/tango/16/apps/preferences-desktop-remote-desktop.png
new file mode 100644 (file)
index 0000000..b790f63
Binary files /dev/null and b/CubeIT/images/tango/16/apps/preferences-desktop-remote-desktop.png differ
diff --git a/CubeIT/images/tango/16/apps/preferences-desktop-screensaver.png b/CubeIT/images/tango/16/apps/preferences-desktop-screensaver.png
new file mode 100644 (file)
index 0000000..dc297db
Binary files /dev/null and b/CubeIT/images/tango/16/apps/preferences-desktop-screensaver.png differ
diff --git a/CubeIT/images/tango/16/apps/preferences-desktop-theme.png b/CubeIT/images/tango/16/apps/preferences-desktop-theme.png
new file mode 100644 (file)
index 0000000..fbea772
Binary files /dev/null and b/CubeIT/images/tango/16/apps/preferences-desktop-theme.png differ
diff --git a/CubeIT/images/tango/16/apps/preferences-desktop-wallpaper.png b/CubeIT/images/tango/16/apps/preferences-desktop-wallpaper.png
new file mode 100644 (file)
index 0000000..e7cc834
Binary files /dev/null and b/CubeIT/images/tango/16/apps/preferences-desktop-wallpaper.png differ
diff --git a/CubeIT/images/tango/16/apps/preferences-system-network-proxy.png b/CubeIT/images/tango/16/apps/preferences-system-network-proxy.png
new file mode 100644 (file)
index 0000000..bdeb79d
Binary files /dev/null and b/CubeIT/images/tango/16/apps/preferences-system-network-proxy.png differ
diff --git a/CubeIT/images/tango/16/apps/preferences-system-session.png b/CubeIT/images/tango/16/apps/preferences-system-session.png
new file mode 100644 (file)
index 0000000..35f8b57
Binary files /dev/null and b/CubeIT/images/tango/16/apps/preferences-system-session.png differ
diff --git a/CubeIT/images/tango/16/apps/preferences-system-windows.png b/CubeIT/images/tango/16/apps/preferences-system-windows.png
new file mode 100644 (file)
index 0000000..596caf9
Binary files /dev/null and b/CubeIT/images/tango/16/apps/preferences-system-windows.png differ
diff --git a/CubeIT/images/tango/16/apps/system-file-manager.png b/CubeIT/images/tango/16/apps/system-file-manager.png
new file mode 100644 (file)
index 0000000..60cade4
Binary files /dev/null and b/CubeIT/images/tango/16/apps/system-file-manager.png differ
diff --git a/CubeIT/images/tango/16/apps/system-installer.png b/CubeIT/images/tango/16/apps/system-installer.png
new file mode 100644 (file)
index 0000000..d16abcb
Binary files /dev/null and b/CubeIT/images/tango/16/apps/system-installer.png differ
diff --git a/CubeIT/images/tango/16/apps/system-software-update.png b/CubeIT/images/tango/16/apps/system-software-update.png
new file mode 100644 (file)
index 0000000..58f19c6
Binary files /dev/null and b/CubeIT/images/tango/16/apps/system-software-update.png differ
diff --git a/CubeIT/images/tango/16/apps/system-users.png b/CubeIT/images/tango/16/apps/system-users.png
new file mode 100644 (file)
index 0000000..9d2d500
Binary files /dev/null and b/CubeIT/images/tango/16/apps/system-users.png differ
diff --git a/CubeIT/images/tango/16/apps/utilities-system-monitor.png b/CubeIT/images/tango/16/apps/utilities-system-monitor.png
new file mode 100644 (file)
index 0000000..8734e77
Binary files /dev/null and b/CubeIT/images/tango/16/apps/utilities-system-monitor.png differ
diff --git a/CubeIT/images/tango/16/apps/utilities-terminal.png b/CubeIT/images/tango/16/apps/utilities-terminal.png
new file mode 100644 (file)
index 0000000..c5b797a
Binary files /dev/null and b/CubeIT/images/tango/16/apps/utilities-terminal.png differ
diff --git a/CubeIT/images/tango/16/categories/applications-accessories.png b/CubeIT/images/tango/16/categories/applications-accessories.png
new file mode 100644 (file)
index 0000000..c8d899c
Binary files /dev/null and b/CubeIT/images/tango/16/categories/applications-accessories.png differ
diff --git a/CubeIT/images/tango/16/categories/applications-development.png b/CubeIT/images/tango/16/categories/applications-development.png
new file mode 100644 (file)
index 0000000..4375227
Binary files /dev/null and b/CubeIT/images/tango/16/categories/applications-development.png differ
diff --git a/CubeIT/images/tango/16/categories/applications-games.png b/CubeIT/images/tango/16/categories/applications-games.png
new file mode 100644 (file)
index 0000000..4ba874b
Binary files /dev/null and b/CubeIT/images/tango/16/categories/applications-games.png differ
diff --git a/CubeIT/images/tango/16/categories/applications-graphics.png b/CubeIT/images/tango/16/categories/applications-graphics.png
new file mode 100644 (file)
index 0000000..4bb955f
Binary files /dev/null and b/CubeIT/images/tango/16/categories/applications-graphics.png differ
diff --git a/CubeIT/images/tango/16/categories/applications-internet.png b/CubeIT/images/tango/16/categories/applications-internet.png
new file mode 100644 (file)
index 0000000..a588968
Binary files /dev/null and b/CubeIT/images/tango/16/categories/applications-internet.png differ
diff --git a/CubeIT/images/tango/16/categories/applications-multimedia.png b/CubeIT/images/tango/16/categories/applications-multimedia.png
new file mode 100644 (file)
index 0000000..3e4ced5
Binary files /dev/null and b/CubeIT/images/tango/16/categories/applications-multimedia.png differ
diff --git a/CubeIT/images/tango/16/categories/applications-office.png b/CubeIT/images/tango/16/categories/applications-office.png
new file mode 100644 (file)
index 0000000..f9b3bb9
Binary files /dev/null and b/CubeIT/images/tango/16/categories/applications-office.png differ
diff --git a/CubeIT/images/tango/16/categories/applications-other.png b/CubeIT/images/tango/16/categories/applications-other.png
new file mode 100644 (file)
index 0000000..0d49f9d
Binary files /dev/null and b/CubeIT/images/tango/16/categories/applications-other.png differ
diff --git a/CubeIT/images/tango/16/categories/applications-system.png b/CubeIT/images/tango/16/categories/applications-system.png
new file mode 100644 (file)
index 0000000..d90ab66
Binary files /dev/null and b/CubeIT/images/tango/16/categories/applications-system.png differ
diff --git a/CubeIT/images/tango/16/categories/preferences-desktop-peripherals.png b/CubeIT/images/tango/16/categories/preferences-desktop-peripherals.png
new file mode 100644 (file)
index 0000000..2a63cee
Binary files /dev/null and b/CubeIT/images/tango/16/categories/preferences-desktop-peripherals.png differ
diff --git a/CubeIT/images/tango/16/categories/preferences-desktop.png b/CubeIT/images/tango/16/categories/preferences-desktop.png
new file mode 100644 (file)
index 0000000..68f916c
Binary files /dev/null and b/CubeIT/images/tango/16/categories/preferences-desktop.png differ
diff --git a/CubeIT/images/tango/16/categories/preferences-system.png b/CubeIT/images/tango/16/categories/preferences-system.png
new file mode 100644 (file)
index 0000000..9460dfc
Binary files /dev/null and b/CubeIT/images/tango/16/categories/preferences-system.png differ
diff --git a/CubeIT/images/tango/16/devices/audio-card.png b/CubeIT/images/tango/16/devices/audio-card.png
new file mode 100644 (file)
index 0000000..aaa7907
Binary files /dev/null and b/CubeIT/images/tango/16/devices/audio-card.png differ
diff --git a/CubeIT/images/tango/16/devices/audio-input-microphone.png b/CubeIT/images/tango/16/devices/audio-input-microphone.png
new file mode 100644 (file)
index 0000000..53a0393
Binary files /dev/null and b/CubeIT/images/tango/16/devices/audio-input-microphone.png differ
diff --git a/CubeIT/images/tango/16/devices/battery.png b/CubeIT/images/tango/16/devices/battery.png
new file mode 100644 (file)
index 0000000..8684e2a
Binary files /dev/null and b/CubeIT/images/tango/16/devices/battery.png differ
diff --git a/CubeIT/images/tango/16/devices/camera-photo.png b/CubeIT/images/tango/16/devices/camera-photo.png
new file mode 100644 (file)
index 0000000..1e8e886
Binary files /dev/null and b/CubeIT/images/tango/16/devices/camera-photo.png differ
diff --git a/CubeIT/images/tango/16/devices/camera-video.png b/CubeIT/images/tango/16/devices/camera-video.png
new file mode 100644 (file)
index 0000000..98fc211
Binary files /dev/null and b/CubeIT/images/tango/16/devices/camera-video.png differ
diff --git a/CubeIT/images/tango/16/devices/computer.png b/CubeIT/images/tango/16/devices/computer.png
new file mode 100644 (file)
index 0000000..c9cc93e
Binary files /dev/null and b/CubeIT/images/tango/16/devices/computer.png differ
diff --git a/CubeIT/images/tango/16/devices/drive-harddisk.png b/CubeIT/images/tango/16/devices/drive-harddisk.png
new file mode 100644 (file)
index 0000000..5c3b858
Binary files /dev/null and b/CubeIT/images/tango/16/devices/drive-harddisk.png differ
diff --git a/CubeIT/images/tango/16/devices/drive-optical.png b/CubeIT/images/tango/16/devices/drive-optical.png
new file mode 100644 (file)
index 0000000..4ced6fe
Binary files /dev/null and b/CubeIT/images/tango/16/devices/drive-optical.png differ
diff --git a/CubeIT/images/tango/16/devices/drive-removable-media.png b/CubeIT/images/tango/16/devices/drive-removable-media.png
new file mode 100644 (file)
index 0000000..9153898
Binary files /dev/null and b/CubeIT/images/tango/16/devices/drive-removable-media.png differ
diff --git a/CubeIT/images/tango/16/devices/input-gaming.png b/CubeIT/images/tango/16/devices/input-gaming.png
new file mode 100644 (file)
index 0000000..9d040ee
Binary files /dev/null and b/CubeIT/images/tango/16/devices/input-gaming.png differ
diff --git a/CubeIT/images/tango/16/devices/input-keyboard.png b/CubeIT/images/tango/16/devices/input-keyboard.png
new file mode 100644 (file)
index 0000000..29cd639
Binary files /dev/null and b/CubeIT/images/tango/16/devices/input-keyboard.png differ
diff --git a/CubeIT/images/tango/16/devices/input-mouse.png b/CubeIT/images/tango/16/devices/input-mouse.png
new file mode 100644 (file)
index 0000000..eeda4db
Binary files /dev/null and b/CubeIT/images/tango/16/devices/input-mouse.png differ
diff --git a/CubeIT/images/tango/16/devices/media-flash.png b/CubeIT/images/tango/16/devices/media-flash.png
new file mode 100644 (file)
index 0000000..bef542a
Binary files /dev/null and b/CubeIT/images/tango/16/devices/media-flash.png differ
diff --git a/CubeIT/images/tango/16/devices/media-floppy.png b/CubeIT/images/tango/16/devices/media-floppy.png
new file mode 100644 (file)
index 0000000..f1d7a19
Binary files /dev/null and b/CubeIT/images/tango/16/devices/media-floppy.png differ
diff --git a/CubeIT/images/tango/16/devices/media-optical.png b/CubeIT/images/tango/16/devices/media-optical.png
new file mode 100644 (file)
index 0000000..760de93
Binary files /dev/null and b/CubeIT/images/tango/16/devices/media-optical.png differ
diff --git a/CubeIT/images/tango/16/devices/multimedia-player.png b/CubeIT/images/tango/16/devices/multimedia-player.png
new file mode 100644 (file)
index 0000000..461e9de
Binary files /dev/null and b/CubeIT/images/tango/16/devices/multimedia-player.png differ
diff --git a/CubeIT/images/tango/16/devices/network-wired.png b/CubeIT/images/tango/16/devices/network-wired.png
new file mode 100644 (file)
index 0000000..3ac6b35
Binary files /dev/null and b/CubeIT/images/tango/16/devices/network-wired.png differ
diff --git a/CubeIT/images/tango/16/devices/network-wireless.png b/CubeIT/images/tango/16/devices/network-wireless.png
new file mode 100644 (file)
index 0000000..2dc6250
Binary files /dev/null and b/CubeIT/images/tango/16/devices/network-wireless.png differ
diff --git a/CubeIT/images/tango/16/devices/printer.png b/CubeIT/images/tango/16/devices/printer.png
new file mode 100644 (file)
index 0000000..12a4e39
Binary files /dev/null and b/CubeIT/images/tango/16/devices/printer.png differ
diff --git a/CubeIT/images/tango/16/devices/video-display.png b/CubeIT/images/tango/16/devices/video-display.png
new file mode 100644 (file)
index 0000000..a73a169
Binary files /dev/null and b/CubeIT/images/tango/16/devices/video-display.png differ
diff --git a/CubeIT/images/tango/16/emblems/emblem-favorite.png b/CubeIT/images/tango/16/emblems/emblem-favorite.png
new file mode 100644 (file)
index 0000000..3acb57d
Binary files /dev/null and b/CubeIT/images/tango/16/emblems/emblem-favorite.png differ
diff --git a/CubeIT/images/tango/16/emblems/emblem-important.png b/CubeIT/images/tango/16/emblems/emblem-important.png
new file mode 100644 (file)
index 0000000..81e9ed2
Binary files /dev/null and b/CubeIT/images/tango/16/emblems/emblem-important.png differ
diff --git a/CubeIT/images/tango/16/emblems/emblem-photos.png b/CubeIT/images/tango/16/emblems/emblem-photos.png
new file mode 100644 (file)
index 0000000..ab40463
Binary files /dev/null and b/CubeIT/images/tango/16/emblems/emblem-photos.png differ
diff --git a/CubeIT/images/tango/16/emblems/emblem-readonly.png b/CubeIT/images/tango/16/emblems/emblem-readonly.png
new file mode 100644 (file)
index 0000000..0466619
Binary files /dev/null and b/CubeIT/images/tango/16/emblems/emblem-readonly.png differ
diff --git a/CubeIT/images/tango/16/emblems/emblem-symbolic-link.png b/CubeIT/images/tango/16/emblems/emblem-symbolic-link.png
new file mode 100644 (file)
index 0000000..800b9e8
Binary files /dev/null and b/CubeIT/images/tango/16/emblems/emblem-symbolic-link.png differ
diff --git a/CubeIT/images/tango/16/emblems/emblem-system.png b/CubeIT/images/tango/16/emblems/emblem-system.png
new file mode 100644 (file)
index 0000000..259ed26
Binary files /dev/null and b/CubeIT/images/tango/16/emblems/emblem-system.png differ
diff --git a/CubeIT/images/tango/16/emblems/emblem-unreadable.png b/CubeIT/images/tango/16/emblems/emblem-unreadable.png
new file mode 100644 (file)
index 0000000..93edaf0
Binary files /dev/null and b/CubeIT/images/tango/16/emblems/emblem-unreadable.png differ
diff --git a/CubeIT/images/tango/16/emotes/face-angel.png b/CubeIT/images/tango/16/emotes/face-angel.png
new file mode 100644 (file)
index 0000000..d2c5e94
Binary files /dev/null and b/CubeIT/images/tango/16/emotes/face-angel.png differ
diff --git a/CubeIT/images/tango/16/emotes/face-crying.png b/CubeIT/images/tango/16/emotes/face-crying.png
new file mode 100644 (file)
index 0000000..a7e3f49
Binary files /dev/null and b/CubeIT/images/tango/16/emotes/face-crying.png differ
diff --git a/CubeIT/images/tango/16/emotes/face-devilish.png b/CubeIT/images/tango/16/emotes/face-devilish.png
new file mode 100644 (file)
index 0000000..8e2cd45
Binary files /dev/null and b/CubeIT/images/tango/16/emotes/face-devilish.png differ
diff --git a/CubeIT/images/tango/16/emotes/face-glasses.png b/CubeIT/images/tango/16/emotes/face-glasses.png
new file mode 100644 (file)
index 0000000..d13f2c8
Binary files /dev/null and b/CubeIT/images/tango/16/emotes/face-glasses.png differ
diff --git a/CubeIT/images/tango/16/emotes/face-grin.png b/CubeIT/images/tango/16/emotes/face-grin.png
new file mode 100644 (file)
index 0000000..d15cf2d
Binary files /dev/null and b/CubeIT/images/tango/16/emotes/face-grin.png differ
diff --git a/CubeIT/images/tango/16/emotes/face-kiss.png b/CubeIT/images/tango/16/emotes/face-kiss.png
new file mode 100644 (file)
index 0000000..809c1cf
Binary files /dev/null and b/CubeIT/images/tango/16/emotes/face-kiss.png differ
diff --git a/CubeIT/images/tango/16/emotes/face-monkey.png b/CubeIT/images/tango/16/emotes/face-monkey.png
new file mode 100644 (file)
index 0000000..69db8fa
Binary files /dev/null and b/CubeIT/images/tango/16/emotes/face-monkey.png differ
diff --git a/CubeIT/images/tango/16/emotes/face-plain.png b/CubeIT/images/tango/16/emotes/face-plain.png
new file mode 100644 (file)
index 0000000..a6761bd
Binary files /dev/null and b/CubeIT/images/tango/16/emotes/face-plain.png differ
diff --git a/CubeIT/images/tango/16/emotes/face-sad.png b/CubeIT/images/tango/16/emotes/face-sad.png
new file mode 100644 (file)
index 0000000..fa25895
Binary files /dev/null and b/CubeIT/images/tango/16/emotes/face-sad.png differ
diff --git a/CubeIT/images/tango/16/emotes/face-smile-big.png b/CubeIT/images/tango/16/emotes/face-smile-big.png
new file mode 100644 (file)
index 0000000..4cebcff
Binary files /dev/null and b/CubeIT/images/tango/16/emotes/face-smile-big.png differ
diff --git a/CubeIT/images/tango/16/emotes/face-smile.png b/CubeIT/images/tango/16/emotes/face-smile.png
new file mode 100644 (file)
index 0000000..01e0117
Binary files /dev/null and b/CubeIT/images/tango/16/emotes/face-smile.png differ
diff --git a/CubeIT/images/tango/16/emotes/face-surprise.png b/CubeIT/images/tango/16/emotes/face-surprise.png
new file mode 100644 (file)
index 0000000..863f304
Binary files /dev/null and b/CubeIT/images/tango/16/emotes/face-surprise.png differ
diff --git a/CubeIT/images/tango/16/emotes/face-wink.png b/CubeIT/images/tango/16/emotes/face-wink.png
new file mode 100644 (file)
index 0000000..46be685
Binary files /dev/null and b/CubeIT/images/tango/16/emotes/face-wink.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/application-certificate.png b/CubeIT/images/tango/16/mimetypes/application-certificate.png
new file mode 100644 (file)
index 0000000..486913d
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/application-certificate.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/application-x-executable.png b/CubeIT/images/tango/16/mimetypes/application-x-executable.png
new file mode 100644 (file)
index 0000000..003ded2
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/application-x-executable.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/audio-x-generic.png b/CubeIT/images/tango/16/mimetypes/audio-x-generic.png
new file mode 100644 (file)
index 0000000..fd877cb
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/audio-x-generic.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/font-x-generic.png b/CubeIT/images/tango/16/mimetypes/font-x-generic.png
new file mode 100644 (file)
index 0000000..bdbc1a8
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/font-x-generic.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/image-x-generic.png b/CubeIT/images/tango/16/mimetypes/image-x-generic.png
new file mode 100644 (file)
index 0000000..68da502
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/image-x-generic.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/package-x-generic.png b/CubeIT/images/tango/16/mimetypes/package-x-generic.png
new file mode 100644 (file)
index 0000000..9015426
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/package-x-generic.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/text-html.png b/CubeIT/images/tango/16/mimetypes/text-html.png
new file mode 100644 (file)
index 0000000..53014ab
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/text-html.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/text-x-generic-template.png b/CubeIT/images/tango/16/mimetypes/text-x-generic-template.png
new file mode 100644 (file)
index 0000000..a0cc462
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/text-x-generic-template.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/text-x-generic.png b/CubeIT/images/tango/16/mimetypes/text-x-generic.png
new file mode 100644 (file)
index 0000000..2d7f2d6
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/text-x-generic.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/text-x-script.png b/CubeIT/images/tango/16/mimetypes/text-x-script.png
new file mode 100644 (file)
index 0000000..c923098
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/text-x-script.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/video-x-generic.png b/CubeIT/images/tango/16/mimetypes/video-x-generic.png
new file mode 100644 (file)
index 0000000..64e7a30
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/video-x-generic.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/x-office-address-book.png b/CubeIT/images/tango/16/mimetypes/x-office-address-book.png
new file mode 100644 (file)
index 0000000..f3b5d9d
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/x-office-address-book.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/x-office-calendar.png b/CubeIT/images/tango/16/mimetypes/x-office-calendar.png
new file mode 100644 (file)
index 0000000..f6978d7
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/x-office-calendar.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/x-office-document-template.png b/CubeIT/images/tango/16/mimetypes/x-office-document-template.png
new file mode 100644 (file)
index 0000000..d1d9e7c
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/x-office-document-template.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/x-office-document.png b/CubeIT/images/tango/16/mimetypes/x-office-document.png
new file mode 100644 (file)
index 0000000..d18082e
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/x-office-document.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/x-office-drawing-template.png b/CubeIT/images/tango/16/mimetypes/x-office-drawing-template.png
new file mode 100644 (file)
index 0000000..dc384db
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/x-office-drawing-template.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/x-office-drawing.png b/CubeIT/images/tango/16/mimetypes/x-office-drawing.png
new file mode 100644 (file)
index 0000000..ffbb9e4
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/x-office-drawing.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/x-office-presentation-template.png b/CubeIT/images/tango/16/mimetypes/x-office-presentation-template.png
new file mode 100644 (file)
index 0000000..d90d034
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/x-office-presentation-template.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/x-office-presentation.png b/CubeIT/images/tango/16/mimetypes/x-office-presentation.png
new file mode 100644 (file)
index 0000000..f7ea302
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/x-office-presentation.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/x-office-spreadsheet-template.png b/CubeIT/images/tango/16/mimetypes/x-office-spreadsheet-template.png
new file mode 100644 (file)
index 0000000..e8bf570
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/x-office-spreadsheet-template.png differ
diff --git a/CubeIT/images/tango/16/mimetypes/x-office-spreadsheet.png b/CubeIT/images/tango/16/mimetypes/x-office-spreadsheet.png
new file mode 100644 (file)
index 0000000..a6b1268
Binary files /dev/null and b/CubeIT/images/tango/16/mimetypes/x-office-spreadsheet.png differ
diff --git a/CubeIT/images/tango/16/places/folder-remote.png b/CubeIT/images/tango/16/places/folder-remote.png
new file mode 100644 (file)
index 0000000..8f1f0a9
Binary files /dev/null and b/CubeIT/images/tango/16/places/folder-remote.png differ
diff --git a/CubeIT/images/tango/16/places/folder-saved-search.png b/CubeIT/images/tango/16/places/folder-saved-search.png
new file mode 100644 (file)
index 0000000..a55601d
Binary files /dev/null and b/CubeIT/images/tango/16/places/folder-saved-search.png differ
diff --git a/CubeIT/images/tango/16/places/folder.png b/CubeIT/images/tango/16/places/folder.png
new file mode 100644 (file)
index 0000000..901edc9
Binary files /dev/null and b/CubeIT/images/tango/16/places/folder.png differ
diff --git a/CubeIT/images/tango/16/places/network-server.png b/CubeIT/images/tango/16/places/network-server.png
new file mode 100644 (file)
index 0000000..068ffeb
Binary files /dev/null and b/CubeIT/images/tango/16/places/network-server.png differ
diff --git a/CubeIT/images/tango/16/places/network-workgroup.png b/CubeIT/images/tango/16/places/network-workgroup.png
new file mode 100644 (file)
index 0000000..5c140d8
Binary files /dev/null and b/CubeIT/images/tango/16/places/network-workgroup.png differ
diff --git a/CubeIT/images/tango/16/places/start-here.png b/CubeIT/images/tango/16/places/start-here.png
new file mode 100644 (file)
index 0000000..bd516a5
Binary files /dev/null and b/CubeIT/images/tango/16/places/start-here.png differ
diff --git a/CubeIT/images/tango/16/places/user-desktop.png b/CubeIT/images/tango/16/places/user-desktop.png
new file mode 100644 (file)
index 0000000..4c9787c
Binary files /dev/null and b/CubeIT/images/tango/16/places/user-desktop.png differ
diff --git a/CubeIT/images/tango/16/places/user-home.png b/CubeIT/images/tango/16/places/user-home.png
new file mode 100644 (file)
index 0000000..13d2c00
Binary files /dev/null and b/CubeIT/images/tango/16/places/user-home.png differ
diff --git a/CubeIT/images/tango/16/places/user-trash.png b/CubeIT/images/tango/16/places/user-trash.png
new file mode 100644 (file)
index 0000000..0e0953c
Binary files /dev/null and b/CubeIT/images/tango/16/places/user-trash.png differ
diff --git a/CubeIT/images/tango/16/status/audio-volume-high.png b/CubeIT/images/tango/16/status/audio-volume-high.png
new file mode 100644 (file)
index 0000000..ec8f00b
Binary files /dev/null and b/CubeIT/images/tango/16/status/audio-volume-high.png differ
diff --git a/CubeIT/images/tango/16/status/audio-volume-low.png b/CubeIT/images/tango/16/status/audio-volume-low.png
new file mode 100644 (file)
index 0000000..4d7239f
Binary files /dev/null and b/CubeIT/images/tango/16/status/audio-volume-low.png differ
diff --git a/CubeIT/images/tango/16/status/audio-volume-medium.png b/CubeIT/images/tango/16/status/audio-volume-medium.png
new file mode 100644 (file)
index 0000000..36ca7b0
Binary files /dev/null and b/CubeIT/images/tango/16/status/audio-volume-medium.png differ
diff --git a/CubeIT/images/tango/16/status/audio-volume-muted.png b/CubeIT/images/tango/16/status/audio-volume-muted.png
new file mode 100644 (file)
index 0000000..af5a97b
Binary files /dev/null and b/CubeIT/images/tango/16/status/audio-volume-muted.png differ
diff --git a/CubeIT/images/tango/16/status/battery-caution.png b/CubeIT/images/tango/16/status/battery-caution.png
new file mode 100644 (file)
index 0000000..53a27d1
Binary files /dev/null and b/CubeIT/images/tango/16/status/battery-caution.png differ
diff --git a/CubeIT/images/tango/16/status/dialog-error.png b/CubeIT/images/tango/16/status/dialog-error.png
new file mode 100644 (file)
index 0000000..3bbbb4a
Binary files /dev/null and b/CubeIT/images/tango/16/status/dialog-error.png differ
diff --git a/CubeIT/images/tango/16/status/dialog-information.png b/CubeIT/images/tango/16/status/dialog-information.png
new file mode 100644 (file)
index 0000000..8851b99
Binary files /dev/null and b/CubeIT/images/tango/16/status/dialog-information.png differ
diff --git a/CubeIT/images/tango/16/status/dialog-warning.png b/CubeIT/images/tango/16/status/dialog-warning.png
new file mode 100644 (file)
index 0000000..a9e4ff3
Binary files /dev/null and b/CubeIT/images/tango/16/status/dialog-warning.png differ
diff --git a/CubeIT/images/tango/16/status/folder-drag-accept.png b/CubeIT/images/tango/16/status/folder-drag-accept.png
new file mode 100644 (file)
index 0000000..4a6c897
Binary files /dev/null and b/CubeIT/images/tango/16/status/folder-drag-accept.png differ
diff --git a/CubeIT/images/tango/16/status/folder-open.png b/CubeIT/images/tango/16/status/folder-open.png
new file mode 100644 (file)
index 0000000..1e074cd
Binary files /dev/null and b/CubeIT/images/tango/16/status/folder-open.png differ
diff --git a/CubeIT/images/tango/16/status/folder-visiting.png b/CubeIT/images/tango/16/status/folder-visiting.png
new file mode 100644 (file)
index 0000000..d8d1be6
Binary files /dev/null and b/CubeIT/images/tango/16/status/folder-visiting.png differ
diff --git a/CubeIT/images/tango/16/status/image-loading.png b/CubeIT/images/tango/16/status/image-loading.png
new file mode 100644 (file)
index 0000000..174994e
Binary files /dev/null and b/CubeIT/images/tango/16/status/image-loading.png differ
diff --git a/CubeIT/images/tango/16/status/image-missing.png b/CubeIT/images/tango/16/status/image-missing.png
new file mode 100644 (file)
index 0000000..a644f24
Binary files /dev/null and b/CubeIT/images/tango/16/status/image-missing.png differ
diff --git a/CubeIT/images/tango/16/status/mail-attachment.png b/CubeIT/images/tango/16/status/mail-attachment.png
new file mode 100644 (file)
index 0000000..529bb7f
Binary files /dev/null and b/CubeIT/images/tango/16/status/mail-attachment.png differ
diff --git a/CubeIT/images/tango/16/status/network-error.png b/CubeIT/images/tango/16/status/network-error.png
new file mode 100644 (file)
index 0000000..3f18ed0
Binary files /dev/null and b/CubeIT/images/tango/16/status/network-error.png differ
diff --git a/CubeIT/images/tango/16/status/network-idle.png b/CubeIT/images/tango/16/status/network-idle.png
new file mode 100644 (file)
index 0000000..0efee57
Binary files /dev/null and b/CubeIT/images/tango/16/status/network-idle.png differ
diff --git a/CubeIT/images/tango/16/status/network-offline.png b/CubeIT/images/tango/16/status/network-offline.png
new file mode 100644 (file)
index 0000000..1f210fc
Binary files /dev/null and b/CubeIT/images/tango/16/status/network-offline.png differ
diff --git a/CubeIT/images/tango/16/status/network-receive.png b/CubeIT/images/tango/16/status/network-receive.png
new file mode 100644 (file)
index 0000000..b57c65c
Binary files /dev/null and b/CubeIT/images/tango/16/status/network-receive.png differ
diff --git a/CubeIT/images/tango/16/status/network-transmit-receive.png b/CubeIT/images/tango/16/status/network-transmit-receive.png
new file mode 100644 (file)
index 0000000..271d37d
Binary files /dev/null and b/CubeIT/images/tango/16/status/network-transmit-receive.png differ
diff --git a/CubeIT/images/tango/16/status/network-transmit.png b/CubeIT/images/tango/16/status/network-transmit.png
new file mode 100644 (file)
index 0000000..08aa28b
Binary files /dev/null and b/CubeIT/images/tango/16/status/network-transmit.png differ
diff --git a/CubeIT/images/tango/16/status/network-wireless-encrypted.png b/CubeIT/images/tango/16/status/network-wireless-encrypted.png
new file mode 100644 (file)
index 0000000..12b572a
Binary files /dev/null and b/CubeIT/images/tango/16/status/network-wireless-encrypted.png differ
diff --git a/CubeIT/images/tango/16/status/printer-error.png b/CubeIT/images/tango/16/status/printer-error.png
new file mode 100644 (file)
index 0000000..21d4ded
Binary files /dev/null and b/CubeIT/images/tango/16/status/printer-error.png differ
diff --git a/CubeIT/images/tango/16/status/software-update-available.png b/CubeIT/images/tango/16/status/software-update-available.png
new file mode 100644 (file)
index 0000000..ab8d494
Binary files /dev/null and b/CubeIT/images/tango/16/status/software-update-available.png differ
diff --git a/CubeIT/images/tango/16/status/software-update-urgent.png b/CubeIT/images/tango/16/status/software-update-urgent.png
new file mode 100644 (file)
index 0000000..433945d
Binary files /dev/null and b/CubeIT/images/tango/16/status/software-update-urgent.png differ
diff --git a/CubeIT/images/tango/16/status/user-trash-full.png b/CubeIT/images/tango/16/status/user-trash-full.png
new file mode 100644 (file)
index 0000000..695d215
Binary files /dev/null and b/CubeIT/images/tango/16/status/user-trash-full.png differ
diff --git a/CubeIT/images/tango/16/status/weather-clear-night.png b/CubeIT/images/tango/16/status/weather-clear-night.png
new file mode 100644 (file)
index 0000000..4345752
Binary files /dev/null and b/CubeIT/images/tango/16/status/weather-clear-night.png differ
diff --git a/CubeIT/images/tango/16/status/weather-clear.png b/CubeIT/images/tango/16/status/weather-clear.png
new file mode 100644 (file)
index 0000000..7dc15ea
Binary files /dev/null and b/CubeIT/images/tango/16/status/weather-clear.png differ
diff --git a/CubeIT/images/tango/16/status/weather-few-clouds-night.png b/CubeIT/images/tango/16/status/weather-few-clouds-night.png
new file mode 100644 (file)
index 0000000..d69efec
Binary files /dev/null and b/CubeIT/images/tango/16/status/weather-few-clouds-night.png differ
diff --git a/CubeIT/images/tango/16/status/weather-few-clouds.png b/CubeIT/images/tango/16/status/weather-few-clouds.png
new file mode 100644 (file)
index 0000000..0e633a3
Binary files /dev/null and b/CubeIT/images/tango/16/status/weather-few-clouds.png differ
diff --git a/CubeIT/images/tango/16/status/weather-overcast.png b/CubeIT/images/tango/16/status/weather-overcast.png
new file mode 100644 (file)
index 0000000..0045129
Binary files /dev/null and b/CubeIT/images/tango/16/status/weather-overcast.png differ
diff --git a/CubeIT/images/tango/16/status/weather-severe-alert.png b/CubeIT/images/tango/16/status/weather-severe-alert.png
new file mode 100644 (file)
index 0000000..98e9f6c
Binary files /dev/null and b/CubeIT/images/tango/16/status/weather-severe-alert.png differ
diff --git a/CubeIT/images/tango/16/status/weather-showers-scattered.png b/CubeIT/images/tango/16/status/weather-showers-scattered.png
new file mode 100644 (file)
index 0000000..8d10d84
Binary files /dev/null and b/CubeIT/images/tango/16/status/weather-showers-scattered.png differ
diff --git a/CubeIT/images/tango/16/status/weather-showers.png b/CubeIT/images/tango/16/status/weather-showers.png
new file mode 100644 (file)
index 0000000..d9685d2
Binary files /dev/null and b/CubeIT/images/tango/16/status/weather-showers.png differ
diff --git a/CubeIT/images/tango/16/status/weather-snow.png b/CubeIT/images/tango/16/status/weather-snow.png
new file mode 100644 (file)
index 0000000..a83d855
Binary files /dev/null and b/CubeIT/images/tango/16/status/weather-snow.png differ
diff --git a/CubeIT/images/tango/16/status/weather-storm.png b/CubeIT/images/tango/16/status/weather-storm.png
new file mode 100644 (file)
index 0000000..feebe1d
Binary files /dev/null and b/CubeIT/images/tango/16/status/weather-storm.png differ
diff --git a/CubeIT/images/tango/22/actions/address-book-new.png b/CubeIT/images/tango/22/actions/address-book-new.png
new file mode 100644 (file)
index 0000000..fad446c
Binary files /dev/null and b/CubeIT/images/tango/22/actions/address-book-new.png differ
diff --git a/CubeIT/images/tango/22/actions/appointment-new.png b/CubeIT/images/tango/22/actions/appointment-new.png
new file mode 100644 (file)
index 0000000..d676ffd
Binary files /dev/null and b/CubeIT/images/tango/22/actions/appointment-new.png differ
diff --git a/CubeIT/images/tango/22/actions/bookmark-new.png b/CubeIT/images/tango/22/actions/bookmark-new.png
new file mode 100644 (file)
index 0000000..3ec0300
Binary files /dev/null and b/CubeIT/images/tango/22/actions/bookmark-new.png differ
diff --git a/CubeIT/images/tango/22/actions/contact-new.png b/CubeIT/images/tango/22/actions/contact-new.png
new file mode 100644 (file)
index 0000000..c9921be
Binary files /dev/null and b/CubeIT/images/tango/22/actions/contact-new.png differ
diff --git a/CubeIT/images/tango/22/actions/document-new.png b/CubeIT/images/tango/22/actions/document-new.png
new file mode 100644 (file)
index 0000000..e3808a1
Binary files /dev/null and b/CubeIT/images/tango/22/actions/document-new.png differ
diff --git a/CubeIT/images/tango/22/actions/document-open.png b/CubeIT/images/tango/22/actions/document-open.png
new file mode 100644 (file)
index 0000000..7c4ee79
Binary files /dev/null and b/CubeIT/images/tango/22/actions/document-open.png differ
diff --git a/CubeIT/images/tango/22/actions/document-print-preview.png b/CubeIT/images/tango/22/actions/document-print-preview.png
new file mode 100644 (file)
index 0000000..75f43aa
Binary files /dev/null and b/CubeIT/images/tango/22/actions/document-print-preview.png differ
diff --git a/CubeIT/images/tango/22/actions/document-print.png b/CubeIT/images/tango/22/actions/document-print.png
new file mode 100644 (file)
index 0000000..52dd67e
Binary files /dev/null and b/CubeIT/images/tango/22/actions/document-print.png differ
diff --git a/CubeIT/images/tango/22/actions/document-properties.png b/CubeIT/images/tango/22/actions/document-properties.png
new file mode 100644 (file)
index 0000000..a5ad728
Binary files /dev/null and b/CubeIT/images/tango/22/actions/document-properties.png differ
diff --git a/CubeIT/images/tango/22/actions/document-save-as.png b/CubeIT/images/tango/22/actions/document-save-as.png
new file mode 100644 (file)
index 0000000..340a87e
Binary files /dev/null and b/CubeIT/images/tango/22/actions/document-save-as.png differ
diff --git a/CubeIT/images/tango/22/actions/document-save.png b/CubeIT/images/tango/22/actions/document-save.png
new file mode 100644 (file)
index 0000000..a94e0ea
Binary files /dev/null and b/CubeIT/images/tango/22/actions/document-save.png differ
diff --git a/CubeIT/images/tango/22/actions/edit-clear.png b/CubeIT/images/tango/22/actions/edit-clear.png
new file mode 100644 (file)
index 0000000..bbc77eb
Binary files /dev/null and b/CubeIT/images/tango/22/actions/edit-clear.png differ
diff --git a/CubeIT/images/tango/22/actions/edit-copy.png b/CubeIT/images/tango/22/actions/edit-copy.png
new file mode 100644 (file)
index 0000000..345b2f1
Binary files /dev/null and b/CubeIT/images/tango/22/actions/edit-copy.png differ
diff --git a/CubeIT/images/tango/22/actions/edit-cut.png b/CubeIT/images/tango/22/actions/edit-cut.png
new file mode 100644 (file)
index 0000000..7017d1b
Binary files /dev/null and b/CubeIT/images/tango/22/actions/edit-cut.png differ
diff --git a/CubeIT/images/tango/22/actions/edit-delete.png b/CubeIT/images/tango/22/actions/edit-delete.png
new file mode 100644 (file)
index 0000000..3811b64
Binary files /dev/null and b/CubeIT/images/tango/22/actions/edit-delete.png differ
diff --git a/CubeIT/images/tango/22/actions/edit-find-replace.png b/CubeIT/images/tango/22/actions/edit-find-replace.png
new file mode 100644 (file)
index 0000000..de3a75f
Binary files /dev/null and b/CubeIT/images/tango/22/actions/edit-find-replace.png differ
diff --git a/CubeIT/images/tango/22/actions/edit-find.png b/CubeIT/images/tango/22/actions/edit-find.png
new file mode 100644 (file)
index 0000000..4f078cb
Binary files /dev/null and b/CubeIT/images/tango/22/actions/edit-find.png differ
diff --git a/CubeIT/images/tango/22/actions/edit-paste.png b/CubeIT/images/tango/22/actions/edit-paste.png
new file mode 100644 (file)
index 0000000..f6a625c
Binary files /dev/null and b/CubeIT/images/tango/22/actions/edit-paste.png differ
diff --git a/CubeIT/images/tango/22/actions/edit-redo.png b/CubeIT/images/tango/22/actions/edit-redo.png
new file mode 100644 (file)
index 0000000..576cfc7
Binary files /dev/null and b/CubeIT/images/tango/22/actions/edit-redo.png differ
diff --git a/CubeIT/images/tango/22/actions/edit-select-all.png b/CubeIT/images/tango/22/actions/edit-select-all.png
new file mode 100644 (file)
index 0000000..e6331c6
Binary files /dev/null and b/CubeIT/images/tango/22/actions/edit-select-all.png differ
diff --git a/CubeIT/images/tango/22/actions/edit-undo.png b/CubeIT/images/tango/22/actions/edit-undo.png
new file mode 100644 (file)
index 0000000..f37c696
Binary files /dev/null and b/CubeIT/images/tango/22/actions/edit-undo.png differ
diff --git a/CubeIT/images/tango/22/actions/folder-new.png b/CubeIT/images/tango/22/actions/folder-new.png
new file mode 100644 (file)
index 0000000..1c3dc94
Binary files /dev/null and b/CubeIT/images/tango/22/actions/folder-new.png differ
diff --git a/CubeIT/images/tango/22/actions/format-indent-less.png b/CubeIT/images/tango/22/actions/format-indent-less.png
new file mode 100644 (file)
index 0000000..5292012
Binary files /dev/null and b/CubeIT/images/tango/22/actions/format-indent-less.png differ
diff --git a/CubeIT/images/tango/22/actions/format-indent-more.png b/CubeIT/images/tango/22/actions/format-indent-more.png
new file mode 100644 (file)
index 0000000..ad2b527
Binary files /dev/null and b/CubeIT/images/tango/22/actions/format-indent-more.png differ
diff --git a/CubeIT/images/tango/22/actions/format-justify-center.png b/CubeIT/images/tango/22/actions/format-justify-center.png
new file mode 100644 (file)
index 0000000..0777a9a
Binary files /dev/null and b/CubeIT/images/tango/22/actions/format-justify-center.png differ
diff --git a/CubeIT/images/tango/22/actions/format-justify-fill.png b/CubeIT/images/tango/22/actions/format-justify-fill.png
new file mode 100644 (file)
index 0000000..0ce4013
Binary files /dev/null and b/CubeIT/images/tango/22/actions/format-justify-fill.png differ
diff --git a/CubeIT/images/tango/22/actions/format-justify-left.png b/CubeIT/images/tango/22/actions/format-justify-left.png
new file mode 100644 (file)
index 0000000..a8e1ca8
Binary files /dev/null and b/CubeIT/images/tango/22/actions/format-justify-left.png differ
diff --git a/CubeIT/images/tango/22/actions/format-justify-right.png b/CubeIT/images/tango/22/actions/format-justify-right.png
new file mode 100644 (file)
index 0000000..8228d81
Binary files /dev/null and b/CubeIT/images/tango/22/actions/format-justify-right.png differ
diff --git a/CubeIT/images/tango/22/actions/format-text-bold.png b/CubeIT/images/tango/22/actions/format-text-bold.png
new file mode 100644 (file)
index 0000000..7166e3d
Binary files /dev/null and b/CubeIT/images/tango/22/actions/format-text-bold.png differ
diff --git a/CubeIT/images/tango/22/actions/format-text-italic.png b/CubeIT/images/tango/22/actions/format-text-italic.png
new file mode 100644 (file)
index 0000000..ef68fb3
Binary files /dev/null and b/CubeIT/images/tango/22/actions/format-text-italic.png differ
diff --git a/CubeIT/images/tango/22/actions/format-text-strikethrough.png b/CubeIT/images/tango/22/actions/format-text-strikethrough.png
new file mode 100644 (file)
index 0000000..e4ca573
Binary files /dev/null and b/CubeIT/images/tango/22/actions/format-text-strikethrough.png differ
diff --git a/CubeIT/images/tango/22/actions/format-text-underline.png b/CubeIT/images/tango/22/actions/format-text-underline.png
new file mode 100644 (file)
index 0000000..d33422b
Binary files /dev/null and b/CubeIT/images/tango/22/actions/format-text-underline.png differ
diff --git a/CubeIT/images/tango/22/actions/go-bottom.png b/CubeIT/images/tango/22/actions/go-bottom.png
new file mode 100644 (file)
index 0000000..d81e071
Binary files /dev/null and b/CubeIT/images/tango/22/actions/go-bottom.png differ
diff --git a/CubeIT/images/tango/22/actions/go-down.png b/CubeIT/images/tango/22/actions/go-down.png
new file mode 100644 (file)
index 0000000..af23788
Binary files /dev/null and b/CubeIT/images/tango/22/actions/go-down.png differ
diff --git a/CubeIT/images/tango/22/actions/go-first.png b/CubeIT/images/tango/22/actions/go-first.png
new file mode 100644 (file)
index 0000000..bf0d8f2
Binary files /dev/null and b/CubeIT/images/tango/22/actions/go-first.png differ
diff --git a/CubeIT/images/tango/22/actions/go-home.png b/CubeIT/images/tango/22/actions/go-home.png
new file mode 100644 (file)
index 0000000..9d62109
Binary files /dev/null and b/CubeIT/images/tango/22/actions/go-home.png differ
diff --git a/CubeIT/images/tango/22/actions/go-jump.png b/CubeIT/images/tango/22/actions/go-jump.png
new file mode 100644 (file)
index 0000000..373dce9
Binary files /dev/null and b/CubeIT/images/tango/22/actions/go-jump.png differ
diff --git a/CubeIT/images/tango/22/actions/go-last.png b/CubeIT/images/tango/22/actions/go-last.png
new file mode 100644 (file)
index 0000000..32df45d
Binary files /dev/null and b/CubeIT/images/tango/22/actions/go-last.png differ
diff --git a/CubeIT/images/tango/22/actions/go-next.png b/CubeIT/images/tango/22/actions/go-next.png
new file mode 100644 (file)
index 0000000..6f3f65d
Binary files /dev/null and b/CubeIT/images/tango/22/actions/go-next.png differ
diff --git a/CubeIT/images/tango/22/actions/go-previous.png b/CubeIT/images/tango/22/actions/go-previous.png
new file mode 100644 (file)
index 0000000..93be3d1
Binary files /dev/null and b/CubeIT/images/tango/22/actions/go-previous.png differ
diff --git a/CubeIT/images/tango/22/actions/go-top.png b/CubeIT/images/tango/22/actions/go-top.png
new file mode 100644 (file)
index 0000000..96f98dd
Binary files /dev/null and b/CubeIT/images/tango/22/actions/go-top.png differ
diff --git a/CubeIT/images/tango/22/actions/go-up.png b/CubeIT/images/tango/22/actions/go-up.png
new file mode 100644 (file)
index 0000000..b0a0cd7
Binary files /dev/null and b/CubeIT/images/tango/22/actions/go-up.png differ
diff --git a/CubeIT/images/tango/22/actions/list-add.png b/CubeIT/images/tango/22/actions/list-add.png
new file mode 100644 (file)
index 0000000..306d3d8
Binary files /dev/null and b/CubeIT/images/tango/22/actions/list-add.png differ
diff --git a/CubeIT/images/tango/22/actions/list-remove.png b/CubeIT/images/tango/22/actions/list-remove.png
new file mode 100644 (file)
index 0000000..45e5c2a
Binary files /dev/null and b/CubeIT/images/tango/22/actions/list-remove.png differ
diff --git a/CubeIT/images/tango/22/actions/mail-forward.png b/CubeIT/images/tango/22/actions/mail-forward.png
new file mode 100644 (file)
index 0000000..51aa0b4
Binary files /dev/null and b/CubeIT/images/tango/22/actions/mail-forward.png differ
diff --git a/CubeIT/images/tango/22/actions/mail-mark-junk.png b/CubeIT/images/tango/22/actions/mail-mark-junk.png
new file mode 100644 (file)
index 0000000..f980138
Binary files /dev/null and b/CubeIT/images/tango/22/actions/mail-mark-junk.png differ
diff --git a/CubeIT/images/tango/22/actions/mail-mark-not-junk.png b/CubeIT/images/tango/22/actions/mail-mark-not-junk.png
new file mode 100644 (file)
index 0000000..da6fb95
Binary files /dev/null and b/CubeIT/images/tango/22/actions/mail-mark-not-junk.png differ
diff --git a/CubeIT/images/tango/22/actions/mail-message-new.png b/CubeIT/images/tango/22/actions/mail-message-new.png
new file mode 100644 (file)
index 0000000..96ae0e9
Binary files /dev/null and b/CubeIT/images/tango/22/actions/mail-message-new.png differ
diff --git a/CubeIT/images/tango/22/actions/mail-reply-all.png b/CubeIT/images/tango/22/actions/mail-reply-all.png
new file mode 100644 (file)
index 0000000..c158a72
Binary files /dev/null and b/CubeIT/images/tango/22/actions/mail-reply-all.png differ
diff --git a/CubeIT/images/tango/22/actions/mail-reply-sender.png b/CubeIT/images/tango/22/actions/mail-reply-sender.png
new file mode 100644 (file)
index 0000000..4f077a1
Binary files /dev/null and b/CubeIT/images/tango/22/actions/mail-reply-sender.png differ
diff --git a/CubeIT/images/tango/22/actions/mail-send-receive.png b/CubeIT/images/tango/22/actions/mail-send-receive.png
new file mode 100644 (file)
index 0000000..69e8272
Binary files /dev/null and b/CubeIT/images/tango/22/actions/mail-send-receive.png differ
diff --git a/CubeIT/images/tango/22/actions/media-eject.png b/CubeIT/images/tango/22/actions/media-eject.png
new file mode 100644 (file)
index 0000000..5a232e6
Binary files /dev/null and b/CubeIT/images/tango/22/actions/media-eject.png differ
diff --git a/CubeIT/images/tango/22/actions/media-playback-pause.png b/CubeIT/images/tango/22/actions/media-playback-pause.png
new file mode 100644 (file)
index 0000000..ee40fc2
Binary files /dev/null and b/CubeIT/images/tango/22/actions/media-playback-pause.png differ
diff --git a/CubeIT/images/tango/22/actions/media-playback-start.png b/CubeIT/images/tango/22/actions/media-playback-start.png
new file mode 100644 (file)
index 0000000..10102d8
Binary files /dev/null and b/CubeIT/images/tango/22/actions/media-playback-start.png differ
diff --git a/CubeIT/images/tango/22/actions/media-playback-stop.png b/CubeIT/images/tango/22/actions/media-playback-stop.png
new file mode 100644 (file)
index 0000000..d0e4733
Binary files /dev/null and b/CubeIT/images/tango/22/actions/media-playback-stop.png differ
diff --git a/CubeIT/images/tango/22/actions/media-record.png b/CubeIT/images/tango/22/actions/media-record.png
new file mode 100644 (file)
index 0000000..fb53e14
Binary files /dev/null and b/CubeIT/images/tango/22/actions/media-record.png differ
diff --git a/CubeIT/images/tango/22/actions/media-seek-backward.png b/CubeIT/images/tango/22/actions/media-seek-backward.png
new file mode 100644 (file)
index 0000000..e094d12
Binary files /dev/null and b/CubeIT/images/tango/22/actions/media-seek-backward.png differ
diff --git a/CubeIT/images/tango/22/actions/media-seek-forward.png b/CubeIT/images/tango/22/actions/media-seek-forward.png
new file mode 100644 (file)
index 0000000..b9c2c6c
Binary files /dev/null and b/CubeIT/images/tango/22/actions/media-seek-forward.png differ
diff --git a/CubeIT/images/tango/22/actions/media-skip-backward.png b/CubeIT/images/tango/22/actions/media-skip-backward.png
new file mode 100644 (file)
index 0000000..2a5e703
Binary files /dev/null and b/CubeIT/images/tango/22/actions/media-skip-backward.png differ
diff --git a/CubeIT/images/tango/22/actions/media-skip-forward.png b/CubeIT/images/tango/22/actions/media-skip-forward.png
new file mode 100644 (file)
index 0000000..28bca3e
Binary files /dev/null and b/CubeIT/images/tango/22/actions/media-skip-forward.png differ
diff --git a/CubeIT/images/tango/22/actions/process-stop.png b/CubeIT/images/tango/22/actions/process-stop.png
new file mode 100644 (file)
index 0000000..b68290b
Binary files /dev/null and b/CubeIT/images/tango/22/actions/process-stop.png differ
diff --git a/CubeIT/images/tango/22/actions/system-lock-screen.png b/CubeIT/images/tango/22/actions/system-lock-screen.png
new file mode 100644 (file)
index 0000000..dc6b825
Binary files /dev/null and b/CubeIT/images/tango/22/actions/system-lock-screen.png differ
diff --git a/CubeIT/images/tango/22/actions/system-log-out.png b/CubeIT/images/tango/22/actions/system-log-out.png
new file mode 100644 (file)
index 0000000..28ac66f
Binary files /dev/null and b/CubeIT/images/tango/22/actions/system-log-out.png differ
diff --git a/CubeIT/images/tango/22/actions/system-search.png b/CubeIT/images/tango/22/actions/system-search.png
new file mode 100644 (file)
index 0000000..4e522b2
Binary files /dev/null and b/CubeIT/images/tango/22/actions/system-search.png differ
diff --git a/CubeIT/images/tango/22/actions/system-shutdown.png b/CubeIT/images/tango/22/actions/system-shutdown.png
new file mode 100644 (file)
index 0000000..0c2a2d1
Binary files /dev/null and b/CubeIT/images/tango/22/actions/system-shutdown.png differ
diff --git a/CubeIT/images/tango/22/actions/tab-new.png b/CubeIT/images/tango/22/actions/tab-new.png
new file mode 100644 (file)
index 0000000..c7c7cf2
Binary files /dev/null and b/CubeIT/images/tango/22/actions/tab-new.png differ
diff --git a/CubeIT/images/tango/22/actions/view-fullscreen.png b/CubeIT/images/tango/22/actions/view-fullscreen.png
new file mode 100644 (file)
index 0000000..6f0f292
Binary files /dev/null and b/CubeIT/images/tango/22/actions/view-fullscreen.png differ
diff --git a/CubeIT/images/tango/22/actions/view-refresh.png b/CubeIT/images/tango/22/actions/view-refresh.png
new file mode 100644 (file)
index 0000000..cab4d02
Binary files /dev/null and b/CubeIT/images/tango/22/actions/view-refresh.png differ
diff --git a/CubeIT/images/tango/22/actions/window-new.png b/CubeIT/images/tango/22/actions/window-new.png
new file mode 100644 (file)
index 0000000..314f997
Binary files /dev/null and b/CubeIT/images/tango/22/actions/window-new.png differ
diff --git a/CubeIT/images/tango/22/animations/process-working.png b/CubeIT/images/tango/22/animations/process-working.png
new file mode 100644 (file)
index 0000000..9005de7
Binary files /dev/null and b/CubeIT/images/tango/22/animations/process-working.png differ
diff --git a/CubeIT/images/tango/22/apps/accessories-calculator.png b/CubeIT/images/tango/22/apps/accessories-calculator.png
new file mode 100644 (file)
index 0000000..e12d465
Binary files /dev/null and b/CubeIT/images/tango/22/apps/accessories-calculator.png differ
diff --git a/CubeIT/images/tango/22/apps/accessories-character-map.png b/CubeIT/images/tango/22/apps/accessories-character-map.png
new file mode 100644 (file)
index 0000000..e630c7e
Binary files /dev/null and b/CubeIT/images/tango/22/apps/accessories-character-map.png differ
diff --git a/CubeIT/images/tango/22/apps/accessories-text-editor.png b/CubeIT/images/tango/22/apps/accessories-text-editor.png
new file mode 100644 (file)
index 0000000..c3d245d
Binary files /dev/null and b/CubeIT/images/tango/22/apps/accessories-text-editor.png differ
diff --git a/CubeIT/images/tango/22/apps/help-browser.png b/CubeIT/images/tango/22/apps/help-browser.png
new file mode 100644 (file)
index 0000000..c67c7a6
Binary files /dev/null and b/CubeIT/images/tango/22/apps/help-browser.png differ
diff --git a/CubeIT/images/tango/22/apps/internet-group-chat.png b/CubeIT/images/tango/22/apps/internet-group-chat.png
new file mode 100644 (file)
index 0000000..3cac5df
Binary files /dev/null and b/CubeIT/images/tango/22/apps/internet-group-chat.png differ
diff --git a/CubeIT/images/tango/22/apps/internet-mail.png b/CubeIT/images/tango/22/apps/internet-mail.png
new file mode 100644 (file)
index 0000000..68fc82e
Binary files /dev/null and b/CubeIT/images/tango/22/apps/internet-mail.png differ
diff --git a/CubeIT/images/tango/22/apps/internet-news-reader.png b/CubeIT/images/tango/22/apps/internet-news-reader.png
new file mode 100644 (file)
index 0000000..43950eb
Binary files /dev/null and b/CubeIT/images/tango/22/apps/internet-news-reader.png differ
diff --git a/CubeIT/images/tango/22/apps/internet-web-browser.png b/CubeIT/images/tango/22/apps/internet-web-browser.png
new file mode 100644 (file)
index 0000000..4125479
Binary files /dev/null and b/CubeIT/images/tango/22/apps/internet-web-browser.png differ
diff --git a/CubeIT/images/tango/22/apps/office-calendar.png b/CubeIT/images/tango/22/apps/office-calendar.png
new file mode 100644 (file)
index 0000000..60ad82b
Binary files /dev/null and b/CubeIT/images/tango/22/apps/office-calendar.png differ
diff --git a/CubeIT/images/tango/22/apps/preferences-desktop-accessibility.png b/CubeIT/images/tango/22/apps/preferences-desktop-accessibility.png
new file mode 100644 (file)
index 0000000..919d735
Binary files /dev/null and b/CubeIT/images/tango/22/apps/preferences-desktop-accessibility.png differ
diff --git a/CubeIT/images/tango/22/apps/preferences-desktop-assistive-technology.png b/CubeIT/images/tango/22/apps/preferences-desktop-assistive-technology.png
new file mode 100644 (file)
index 0000000..483e4a6
Binary files /dev/null and b/CubeIT/images/tango/22/apps/preferences-desktop-assistive-technology.png differ
diff --git a/CubeIT/images/tango/22/apps/preferences-desktop-font.png b/CubeIT/images/tango/22/apps/preferences-desktop-font.png
new file mode 100644 (file)
index 0000000..d452db7
Binary files /dev/null and b/CubeIT/images/tango/22/apps/preferences-desktop-font.png differ
diff --git a/CubeIT/images/tango/22/apps/preferences-desktop-keyboard-shortcuts.png b/CubeIT/images/tango/22/apps/preferences-desktop-keyboard-shortcuts.png
new file mode 100644 (file)
index 0000000..c3e1328
Binary files /dev/null and b/CubeIT/images/tango/22/apps/preferences-desktop-keyboard-shortcuts.png differ
diff --git a/CubeIT/images/tango/22/apps/preferences-desktop-locale.png b/CubeIT/images/tango/22/apps/preferences-desktop-locale.png
new file mode 100644 (file)
index 0000000..ed0480b
Binary files /dev/null and b/CubeIT/images/tango/22/apps/preferences-desktop-locale.png differ
diff --git a/CubeIT/images/tango/22/apps/preferences-desktop-multimedia.png b/CubeIT/images/tango/22/apps/preferences-desktop-multimedia.png
new file mode 100644 (file)
index 0000000..e1bdf85
Binary files /dev/null and b/CubeIT/images/tango/22/apps/preferences-desktop-multimedia.png differ
diff --git a/CubeIT/images/tango/22/apps/preferences-desktop-remote-desktop.png b/CubeIT/images/tango/22/apps/preferences-desktop-remote-desktop.png
new file mode 100644 (file)
index 0000000..d25792b
Binary files /dev/null and b/CubeIT/images/tango/22/apps/preferences-desktop-remote-desktop.png differ
diff --git a/CubeIT/images/tango/22/apps/preferences-desktop-screensaver.png b/CubeIT/images/tango/22/apps/preferences-desktop-screensaver.png
new file mode 100644 (file)
index 0000000..619e196
Binary files /dev/null and b/CubeIT/images/tango/22/apps/preferences-desktop-screensaver.png differ
diff --git a/CubeIT/images/tango/22/apps/preferences-desktop-theme.png b/CubeIT/images/tango/22/apps/preferences-desktop-theme.png
new file mode 100644 (file)
index 0000000..7b5f0ba
Binary files /dev/null and b/CubeIT/images/tango/22/apps/preferences-desktop-theme.png differ
diff --git a/CubeIT/images/tango/22/apps/preferences-desktop-wallpaper.png b/CubeIT/images/tango/22/apps/preferences-desktop-wallpaper.png
new file mode 100644 (file)
index 0000000..3389e55
Binary files /dev/null and b/CubeIT/images/tango/22/apps/preferences-desktop-wallpaper.png differ
diff --git a/CubeIT/images/tango/22/apps/preferences-system-network-proxy.png b/CubeIT/images/tango/22/apps/preferences-system-network-proxy.png
new file mode 100644 (file)
index 0000000..bec24de
Binary files /dev/null and b/CubeIT/images/tango/22/apps/preferences-system-network-proxy.png differ
diff --git a/CubeIT/images/tango/22/apps/preferences-system-session.png b/CubeIT/images/tango/22/apps/preferences-system-session.png
new file mode 100644 (file)
index 0000000..9a09875
Binary files /dev/null and b/CubeIT/images/tango/22/apps/preferences-system-session.png differ
diff --git a/CubeIT/images/tango/22/apps/preferences-system-windows.png b/CubeIT/images/tango/22/apps/preferences-system-windows.png
new file mode 100644 (file)
index 0000000..2caa205
Binary files /dev/null and b/CubeIT/images/tango/22/apps/preferences-system-windows.png differ
diff --git a/CubeIT/images/tango/22/apps/system-file-manager.png b/CubeIT/images/tango/22/apps/system-file-manager.png
new file mode 100644 (file)
index 0000000..44d6310
Binary files /dev/null and b/CubeIT/images/tango/22/apps/system-file-manager.png differ
diff --git a/CubeIT/images/tango/22/apps/system-installer.png b/CubeIT/images/tango/22/apps/system-installer.png
new file mode 100644 (file)
index 0000000..b75c6b1
Binary files /dev/null and b/CubeIT/images/tango/22/apps/system-installer.png differ
diff --git a/CubeIT/images/tango/22/apps/system-software-update.png b/CubeIT/images/tango/22/apps/system-software-update.png
new file mode 100644 (file)
index 0000000..5f7a362
Binary files /dev/null and b/CubeIT/images/tango/22/apps/system-software-update.png differ
diff --git a/CubeIT/images/tango/22/apps/system-users.png b/CubeIT/images/tango/22/apps/system-users.png
new file mode 100644 (file)
index 0000000..bced28c
Binary files /dev/null and b/CubeIT/images/tango/22/apps/system-users.png differ
diff --git a/CubeIT/images/tango/22/apps/utilities-system-monitor.png b/CubeIT/images/tango/22/apps/utilities-system-monitor.png
new file mode 100644 (file)
index 0000000..f2d266f
Binary files /dev/null and b/CubeIT/images/tango/22/apps/utilities-system-monitor.png differ
diff --git a/CubeIT/images/tango/22/apps/utilities-terminal.png b/CubeIT/images/tango/22/apps/utilities-terminal.png
new file mode 100644 (file)
index 0000000..ceb0fb9
Binary files /dev/null and b/CubeIT/images/tango/22/apps/utilities-terminal.png differ
diff --git a/CubeIT/images/tango/22/categories/applications-accessories.png b/CubeIT/images/tango/22/categories/applications-accessories.png
new file mode 100644 (file)
index 0000000..f619403
Binary files /dev/null and b/CubeIT/images/tango/22/categories/applications-accessories.png differ
diff --git a/CubeIT/images/tango/22/categories/applications-development.png b/CubeIT/images/tango/22/categories/applications-development.png
new file mode 100644 (file)
index 0000000..8ef08e2
Binary files /dev/null and b/CubeIT/images/tango/22/categories/applications-development.png differ
diff --git a/CubeIT/images/tango/22/categories/applications-games.png b/CubeIT/images/tango/22/categories/applications-games.png
new file mode 100644 (file)
index 0000000..cc78378
Binary files /dev/null and b/CubeIT/images/tango/22/categories/applications-games.png differ
diff --git a/CubeIT/images/tango/22/categories/applications-graphics.png b/CubeIT/images/tango/22/categories/applications-graphics.png
new file mode 100644 (file)
index 0000000..ca883da
Binary files /dev/null and b/CubeIT/images/tango/22/categories/applications-graphics.png differ
diff --git a/CubeIT/images/tango/22/categories/applications-internet.png b/CubeIT/images/tango/22/categories/applications-internet.png
new file mode 100644 (file)
index 0000000..d4bfb82
Binary files /dev/null and b/CubeIT/images/tango/22/categories/applications-internet.png differ
diff --git a/CubeIT/images/tango/22/categories/applications-multimedia.png b/CubeIT/images/tango/22/categories/applications-multimedia.png
new file mode 100644 (file)
index 0000000..ae2d28c
Binary files /dev/null and b/CubeIT/images/tango/22/categories/applications-multimedia.png differ
diff --git a/CubeIT/images/tango/22/categories/applications-office.png b/CubeIT/images/tango/22/categories/applications-office.png
new file mode 100644 (file)
index 0000000..7e3be9b
Binary files /dev/null and b/CubeIT/images/tango/22/categories/applications-office.png differ
diff --git a/CubeIT/images/tango/22/categories/applications-other.png b/CubeIT/images/tango/22/categories/applications-other.png
new file mode 100644 (file)
index 0000000..308acb2
Binary files /dev/null and b/CubeIT/images/tango/22/categories/applications-other.png differ
diff --git a/CubeIT/images/tango/22/categories/applications-system.png b/CubeIT/images/tango/22/categories/applications-system.png
new file mode 100644 (file)
index 0000000..4decc89
Binary files /dev/null and b/CubeIT/images/tango/22/categories/applications-system.png differ
diff --git a/CubeIT/images/tango/22/categories/preferences-desktop-peripherals.png b/CubeIT/images/tango/22/categories/preferences-desktop-peripherals.png
new file mode 100644 (file)
index 0000000..985bcde
Binary files /dev/null and b/CubeIT/images/tango/22/categories/preferences-desktop-peripherals.png differ
diff --git a/CubeIT/images/tango/22/categories/preferences-desktop.png b/CubeIT/images/tango/22/categories/preferences-desktop.png
new file mode 100644 (file)
index 0000000..c359063
Binary files /dev/null and b/CubeIT/images/tango/22/categories/preferences-desktop.png differ
diff --git a/CubeIT/images/tango/22/categories/preferences-system.png b/CubeIT/images/tango/22/categories/preferences-system.png
new file mode 100644 (file)
index 0000000..cc91d65
Binary files /dev/null and b/CubeIT/images/tango/22/categories/preferences-system.png differ
diff --git a/CubeIT/images/tango/22/devices/audio-card.png b/CubeIT/images/tango/22/devices/audio-card.png
new file mode 100644 (file)
index 0000000..93d99aa
Binary files /dev/null and b/CubeIT/images/tango/22/devices/audio-card.png differ
diff --git a/CubeIT/images/tango/22/devices/audio-input-microphone.png b/CubeIT/images/tango/22/devices/audio-input-microphone.png
new file mode 100644 (file)
index 0000000..496d244
Binary files /dev/null and b/CubeIT/images/tango/22/devices/audio-input-microphone.png differ
diff --git a/CubeIT/images/tango/22/devices/battery.png b/CubeIT/images/tango/22/devices/battery.png
new file mode 100644 (file)
index 0000000..ad45674
Binary files /dev/null and b/CubeIT/images/tango/22/devices/battery.png differ
diff --git a/CubeIT/images/tango/22/devices/camera-photo.png b/CubeIT/images/tango/22/devices/camera-photo.png
new file mode 100644 (file)
index 0000000..8d28baf
Binary files /dev/null and b/CubeIT/images/tango/22/devices/camera-photo.png differ
diff --git a/CubeIT/images/tango/22/devices/camera-video.png b/CubeIT/images/tango/22/devices/camera-video.png
new file mode 100644 (file)
index 0000000..e84992c
Binary files /dev/null and b/CubeIT/images/tango/22/devices/camera-video.png differ
diff --git a/CubeIT/images/tango/22/devices/computer.png b/CubeIT/images/tango/22/devices/computer.png
new file mode 100644 (file)
index 0000000..8b3716c
Binary files /dev/null and b/CubeIT/images/tango/22/devices/computer.png differ
diff --git a/CubeIT/images/tango/22/devices/drive-harddisk.png b/CubeIT/images/tango/22/devices/drive-harddisk.png
new file mode 100644 (file)
index 0000000..da41305
Binary files /dev/null and b/CubeIT/images/tango/22/devices/drive-harddisk.png differ
diff --git a/CubeIT/images/tango/22/devices/drive-optical.png b/CubeIT/images/tango/22/devices/drive-optical.png
new file mode 100644 (file)
index 0000000..af2c826
Binary files /dev/null and b/CubeIT/images/tango/22/devices/drive-optical.png differ
diff --git a/CubeIT/images/tango/22/devices/drive-removable-media.png b/CubeIT/images/tango/22/devices/drive-removable-media.png
new file mode 100644 (file)
index 0000000..f487310
Binary files /dev/null and b/CubeIT/images/tango/22/devices/drive-removable-media.png differ
diff --git a/CubeIT/images/tango/22/devices/input-gaming.png b/CubeIT/images/tango/22/devices/input-gaming.png
new file mode 100644 (file)
index 0000000..18f7739
Binary files /dev/null and b/CubeIT/images/tango/22/devices/input-gaming.png differ
diff --git a/CubeIT/images/tango/22/devices/input-keyboard.png b/CubeIT/images/tango/22/devices/input-keyboard.png
new file mode 100644 (file)
index 0000000..fb422a0
Binary files /dev/null and b/CubeIT/images/tango/22/devices/input-keyboard.png differ
diff --git a/CubeIT/images/tango/22/devices/input-mouse.png b/CubeIT/images/tango/22/devices/input-mouse.png
new file mode 100644 (file)
index 0000000..c1bbc79
Binary files /dev/null and b/CubeIT/images/tango/22/devices/input-mouse.png differ
diff --git a/CubeIT/images/tango/22/devices/media-flash.png b/CubeIT/images/tango/22/devices/media-flash.png
new file mode 100644 (file)
index 0000000..c6a2d0c
Binary files /dev/null and b/CubeIT/images/tango/22/devices/media-flash.png differ
diff --git a/CubeIT/images/tango/22/devices/media-floppy.png b/CubeIT/images/tango/22/devices/media-floppy.png
new file mode 100644 (file)
index 0000000..af79de8
Binary files /dev/null and b/CubeIT/images/tango/22/devices/media-floppy.png differ
diff --git a/CubeIT/images/tango/22/devices/media-optical.png b/CubeIT/images/tango/22/devices/media-optical.png
new file mode 100644 (file)
index 0000000..e86bfa3
Binary files /dev/null and b/CubeIT/images/tango/22/devices/media-optical.png differ
diff --git a/CubeIT/images/tango/22/devices/multimedia-player.png b/CubeIT/images/tango/22/devices/multimedia-player.png
new file mode 100644 (file)
index 0000000..8be0228
Binary files /dev/null and b/CubeIT/images/tango/22/devices/multimedia-player.png differ
diff --git a/CubeIT/images/tango/22/devices/network-wired.png b/CubeIT/images/tango/22/devices/network-wired.png
new file mode 100644 (file)
index 0000000..51c8b16
Binary files /dev/null and b/CubeIT/images/tango/22/devices/network-wired.png differ
diff --git a/CubeIT/images/tango/22/devices/network-wireless.png b/CubeIT/images/tango/22/devices/network-wireless.png
new file mode 100644 (file)
index 0000000..2d7851f
Binary files /dev/null and b/CubeIT/images/tango/22/devices/network-wireless.png differ
diff --git a/CubeIT/images/tango/22/devices/printer.png b/CubeIT/images/tango/22/devices/printer.png
new file mode 100644 (file)
index 0000000..65caccf
Binary files /dev/null and b/CubeIT/images/tango/22/devices/printer.png differ
diff --git a/CubeIT/images/tango/22/devices/video-display.png b/CubeIT/images/tango/22/devices/video-display.png
new file mode 100644 (file)
index 0000000..58fc213
Binary files /dev/null and b/CubeIT/images/tango/22/devices/video-display.png differ
diff --git a/CubeIT/images/tango/22/emblems/emblem-favorite.png b/CubeIT/images/tango/22/emblems/emblem-favorite.png
new file mode 100644 (file)
index 0000000..9b3d7ac
Binary files /dev/null and b/CubeIT/images/tango/22/emblems/emblem-favorite.png differ
diff --git a/CubeIT/images/tango/22/emblems/emblem-important.png b/CubeIT/images/tango/22/emblems/emblem-important.png
new file mode 100644 (file)
index 0000000..0437a0d
Binary files /dev/null and b/CubeIT/images/tango/22/emblems/emblem-important.png differ
diff --git a/CubeIT/images/tango/22/emblems/emblem-photos.png b/CubeIT/images/tango/22/emblems/emblem-photos.png
new file mode 100644 (file)
index 0000000..b8b1c63
Binary files /dev/null and b/CubeIT/images/tango/22/emblems/emblem-photos.png differ
diff --git a/CubeIT/images/tango/22/emblems/emblem-readonly.png b/CubeIT/images/tango/22/emblems/emblem-readonly.png
new file mode 100644 (file)
index 0000000..33896d9
Binary files /dev/null and b/CubeIT/images/tango/22/emblems/emblem-readonly.png differ
diff --git a/CubeIT/images/tango/22/emblems/emblem-symbolic-link.png b/CubeIT/images/tango/22/emblems/emblem-symbolic-link.png
new file mode 100644 (file)
index 0000000..d02781d
Binary files /dev/null and b/CubeIT/images/tango/22/emblems/emblem-symbolic-link.png differ
diff --git a/CubeIT/images/tango/22/emblems/emblem-system.png b/CubeIT/images/tango/22/emblems/emblem-system.png
new file mode 100644 (file)
index 0000000..1f2b3b3
Binary files /dev/null and b/CubeIT/images/tango/22/emblems/emblem-system.png differ
diff --git a/CubeIT/images/tango/22/emblems/emblem-unreadable.png b/CubeIT/images/tango/22/emblems/emblem-unreadable.png
new file mode 100644 (file)
index 0000000..372e427
Binary files /dev/null and b/CubeIT/images/tango/22/emblems/emblem-unreadable.png differ
diff --git a/CubeIT/images/tango/22/emotes/face-angel.png b/CubeIT/images/tango/22/emotes/face-angel.png
new file mode 100644 (file)
index 0000000..604bf17
Binary files /dev/null and b/CubeIT/images/tango/22/emotes/face-angel.png differ
diff --git a/CubeIT/images/tango/22/emotes/face-crying.png b/CubeIT/images/tango/22/emotes/face-crying.png
new file mode 100644 (file)
index 0000000..349c50e
Binary files /dev/null and b/CubeIT/images/tango/22/emotes/face-crying.png differ
diff --git a/CubeIT/images/tango/22/emotes/face-devilish.png b/CubeIT/images/tango/22/emotes/face-devilish.png
new file mode 100644 (file)
index 0000000..b8670f2
Binary files /dev/null and b/CubeIT/images/tango/22/emotes/face-devilish.png differ
diff --git a/CubeIT/images/tango/22/emotes/face-glasses.png b/CubeIT/images/tango/22/emotes/face-glasses.png
new file mode 100644 (file)
index 0000000..fc83f3f
Binary files /dev/null and b/CubeIT/images/tango/22/emotes/face-glasses.png differ
diff --git a/CubeIT/images/tango/22/emotes/face-grin.png b/CubeIT/images/tango/22/emotes/face-grin.png
new file mode 100644 (file)
index 0000000..0ef3cee
Binary files /dev/null and b/CubeIT/images/tango/22/emotes/face-grin.png differ
diff --git a/CubeIT/images/tango/22/emotes/face-kiss.png b/CubeIT/images/tango/22/emotes/face-kiss.png
new file mode 100644 (file)
index 0000000..a5d1bdd
Binary files /dev/null and b/CubeIT/images/tango/22/emotes/face-kiss.png differ
diff --git a/CubeIT/images/tango/22/emotes/face-monkey.png b/CubeIT/images/tango/22/emotes/face-monkey.png
new file mode 100644 (file)
index 0000000..ced7b2e
Binary files /dev/null and b/CubeIT/images/tango/22/emotes/face-monkey.png differ
diff --git a/CubeIT/images/tango/22/emotes/face-plain.png b/CubeIT/images/tango/22/emotes/face-plain.png
new file mode 100644 (file)
index 0000000..854c743
Binary files /dev/null and b/CubeIT/images/tango/22/emotes/face-plain.png differ
diff --git a/CubeIT/images/tango/22/emotes/face-sad.png b/CubeIT/images/tango/22/emotes/face-sad.png
new file mode 100644 (file)
index 0000000..8acc8e4
Binary files /dev/null and b/CubeIT/images/tango/22/emotes/face-sad.png differ
diff --git a/CubeIT/images/tango/22/emotes/face-smile-big.png b/CubeIT/images/tango/22/emotes/face-smile-big.png
new file mode 100644 (file)
index 0000000..54930d7
Binary files /dev/null and b/CubeIT/images/tango/22/emotes/face-smile-big.png differ
diff --git a/CubeIT/images/tango/22/emotes/face-smile.png b/CubeIT/images/tango/22/emotes/face-smile.png
new file mode 100644 (file)
index 0000000..3b7c0b6
Binary files /dev/null and b/CubeIT/images/tango/22/emotes/face-smile.png differ
diff --git a/CubeIT/images/tango/22/emotes/face-surprise.png b/CubeIT/images/tango/22/emotes/face-surprise.png
new file mode 100644 (file)
index 0000000..815e613
Binary files /dev/null and b/CubeIT/images/tango/22/emotes/face-surprise.png differ
diff --git a/CubeIT/images/tango/22/emotes/face-wink.png b/CubeIT/images/tango/22/emotes/face-wink.png
new file mode 100644 (file)
index 0000000..816d82f
Binary files /dev/null and b/CubeIT/images/tango/22/emotes/face-wink.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/application-certificate.png b/CubeIT/images/tango/22/mimetypes/application-certificate.png
new file mode 100644 (file)
index 0000000..9657b43
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/application-certificate.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/application-x-executable.png b/CubeIT/images/tango/22/mimetypes/application-x-executable.png
new file mode 100644 (file)
index 0000000..2bb2adf
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/application-x-executable.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/audio-x-generic.png b/CubeIT/images/tango/22/mimetypes/audio-x-generic.png
new file mode 100644 (file)
index 0000000..efcbd6c
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/audio-x-generic.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/font-x-generic.png b/CubeIT/images/tango/22/mimetypes/font-x-generic.png
new file mode 100644 (file)
index 0000000..bdc1814
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/font-x-generic.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/image-x-generic.png b/CubeIT/images/tango/22/mimetypes/image-x-generic.png
new file mode 100644 (file)
index 0000000..10f4671
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/image-x-generic.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/package-x-generic.png b/CubeIT/images/tango/22/mimetypes/package-x-generic.png
new file mode 100644 (file)
index 0000000..dc76287
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/package-x-generic.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/text-html.png b/CubeIT/images/tango/22/mimetypes/text-html.png
new file mode 100644 (file)
index 0000000..51beaff
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/text-html.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/text-x-generic-template.png b/CubeIT/images/tango/22/mimetypes/text-x-generic-template.png
new file mode 100644 (file)
index 0000000..f13f7c9
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/text-x-generic-template.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/text-x-generic.png b/CubeIT/images/tango/22/mimetypes/text-x-generic.png
new file mode 100644 (file)
index 0000000..d68a56c
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/text-x-generic.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/text-x-script.png b/CubeIT/images/tango/22/mimetypes/text-x-script.png
new file mode 100644 (file)
index 0000000..abf8f61
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/text-x-script.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/video-x-generic.png b/CubeIT/images/tango/22/mimetypes/video-x-generic.png
new file mode 100644 (file)
index 0000000..6e26d9c
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/video-x-generic.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/x-office-address-book.png b/CubeIT/images/tango/22/mimetypes/x-office-address-book.png
new file mode 100644 (file)
index 0000000..2e519ce
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/x-office-address-book.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/x-office-calendar.png b/CubeIT/images/tango/22/mimetypes/x-office-calendar.png
new file mode 100644 (file)
index 0000000..0c224e9
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/x-office-calendar.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/x-office-document-template.png b/CubeIT/images/tango/22/mimetypes/x-office-document-template.png
new file mode 100644 (file)
index 0000000..18c4246
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/x-office-document-template.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/x-office-document.png b/CubeIT/images/tango/22/mimetypes/x-office-document.png
new file mode 100644 (file)
index 0000000..c9baeda
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/x-office-document.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/x-office-drawing-template.png b/CubeIT/images/tango/22/mimetypes/x-office-drawing-template.png
new file mode 100644 (file)
index 0000000..a7045ab
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/x-office-drawing-template.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/x-office-drawing.png b/CubeIT/images/tango/22/mimetypes/x-office-drawing.png
new file mode 100644 (file)
index 0000000..5d84f9f
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/x-office-drawing.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/x-office-presentation-template.png b/CubeIT/images/tango/22/mimetypes/x-office-presentation-template.png
new file mode 100644 (file)
index 0000000..1f7bc9b
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/x-office-presentation-template.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/x-office-presentation.png b/CubeIT/images/tango/22/mimetypes/x-office-presentation.png
new file mode 100644 (file)
index 0000000..3633f53
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/x-office-presentation.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/x-office-spreadsheet-template.png b/CubeIT/images/tango/22/mimetypes/x-office-spreadsheet-template.png
new file mode 100644 (file)
index 0000000..ea7d467
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/x-office-spreadsheet-template.png differ
diff --git a/CubeIT/images/tango/22/mimetypes/x-office-spreadsheet.png b/CubeIT/images/tango/22/mimetypes/x-office-spreadsheet.png
new file mode 100644 (file)
index 0000000..c82d574
Binary files /dev/null and b/CubeIT/images/tango/22/mimetypes/x-office-spreadsheet.png differ
diff --git a/CubeIT/images/tango/22/places/folder-remote.png b/CubeIT/images/tango/22/places/folder-remote.png
new file mode 100644 (file)
index 0000000..91ccf9b
Binary files /dev/null and b/CubeIT/images/tango/22/places/folder-remote.png differ
diff --git a/CubeIT/images/tango/22/places/folder-saved-search.png b/CubeIT/images/tango/22/places/folder-saved-search.png
new file mode 100644 (file)
index 0000000..15f6e02
Binary files /dev/null and b/CubeIT/images/tango/22/places/folder-saved-search.png differ
diff --git a/CubeIT/images/tango/22/places/folder.png b/CubeIT/images/tango/22/places/folder.png
new file mode 100644 (file)
index 0000000..45f71b1
Binary files /dev/null and b/CubeIT/images/tango/22/places/folder.png differ
diff --git a/CubeIT/images/tango/22/places/network-server.png b/CubeIT/images/tango/22/places/network-server.png
new file mode 100644 (file)
index 0000000..a0d7118
Binary files /dev/null and b/CubeIT/images/tango/22/places/network-server.png differ
diff --git a/CubeIT/images/tango/22/places/network-workgroup.png b/CubeIT/images/tango/22/places/network-workgroup.png
new file mode 100644 (file)
index 0000000..f96c9db
Binary files /dev/null and b/CubeIT/images/tango/22/places/network-workgroup.png differ
diff --git a/CubeIT/images/tango/22/places/start-here.png b/CubeIT/images/tango/22/places/start-here.png
new file mode 100644 (file)
index 0000000..fc9b049
Binary files /dev/null and b/CubeIT/images/tango/22/places/start-here.png differ
diff --git a/CubeIT/images/tango/22/places/user-desktop.png b/CubeIT/images/tango/22/places/user-desktop.png
new file mode 100644 (file)
index 0000000..d60b2f1
Binary files /dev/null and b/CubeIT/images/tango/22/places/user-desktop.png differ
diff --git a/CubeIT/images/tango/22/places/user-home.png b/CubeIT/images/tango/22/places/user-home.png
new file mode 100644 (file)
index 0000000..04cd328
Binary files /dev/null and b/CubeIT/images/tango/22/places/user-home.png differ
diff --git a/CubeIT/images/tango/22/places/user-trash.png b/CubeIT/images/tango/22/places/user-trash.png
new file mode 100644 (file)
index 0000000..05ff036
Binary files /dev/null and b/CubeIT/images/tango/22/places/user-trash.png differ
diff --git a/CubeIT/images/tango/22/status/audio-volume-high.png b/CubeIT/images/tango/22/status/audio-volume-high.png
new file mode 100644 (file)
index 0000000..1b2f30e
Binary files /dev/null and b/CubeIT/images/tango/22/status/audio-volume-high.png differ
diff --git a/CubeIT/images/tango/22/status/audio-volume-low.png b/CubeIT/images/tango/22/status/audio-volume-low.png
new file mode 100644 (file)
index 0000000..46bcd19
Binary files /dev/null and b/CubeIT/images/tango/22/status/audio-volume-low.png differ
diff --git a/CubeIT/images/tango/22/status/audio-volume-medium.png b/CubeIT/images/tango/22/status/audio-volume-medium.png
new file mode 100644 (file)
index 0000000..31883ef
Binary files /dev/null and b/CubeIT/images/tango/22/status/audio-volume-medium.png differ
diff --git a/CubeIT/images/tango/22/status/audio-volume-muted.png b/CubeIT/images/tango/22/status/audio-volume-muted.png
new file mode 100644 (file)
index 0000000..3e74c1d
Binary files /dev/null and b/CubeIT/images/tango/22/status/audio-volume-muted.png differ
diff --git a/CubeIT/images/tango/22/status/battery-caution.png b/CubeIT/images/tango/22/status/battery-caution.png
new file mode 100644 (file)
index 0000000..456f7a4
Binary files /dev/null and b/CubeIT/images/tango/22/status/battery-caution.png differ
diff --git a/CubeIT/images/tango/22/status/dialog-error.png b/CubeIT/images/tango/22/status/dialog-error.png
new file mode 100644 (file)
index 0000000..7d6aaf6
Binary files /dev/null and b/CubeIT/images/tango/22/status/dialog-error.png differ
diff --git a/CubeIT/images/tango/22/status/dialog-information.png b/CubeIT/images/tango/22/status/dialog-information.png
new file mode 100644 (file)
index 0000000..07cf010
Binary files /dev/null and b/CubeIT/images/tango/22/status/dialog-information.png differ
diff --git a/CubeIT/images/tango/22/status/dialog-warning.png b/CubeIT/images/tango/22/status/dialog-warning.png
new file mode 100644 (file)
index 0000000..45b64a7
Binary files /dev/null and b/CubeIT/images/tango/22/status/dialog-warning.png differ
diff --git a/CubeIT/images/tango/22/status/folder-drag-accept.png b/CubeIT/images/tango/22/status/folder-drag-accept.png
new file mode 100644 (file)
index 0000000..8e7d6e3
Binary files /dev/null and b/CubeIT/images/tango/22/status/folder-drag-accept.png differ
diff --git a/CubeIT/images/tango/22/status/folder-open.png b/CubeIT/images/tango/22/status/folder-open.png
new file mode 100644 (file)
index 0000000..eaf4be8
Binary files /dev/null and b/CubeIT/images/tango/22/status/folder-open.png differ
diff --git a/CubeIT/images/tango/22/status/folder-visiting.png b/CubeIT/images/tango/22/status/folder-visiting.png
new file mode 100644 (file)
index 0000000..c002242
Binary files /dev/null and b/CubeIT/images/tango/22/status/folder-visiting.png differ
diff --git a/CubeIT/images/tango/22/status/image-loading.png b/CubeIT/images/tango/22/status/image-loading.png
new file mode 100644 (file)
index 0000000..a4be885
Binary files /dev/null and b/CubeIT/images/tango/22/status/image-loading.png differ
diff --git a/CubeIT/images/tango/22/status/image-missing.png b/CubeIT/images/tango/22/status/image-missing.png
new file mode 100644 (file)
index 0000000..e12439a
Binary files /dev/null and b/CubeIT/images/tango/22/status/image-missing.png differ
diff --git a/CubeIT/images/tango/22/status/mail-attachment.png b/CubeIT/images/tango/22/status/mail-attachment.png
new file mode 100644 (file)
index 0000000..c5d9633
Binary files /dev/null and b/CubeIT/images/tango/22/status/mail-attachment.png differ
diff --git a/CubeIT/images/tango/22/status/network-error.png b/CubeIT/images/tango/22/status/network-error.png
new file mode 100644 (file)
index 0000000..d36ce29
Binary files /dev/null and b/CubeIT/images/tango/22/status/network-error.png differ
diff --git a/CubeIT/images/tango/22/status/network-idle.png b/CubeIT/images/tango/22/status/network-idle.png
new file mode 100644 (file)
index 0000000..caebd98
Binary files /dev/null and b/CubeIT/images/tango/22/status/network-idle.png differ
diff --git a/CubeIT/images/tango/22/status/network-offline.png b/CubeIT/images/tango/22/status/network-offline.png
new file mode 100644 (file)
index 0000000..72dd12c
Binary files /dev/null and b/CubeIT/images/tango/22/status/network-offline.png differ
diff --git a/CubeIT/images/tango/22/status/network-receive.png b/CubeIT/images/tango/22/status/network-receive.png
new file mode 100644 (file)
index 0000000..11dfa07
Binary files /dev/null and b/CubeIT/images/tango/22/status/network-receive.png differ
diff --git a/CubeIT/images/tango/22/status/network-transmit-receive.png b/CubeIT/images/tango/22/status/network-transmit-receive.png
new file mode 100644 (file)
index 0000000..54d145f
Binary files /dev/null and b/CubeIT/images/tango/22/status/network-transmit-receive.png differ
diff --git a/CubeIT/images/tango/22/status/network-transmit.png b/CubeIT/images/tango/22/status/network-transmit.png
new file mode 100644 (file)
index 0000000..97b6301
Binary files /dev/null and b/CubeIT/images/tango/22/status/network-transmit.png differ
diff --git a/CubeIT/images/tango/22/status/network-wireless-encrypted.png b/CubeIT/images/tango/22/status/network-wireless-encrypted.png
new file mode 100644 (file)
index 0000000..712771c
Binary files /dev/null and b/CubeIT/images/tango/22/status/network-wireless-encrypted.png differ
diff --git a/CubeIT/images/tango/22/status/printer-error.png b/CubeIT/images/tango/22/status/printer-error.png
new file mode 100644 (file)
index 0000000..63863c2
Binary files /dev/null and b/CubeIT/images/tango/22/status/printer-error.png differ
diff --git a/CubeIT/images/tango/22/status/software-update-available.png b/CubeIT/images/tango/22/status/software-update-available.png
new file mode 100644 (file)
index 0000000..c1d1348
Binary files /dev/null and b/CubeIT/images/tango/22/status/software-update-available.png differ
diff --git a/CubeIT/images/tango/22/status/software-update-urgent.png b/CubeIT/images/tango/22/status/software-update-urgent.png
new file mode 100644 (file)
index 0000000..0ce38d9
Binary files /dev/null and b/CubeIT/images/tango/22/status/software-update-urgent.png differ
diff --git a/CubeIT/images/tango/22/status/user-trash-full.png b/CubeIT/images/tango/22/status/user-trash-full.png
new file mode 100644 (file)
index 0000000..ffd7cc2
Binary files /dev/null and b/CubeIT/images/tango/22/status/user-trash-full.png differ
diff --git a/CubeIT/images/tango/22/status/weather-clear-night.png b/CubeIT/images/tango/22/status/weather-clear-night.png
new file mode 100644 (file)
index 0000000..52ea3e9
Binary files /dev/null and b/CubeIT/images/tango/22/status/weather-clear-night.png differ
diff --git a/CubeIT/images/tango/22/status/weather-clear.png b/CubeIT/images/tango/22/status/weather-clear.png
new file mode 100644 (file)
index 0000000..e17ca7c
Binary files /dev/null and b/CubeIT/images/tango/22/status/weather-clear.png differ
diff --git a/CubeIT/images/tango/22/status/weather-few-clouds-night.png b/CubeIT/images/tango/22/status/weather-few-clouds-night.png
new file mode 100644 (file)
index 0000000..69fe49a
Binary files /dev/null and b/CubeIT/images/tango/22/status/weather-few-clouds-night.png differ
diff --git a/CubeIT/images/tango/22/status/weather-few-clouds.png b/CubeIT/images/tango/22/status/weather-few-clouds.png
new file mode 100644 (file)
index 0000000..28b1147
Binary files /dev/null and b/CubeIT/images/tango/22/status/weather-few-clouds.png differ
diff --git a/CubeIT/images/tango/22/status/weather-overcast.png b/CubeIT/images/tango/22/status/weather-overcast.png
new file mode 100644 (file)
index 0000000..79d7bc2
Binary files /dev/null and b/CubeIT/images/tango/22/status/weather-overcast.png differ
diff --git a/CubeIT/images/tango/22/status/weather-severe-alert.png b/CubeIT/images/tango/22/status/weather-severe-alert.png
new file mode 100644 (file)
index 0000000..e4d09b6
Binary files /dev/null and b/CubeIT/images/tango/22/status/weather-severe-alert.png differ
diff --git a/CubeIT/images/tango/22/status/weather-showers-scattered.png b/CubeIT/images/tango/22/status/weather-showers-scattered.png
new file mode 100644 (file)
index 0000000..9eddd93
Binary files /dev/null and b/CubeIT/images/tango/22/status/weather-showers-scattered.png differ
diff --git a/CubeIT/images/tango/22/status/weather-showers.png b/CubeIT/images/tango/22/status/weather-showers.png
new file mode 100644 (file)
index 0000000..4450fb1
Binary files /dev/null and b/CubeIT/images/tango/22/status/weather-showers.png differ
diff --git a/CubeIT/images/tango/22/status/weather-snow.png b/CubeIT/images/tango/22/status/weather-snow.png
new file mode 100644 (file)
index 0000000..5457799
Binary files /dev/null and b/CubeIT/images/tango/22/status/weather-snow.png differ
diff --git a/CubeIT/images/tango/22/status/weather-storm.png b/CubeIT/images/tango/22/status/weather-storm.png
new file mode 100644 (file)
index 0000000..3b7ca9c
Binary files /dev/null and b/CubeIT/images/tango/22/status/weather-storm.png differ
diff --git a/CubeIT/images/tango/32/actions/address-book-new.png b/CubeIT/images/tango/32/actions/address-book-new.png
new file mode 100644 (file)
index 0000000..420139d
Binary files /dev/null and b/CubeIT/images/tango/32/actions/address-book-new.png differ
diff --git a/CubeIT/images/tango/32/actions/appointment-new.png b/CubeIT/images/tango/32/actions/appointment-new.png
new file mode 100644 (file)
index 0000000..85daef3
Binary files /dev/null and b/CubeIT/images/tango/32/actions/appointment-new.png differ
diff --git a/CubeIT/images/tango/32/actions/bookmark-new.png b/CubeIT/images/tango/32/actions/bookmark-new.png
new file mode 100644 (file)
index 0000000..621312a
Binary files /dev/null and b/CubeIT/images/tango/32/actions/bookmark-new.png differ
diff --git a/CubeIT/images/tango/32/actions/contact-new.png b/CubeIT/images/tango/32/actions/contact-new.png
new file mode 100644 (file)
index 0000000..8b10c1e
Binary files /dev/null and b/CubeIT/images/tango/32/actions/contact-new.png differ
diff --git a/CubeIT/images/tango/32/actions/document-new.png b/CubeIT/images/tango/32/actions/document-new.png
new file mode 100644 (file)
index 0000000..e6d64bb
Binary files /dev/null and b/CubeIT/images/tango/32/actions/document-new.png differ
diff --git a/CubeIT/images/tango/32/actions/document-open.png b/CubeIT/images/tango/32/actions/document-open.png
new file mode 100644 (file)
index 0000000..2b135a1
Binary files /dev/null and b/CubeIT/images/tango/32/actions/document-open.png differ
diff --git a/CubeIT/images/tango/32/actions/document-print-preview.png b/CubeIT/images/tango/32/actions/document-print-preview.png
new file mode 100644 (file)
index 0000000..772efe5
Binary files /dev/null and b/CubeIT/images/tango/32/actions/document-print-preview.png differ
diff --git a/CubeIT/images/tango/32/actions/document-print.png b/CubeIT/images/tango/32/actions/document-print.png
new file mode 100644 (file)
index 0000000..3ef3930
Binary files /dev/null and b/CubeIT/images/tango/32/actions/document-print.png differ
diff --git a/CubeIT/images/tango/32/actions/document-properties.png b/CubeIT/images/tango/32/actions/document-properties.png
new file mode 100644 (file)
index 0000000..fa697db
Binary files /dev/null and b/CubeIT/images/tango/32/actions/document-properties.png differ
diff --git a/CubeIT/images/tango/32/actions/document-save-as.png b/CubeIT/images/tango/32/actions/document-save-as.png
new file mode 100644 (file)
index 0000000..5c9f6b3
Binary files /dev/null and b/CubeIT/images/tango/32/actions/document-save-as.png differ
diff --git a/CubeIT/images/tango/32/actions/document-save.png b/CubeIT/images/tango/32/actions/document-save.png
new file mode 100644 (file)
index 0000000..db5c52b
Binary files /dev/null and b/CubeIT/images/tango/32/actions/document-save.png differ
diff --git a/CubeIT/images/tango/32/actions/edit-clear.png b/CubeIT/images/tango/32/actions/edit-clear.png
new file mode 100644 (file)
index 0000000..5542948
Binary files /dev/null and b/CubeIT/images/tango/32/actions/edit-clear.png differ
diff --git a/CubeIT/images/tango/32/actions/edit-copy.png b/CubeIT/images/tango/32/actions/edit-copy.png
new file mode 100644 (file)
index 0000000..3348ee0
Binary files /dev/null and b/CubeIT/images/tango/32/actions/edit-copy.png differ
diff --git a/CubeIT/images/tango/32/actions/edit-cut.png b/CubeIT/images/tango/32/actions/edit-cut.png
new file mode 100644 (file)
index 0000000..217663b
Binary files /dev/null and b/CubeIT/images/tango/32/actions/edit-cut.png differ
diff --git a/CubeIT/images/tango/32/actions/edit-delete.png b/CubeIT/images/tango/32/actions/edit-delete.png
new file mode 100644 (file)
index 0000000..9becb3e
Binary files /dev/null and b/CubeIT/images/tango/32/actions/edit-delete.png differ
diff --git a/CubeIT/images/tango/32/actions/edit-find-replace.png b/CubeIT/images/tango/32/actions/edit-find-replace.png
new file mode 100644 (file)
index 0000000..0f1b117
Binary files /dev/null and b/CubeIT/images/tango/32/actions/edit-find-replace.png differ
diff --git a/CubeIT/images/tango/32/actions/edit-find.png b/CubeIT/images/tango/32/actions/edit-find.png
new file mode 100644 (file)
index 0000000..5594785
Binary files /dev/null and b/CubeIT/images/tango/32/actions/edit-find.png differ
diff --git a/CubeIT/images/tango/32/actions/edit-paste.png b/CubeIT/images/tango/32/actions/edit-paste.png
new file mode 100644 (file)
index 0000000..dd429ce
Binary files /dev/null and b/CubeIT/images/tango/32/actions/edit-paste.png differ
diff --git a/CubeIT/images/tango/32/actions/edit-redo.png b/CubeIT/images/tango/32/actions/edit-redo.png
new file mode 100644 (file)
index 0000000..3eb7b05
Binary files /dev/null and b/CubeIT/images/tango/32/actions/edit-redo.png differ
diff --git a/CubeIT/images/tango/32/actions/edit-select-all.png b/CubeIT/images/tango/32/actions/edit-select-all.png
new file mode 100644 (file)
index 0000000..107fc60
Binary files /dev/null and b/CubeIT/images/tango/32/actions/edit-select-all.png differ
diff --git a/CubeIT/images/tango/32/actions/edit-undo.png b/CubeIT/images/tango/32/actions/edit-undo.png
new file mode 100644 (file)
index 0000000..61b2ce9
Binary files /dev/null and b/CubeIT/images/tango/32/actions/edit-undo.png differ
diff --git a/CubeIT/images/tango/32/actions/folder-new.png b/CubeIT/images/tango/32/actions/folder-new.png
new file mode 100644 (file)
index 0000000..fcd15c0
Binary files /dev/null and b/CubeIT/images/tango/32/actions/folder-new.png differ
diff --git a/CubeIT/images/tango/32/actions/format-indent-less.png b/CubeIT/images/tango/32/actions/format-indent-less.png
new file mode 100644 (file)
index 0000000..7ced16f
Binary files /dev/null and b/CubeIT/images/tango/32/actions/format-indent-less.png differ
diff --git a/CubeIT/images/tango/32/actions/format-indent-more.png b/CubeIT/images/tango/32/actions/format-indent-more.png
new file mode 100644 (file)
index 0000000..6a18867
Binary files /dev/null and b/CubeIT/images/tango/32/actions/format-indent-more.png differ
diff --git a/CubeIT/images/tango/32/actions/format-justify-center.png b/CubeIT/images/tango/32/actions/format-justify-center.png
new file mode 100644 (file)
index 0000000..a0db2bb
Binary files /dev/null and b/CubeIT/images/tango/32/actions/format-justify-center.png differ
diff --git a/CubeIT/images/tango/32/actions/format-justify-fill.png b/CubeIT/images/tango/32/actions/format-justify-fill.png
new file mode 100644 (file)
index 0000000..2a34a8f
Binary files /dev/null and b/CubeIT/images/tango/32/actions/format-justify-fill.png differ
diff --git a/CubeIT/images/tango/32/actions/format-justify-left.png b/CubeIT/images/tango/32/actions/format-justify-left.png
new file mode 100644 (file)
index 0000000..ba0e914
Binary files /dev/null and b/CubeIT/images/tango/32/actions/format-justify-left.png differ
diff --git a/CubeIT/images/tango/32/actions/format-justify-right.png b/CubeIT/images/tango/32/actions/format-justify-right.png
new file mode 100644 (file)
index 0000000..2144cb9
Binary files /dev/null and b/CubeIT/images/tango/32/actions/format-justify-right.png differ
diff --git a/CubeIT/images/tango/32/actions/format-text-bold.png b/CubeIT/images/tango/32/actions/format-text-bold.png
new file mode 100644 (file)
index 0000000..99ed19c
Binary files /dev/null and b/CubeIT/images/tango/32/actions/format-text-bold.png differ
diff --git a/CubeIT/images/tango/32/actions/format-text-italic.png b/CubeIT/images/tango/32/actions/format-text-italic.png
new file mode 100644 (file)
index 0000000..87ed6f9
Binary files /dev/null and b/CubeIT/images/tango/32/actions/format-text-italic.png differ
diff --git a/CubeIT/images/tango/32/actions/format-text-strikethrough.png b/CubeIT/images/tango/32/actions/format-text-strikethrough.png
new file mode 100644 (file)
index 0000000..b9b55ab
Binary files /dev/null and b/CubeIT/images/tango/32/actions/format-text-strikethrough.png differ
diff --git a/CubeIT/images/tango/32/actions/format-text-underline.png b/CubeIT/images/tango/32/actions/format-text-underline.png
new file mode 100644 (file)
index 0000000..0de6b1c
Binary files /dev/null and b/CubeIT/images/tango/32/actions/format-text-underline.png differ
diff --git a/CubeIT/images/tango/32/actions/go-bottom.png b/CubeIT/images/tango/32/actions/go-bottom.png
new file mode 100644 (file)
index 0000000..bf973fe
Binary files /dev/null and b/CubeIT/images/tango/32/actions/go-bottom.png differ
diff --git a/CubeIT/images/tango/32/actions/go-down.png b/CubeIT/images/tango/32/actions/go-down.png
new file mode 100644 (file)
index 0000000..dce3f15
Binary files /dev/null and b/CubeIT/images/tango/32/actions/go-down.png differ
diff --git a/CubeIT/images/tango/32/actions/go-first.png b/CubeIT/images/tango/32/actions/go-first.png
new file mode 100644 (file)
index 0000000..5e2a6b1
Binary files /dev/null and b/CubeIT/images/tango/32/actions/go-first.png differ
diff --git a/CubeIT/images/tango/32/actions/go-home.png b/CubeIT/images/tango/32/actions/go-home.png
new file mode 100644 (file)
index 0000000..a3ca103
Binary files /dev/null and b/CubeIT/images/tango/32/actions/go-home.png differ
diff --git a/CubeIT/images/tango/32/actions/go-jump.png b/CubeIT/images/tango/32/actions/go-jump.png
new file mode 100644 (file)
index 0000000..34dc4c0
Binary files /dev/null and b/CubeIT/images/tango/32/actions/go-jump.png differ
diff --git a/CubeIT/images/tango/32/actions/go-last.png b/CubeIT/images/tango/32/actions/go-last.png
new file mode 100644 (file)
index 0000000..48fe95b
Binary files /dev/null and b/CubeIT/images/tango/32/actions/go-last.png differ
diff --git a/CubeIT/images/tango/32/actions/go-next.png b/CubeIT/images/tango/32/actions/go-next.png
new file mode 100644 (file)
index 0000000..a68e2db
Binary files /dev/null and b/CubeIT/images/tango/32/actions/go-next.png differ
diff --git a/CubeIT/images/tango/32/actions/go-previous.png b/CubeIT/images/tango/32/actions/go-previous.png
new file mode 100644 (file)
index 0000000..c37bc04
Binary files /dev/null and b/CubeIT/images/tango/32/actions/go-previous.png differ
diff --git a/CubeIT/images/tango/32/actions/go-top.png b/CubeIT/images/tango/32/actions/go-top.png
new file mode 100644 (file)
index 0000000..d99552b
Binary files /dev/null and b/CubeIT/images/tango/32/actions/go-top.png differ
diff --git a/CubeIT/images/tango/32/actions/go-up.png b/CubeIT/images/tango/32/actions/go-up.png
new file mode 100644 (file)
index 0000000..afb307b
Binary files /dev/null and b/CubeIT/images/tango/32/actions/go-up.png differ
diff --git a/CubeIT/images/tango/32/actions/list-add.png b/CubeIT/images/tango/32/actions/list-add.png
new file mode 100644 (file)
index 0000000..2acdd8f
Binary files /dev/null and b/CubeIT/images/tango/32/actions/list-add.png differ
diff --git a/CubeIT/images/tango/32/actions/list-remove.png b/CubeIT/images/tango/32/actions/list-remove.png
new file mode 100644 (file)
index 0000000..c5524f7
Binary files /dev/null and b/CubeIT/images/tango/32/actions/list-remove.png differ
diff --git a/CubeIT/images/tango/32/actions/mail-forward.png b/CubeIT/images/tango/32/actions/mail-forward.png
new file mode 100644 (file)
index 0000000..bea94ab
Binary files /dev/null and b/CubeIT/images/tango/32/actions/mail-forward.png differ
diff --git a/CubeIT/images/tango/32/actions/mail-mark-junk.png b/CubeIT/images/tango/32/actions/mail-mark-junk.png
new file mode 100644 (file)
index 0000000..0af3006
Binary files /dev/null and b/CubeIT/images/tango/32/actions/mail-mark-junk.png differ
diff --git a/CubeIT/images/tango/32/actions/mail-mark-not-junk.png b/CubeIT/images/tango/32/actions/mail-mark-not-junk.png
new file mode 100644 (file)
index 0000000..296e92a
Binary files /dev/null and b/CubeIT/images/tango/32/actions/mail-mark-not-junk.png differ
diff --git a/CubeIT/images/tango/32/actions/mail-message-new.png b/CubeIT/images/tango/32/actions/mail-message-new.png
new file mode 100644 (file)
index 0000000..9f51246
Binary files /dev/null and b/CubeIT/images/tango/32/actions/mail-message-new.png differ
diff --git a/CubeIT/images/tango/32/actions/mail-reply-all.png b/CubeIT/images/tango/32/actions/mail-reply-all.png
new file mode 100644 (file)
index 0000000..0216e39
Binary files /dev/null and b/CubeIT/images/tango/32/actions/mail-reply-all.png differ
diff --git a/CubeIT/images/tango/32/actions/mail-reply-sender.png b/CubeIT/images/tango/32/actions/mail-reply-sender.png
new file mode 100644 (file)
index 0000000..3f248dc
Binary files /dev/null and b/CubeIT/images/tango/32/actions/mail-reply-sender.png differ
diff --git a/CubeIT/images/tango/32/actions/mail-send-receive.png b/CubeIT/images/tango/32/actions/mail-send-receive.png
new file mode 100644 (file)
index 0000000..99349b9
Binary files /dev/null and b/CubeIT/images/tango/32/actions/mail-send-receive.png differ
diff --git a/CubeIT/images/tango/32/actions/media-eject.png b/CubeIT/images/tango/32/actions/media-eject.png
new file mode 100644 (file)
index 0000000..b218e7a
Binary files /dev/null and b/CubeIT/images/tango/32/actions/media-eject.png differ
diff --git a/CubeIT/images/tango/32/actions/media-playback-pause.png b/CubeIT/images/tango/32/actions/media-playback-pause.png
new file mode 100644 (file)
index 0000000..1e9f4d5
Binary files /dev/null and b/CubeIT/images/tango/32/actions/media-playback-pause.png differ
diff --git a/CubeIT/images/tango/32/actions/media-playback-start.png b/CubeIT/images/tango/32/actions/media-playback-start.png
new file mode 100644 (file)
index 0000000..66f32d8
Binary files /dev/null and b/CubeIT/images/tango/32/actions/media-playback-start.png differ
diff --git a/CubeIT/images/tango/32/actions/media-playback-stop.png b/CubeIT/images/tango/32/actions/media-playback-stop.png
new file mode 100644 (file)
index 0000000..a094787
Binary files /dev/null and b/CubeIT/images/tango/32/actions/media-playback-stop.png differ
diff --git a/CubeIT/images/tango/32/actions/media-record.png b/CubeIT/images/tango/32/actions/media-record.png
new file mode 100644 (file)
index 0000000..43f034b
Binary files /dev/null and b/CubeIT/images/tango/32/actions/media-record.png differ
diff --git a/CubeIT/images/tango/32/actions/media-seek-backward.png b/CubeIT/images/tango/32/actions/media-seek-backward.png
new file mode 100644 (file)
index 0000000..535c536
Binary files /dev/null and b/CubeIT/images/tango/32/actions/media-seek-backward.png differ
diff --git a/CubeIT/images/tango/32/actions/media-seek-forward.png b/CubeIT/images/tango/32/actions/media-seek-forward.png
new file mode 100644 (file)
index 0000000..96ebe01
Binary files /dev/null and b/CubeIT/images/tango/32/actions/media-seek-forward.png differ
diff --git a/CubeIT/images/tango/32/actions/media-skip-backward.png b/CubeIT/images/tango/32/actions/media-skip-backward.png
new file mode 100644 (file)
index 0000000..aa08251
Binary files /dev/null and b/CubeIT/images/tango/32/actions/media-skip-backward.png differ
diff --git a/CubeIT/images/tango/32/actions/media-skip-forward.png b/CubeIT/images/tango/32/actions/media-skip-forward.png
new file mode 100644 (file)
index 0000000..52be942
Binary files /dev/null and b/CubeIT/images/tango/32/actions/media-skip-forward.png differ
diff --git a/CubeIT/images/tango/32/actions/process-stop.png b/CubeIT/images/tango/32/actions/process-stop.png
new file mode 100644 (file)
index 0000000..e7a8d17
Binary files /dev/null and b/CubeIT/images/tango/32/actions/process-stop.png differ
diff --git a/CubeIT/images/tango/32/actions/system-lock-screen.png b/CubeIT/images/tango/32/actions/system-lock-screen.png
new file mode 100644 (file)
index 0000000..2c220fc
Binary files /dev/null and b/CubeIT/images/tango/32/actions/system-lock-screen.png differ
diff --git a/CubeIT/images/tango/32/actions/system-log-out.png b/CubeIT/images/tango/32/actions/system-log-out.png
new file mode 100644 (file)
index 0000000..fddbc2b
Binary files /dev/null and b/CubeIT/images/tango/32/actions/system-log-out.png differ
diff --git a/CubeIT/images/tango/32/actions/system-search.png b/CubeIT/images/tango/32/actions/system-search.png
new file mode 100644 (file)
index 0000000..950d792
Binary files /dev/null and b/CubeIT/images/tango/32/actions/system-search.png differ
diff --git a/CubeIT/images/tango/32/actions/system-shutdown.png b/CubeIT/images/tango/32/actions/system-shutdown.png
new file mode 100644 (file)
index 0000000..36acd46
Binary files /dev/null and b/CubeIT/images/tango/32/actions/system-shutdown.png differ
diff --git a/CubeIT/images/tango/32/actions/tab-new.png b/CubeIT/images/tango/32/actions/tab-new.png
new file mode 100644 (file)
index 0000000..294d150
Binary files /dev/null and b/CubeIT/images/tango/32/actions/tab-new.png differ
diff --git a/CubeIT/images/tango/32/actions/view-fullscreen.png b/CubeIT/images/tango/32/actions/view-fullscreen.png
new file mode 100644 (file)
index 0000000..00e6b83
Binary files /dev/null and b/CubeIT/images/tango/32/actions/view-fullscreen.png differ
diff --git a/CubeIT/images/tango/32/actions/view-refresh.png b/CubeIT/images/tango/32/actions/view-refresh.png
new file mode 100644 (file)
index 0000000..606ea9e
Binary files /dev/null and b/CubeIT/images/tango/32/actions/view-refresh.png differ
diff --git a/CubeIT/images/tango/32/actions/window-new.png b/CubeIT/images/tango/32/actions/window-new.png
new file mode 100644 (file)
index 0000000..e091702
Binary files /dev/null and b/CubeIT/images/tango/32/actions/window-new.png differ
diff --git a/CubeIT/images/tango/32/animations/process-working.png b/CubeIT/images/tango/32/animations/process-working.png
new file mode 100644 (file)
index 0000000..f19c528
Binary files /dev/null and b/CubeIT/images/tango/32/animations/process-working.png differ
diff --git a/CubeIT/images/tango/32/apps/accessories-calculator.png b/CubeIT/images/tango/32/apps/accessories-calculator.png
new file mode 100644 (file)
index 0000000..7de1c44
Binary files /dev/null and b/CubeIT/images/tango/32/apps/accessories-calculator.png differ
diff --git a/CubeIT/images/tango/32/apps/accessories-character-map.png b/CubeIT/images/tango/32/apps/accessories-character-map.png
new file mode 100644 (file)
index 0000000..a86c23e
Binary files /dev/null and b/CubeIT/images/tango/32/apps/accessories-character-map.png differ
diff --git a/CubeIT/images/tango/32/apps/accessories-text-editor.png b/CubeIT/images/tango/32/apps/accessories-text-editor.png
new file mode 100644 (file)
index 0000000..c6b6285
Binary files /dev/null and b/CubeIT/images/tango/32/apps/accessories-text-editor.png differ
diff --git a/CubeIT/images/tango/32/apps/help-browser.png b/CubeIT/images/tango/32/apps/help-browser.png
new file mode 100644 (file)
index 0000000..d60425f
Binary files /dev/null and b/CubeIT/images/tango/32/apps/help-browser.png differ
diff --git a/CubeIT/images/tango/32/apps/internet-group-chat.png b/CubeIT/images/tango/32/apps/internet-group-chat.png
new file mode 100644 (file)
index 0000000..9cb1d3b
Binary files /dev/null and b/CubeIT/images/tango/32/apps/internet-group-chat.png differ
diff --git a/CubeIT/images/tango/32/apps/internet-mail.png b/CubeIT/images/tango/32/apps/internet-mail.png
new file mode 100644 (file)
index 0000000..dc3b9dd
Binary files /dev/null and b/CubeIT/images/tango/32/apps/internet-mail.png differ
diff --git a/CubeIT/images/tango/32/apps/internet-news-reader.png b/CubeIT/images/tango/32/apps/internet-news-reader.png
new file mode 100644 (file)
index 0000000..ebc528f
Binary files /dev/null and b/CubeIT/images/tango/32/apps/internet-news-reader.png differ
diff --git a/CubeIT/images/tango/32/apps/internet-web-browser.png b/CubeIT/images/tango/32/apps/internet-web-browser.png
new file mode 100644 (file)
index 0000000..10d2ed4
Binary files /dev/null and b/CubeIT/images/tango/32/apps/internet-web-browser.png differ
diff --git a/CubeIT/images/tango/32/apps/office-calendar.png b/CubeIT/images/tango/32/apps/office-calendar.png
new file mode 100644 (file)
index 0000000..7817c12
Binary files /dev/null and b/CubeIT/images/tango/32/apps/office-calendar.png differ
diff --git a/CubeIT/images/tango/32/apps/preferences-desktop-accessibility.png b/CubeIT/images/tango/32/apps/preferences-desktop-accessibility.png
new file mode 100644 (file)
index 0000000..adfe247
Binary files /dev/null and b/CubeIT/images/tango/32/apps/preferences-desktop-accessibility.png differ
diff --git a/CubeIT/images/tango/32/apps/preferences-desktop-assistive-technology.png b/CubeIT/images/tango/32/apps/preferences-desktop-assistive-technology.png
new file mode 100644 (file)
index 0000000..70adb92
Binary files /dev/null and b/CubeIT/images/tango/32/apps/preferences-desktop-assistive-technology.png differ
diff --git a/CubeIT/images/tango/32/apps/preferences-desktop-font.png b/CubeIT/images/tango/32/apps/preferences-desktop-font.png
new file mode 100644 (file)
index 0000000..b4ec434
Binary files /dev/null and b/CubeIT/images/tango/32/apps/preferences-desktop-font.png differ
diff --git a/CubeIT/images/tango/32/apps/preferences-desktop-keyboard-shortcuts.png b/CubeIT/images/tango/32/apps/preferences-desktop-keyboard-shortcuts.png
new file mode 100644 (file)
index 0000000..178dd29
Binary files /dev/null and b/CubeIT/images/tango/32/apps/preferences-desktop-keyboard-shortcuts.png differ
diff --git a/CubeIT/images/tango/32/apps/preferences-desktop-locale.png b/CubeIT/images/tango/32/apps/preferences-desktop-locale.png
new file mode 100644 (file)
index 0000000..66224ae
Binary files /dev/null and b/CubeIT/images/tango/32/apps/preferences-desktop-locale.png differ
diff --git a/CubeIT/images/tango/32/apps/preferences-desktop-multimedia.png b/CubeIT/images/tango/32/apps/preferences-desktop-multimedia.png
new file mode 100644 (file)
index 0000000..56a5662
Binary files /dev/null and b/CubeIT/images/tango/32/apps/preferences-desktop-multimedia.png differ
diff --git a/CubeIT/images/tango/32/apps/preferences-desktop-remote-desktop.png b/CubeIT/images/tango/32/apps/preferences-desktop-remote-desktop.png
new file mode 100644 (file)
index 0000000..6da67c6
Binary files /dev/null and b/CubeIT/images/tango/32/apps/preferences-desktop-remote-desktop.png differ
diff --git a/CubeIT/images/tango/32/apps/preferences-desktop-screensaver.png b/CubeIT/images/tango/32/apps/preferences-desktop-screensaver.png
new file mode 100644 (file)
index 0000000..dba2455
Binary files /dev/null and b/CubeIT/images/tango/32/apps/preferences-desktop-screensaver.png differ
diff --git a/CubeIT/images/tango/32/apps/preferences-desktop-theme.png b/CubeIT/images/tango/32/apps/preferences-desktop-theme.png
new file mode 100644 (file)
index 0000000..7af777d
Binary files /dev/null and b/CubeIT/images/tango/32/apps/preferences-desktop-theme.png differ
diff --git a/CubeIT/images/tango/32/apps/preferences-desktop-wallpaper.png b/CubeIT/images/tango/32/apps/preferences-desktop-wallpaper.png
new file mode 100644 (file)
index 0000000..4eb744c
Binary files /dev/null and b/CubeIT/images/tango/32/apps/preferences-desktop-wallpaper.png differ
diff --git a/CubeIT/images/tango/32/apps/preferences-system-network-proxy.png b/CubeIT/images/tango/32/apps/preferences-system-network-proxy.png
new file mode 100644 (file)
index 0000000..e75f6f7
Binary files /dev/null and b/CubeIT/images/tango/32/apps/preferences-system-network-proxy.png differ
diff --git a/CubeIT/images/tango/32/apps/preferences-system-session.png b/CubeIT/images/tango/32/apps/preferences-system-session.png
new file mode 100644 (file)
index 0000000..f8c2d11
Binary files /dev/null and b/CubeIT/images/tango/32/apps/preferences-system-session.png differ
diff --git a/CubeIT/images/tango/32/apps/preferences-system-windows.png b/CubeIT/images/tango/32/apps/preferences-system-windows.png
new file mode 100644 (file)
index 0000000..517e48a
Binary files /dev/null and b/CubeIT/images/tango/32/apps/preferences-system-windows.png differ
diff --git a/CubeIT/images/tango/32/apps/system-file-manager.png b/CubeIT/images/tango/32/apps/system-file-manager.png
new file mode 100644 (file)
index 0000000..1d6ce31
Binary files /dev/null and b/CubeIT/images/tango/32/apps/system-file-manager.png differ
diff --git a/CubeIT/images/tango/32/apps/system-installer.png b/CubeIT/images/tango/32/apps/system-installer.png
new file mode 100644 (file)
index 0000000..c26576e
Binary files /dev/null and b/CubeIT/images/tango/32/apps/system-installer.png differ
diff --git a/CubeIT/images/tango/32/apps/system-software-update.png b/CubeIT/images/tango/32/apps/system-software-update.png
new file mode 100644 (file)
index 0000000..470b5d4
Binary files /dev/null and b/CubeIT/images/tango/32/apps/system-software-update.png differ
diff --git a/CubeIT/images/tango/32/apps/system-users.png b/CubeIT/images/tango/32/apps/system-users.png
new file mode 100644 (file)
index 0000000..749c825
Binary files /dev/null and b/CubeIT/images/tango/32/apps/system-users.png differ
diff --git a/CubeIT/images/tango/32/apps/utilities-system-monitor.png b/CubeIT/images/tango/32/apps/utilities-system-monitor.png
new file mode 100644 (file)
index 0000000..b62959e
Binary files /dev/null and b/CubeIT/images/tango/32/apps/utilities-system-monitor.png differ
diff --git a/CubeIT/images/tango/32/apps/utilities-terminal.png b/CubeIT/images/tango/32/apps/utilities-terminal.png
new file mode 100644 (file)
index 0000000..f86c784
Binary files /dev/null and b/CubeIT/images/tango/32/apps/utilities-terminal.png differ
diff --git a/CubeIT/images/tango/32/categories/applications-accessories.png b/CubeIT/images/tango/32/categories/applications-accessories.png
new file mode 100644 (file)
index 0000000..fd43de3
Binary files /dev/null and b/CubeIT/images/tango/32/categories/applications-accessories.png differ
diff --git a/CubeIT/images/tango/32/categories/applications-development.png b/CubeIT/images/tango/32/categories/applications-development.png
new file mode 100644 (file)
index 0000000..bc88a5c
Binary files /dev/null and b/CubeIT/images/tango/32/categories/applications-development.png differ
diff --git a/CubeIT/images/tango/32/categories/applications-games.png b/CubeIT/images/tango/32/categories/applications-games.png
new file mode 100644 (file)
index 0000000..ff4044c
Binary files /dev/null and b/CubeIT/images/tango/32/categories/applications-games.png differ
diff --git a/CubeIT/images/tango/32/categories/applications-graphics.png b/CubeIT/images/tango/32/categories/applications-graphics.png
new file mode 100644 (file)
index 0000000..36b77c2
Binary files /dev/null and b/CubeIT/images/tango/32/categories/applications-graphics.png differ
diff --git a/CubeIT/images/tango/32/categories/applications-internet.png b/CubeIT/images/tango/32/categories/applications-internet.png
new file mode 100644 (file)
index 0000000..096e848
Binary files /dev/null and b/CubeIT/images/tango/32/categories/applications-internet.png differ
diff --git a/CubeIT/images/tango/32/categories/applications-multimedia.png b/CubeIT/images/tango/32/categories/applications-multimedia.png
new file mode 100644 (file)
index 0000000..d09995a
Binary files /dev/null and b/CubeIT/images/tango/32/categories/applications-multimedia.png differ
diff --git a/CubeIT/images/tango/32/categories/applications-office.png b/CubeIT/images/tango/32/categories/applications-office.png
new file mode 100644 (file)
index 0000000..efb850e
Binary files /dev/null and b/CubeIT/images/tango/32/categories/applications-office.png differ
diff --git a/CubeIT/images/tango/32/categories/applications-other.png b/CubeIT/images/tango/32/categories/applications-other.png
new file mode 100644 (file)
index 0000000..1990dbb
Binary files /dev/null and b/CubeIT/images/tango/32/categories/applications-other.png differ
diff --git a/CubeIT/images/tango/32/categories/applications-system.png b/CubeIT/images/tango/32/categories/applications-system.png
new file mode 100644 (file)
index 0000000..565f406
Binary files /dev/null and b/CubeIT/images/tango/32/categories/applications-system.png differ
diff --git a/CubeIT/images/tango/32/categories/preferences-desktop-peripherals.png b/CubeIT/images/tango/32/categories/preferences-desktop-peripherals.png
new file mode 100644 (file)
index 0000000..4682b36
Binary files /dev/null and b/CubeIT/images/tango/32/categories/preferences-desktop-peripherals.png differ
diff --git a/CubeIT/images/tango/32/categories/preferences-desktop.png b/CubeIT/images/tango/32/categories/preferences-desktop.png
new file mode 100644 (file)
index 0000000..3ec71a3
Binary files /dev/null and b/CubeIT/images/tango/32/categories/preferences-desktop.png differ
diff --git a/CubeIT/images/tango/32/categories/preferences-system.png b/CubeIT/images/tango/32/categories/preferences-system.png
new file mode 100644 (file)
index 0000000..6e52db7
Binary files /dev/null and b/CubeIT/images/tango/32/categories/preferences-system.png differ
diff --git a/CubeIT/images/tango/32/devices/audio-card.png b/CubeIT/images/tango/32/devices/audio-card.png
new file mode 100644 (file)
index 0000000..5b15dd6
Binary files /dev/null and b/CubeIT/images/tango/32/devices/audio-card.png differ
diff --git a/CubeIT/images/tango/32/devices/audio-input-microphone.png b/CubeIT/images/tango/32/devices/audio-input-microphone.png
new file mode 100644 (file)
index 0000000..9fe3b96
Binary files /dev/null and b/CubeIT/images/tango/32/devices/audio-input-microphone.png differ
diff --git a/CubeIT/images/tango/32/devices/battery.png b/CubeIT/images/tango/32/devices/battery.png
new file mode 100644 (file)
index 0000000..ef08925
Binary files /dev/null and b/CubeIT/images/tango/32/devices/battery.png differ
diff --git a/CubeIT/images/tango/32/devices/camera-photo.png b/CubeIT/images/tango/32/devices/camera-photo.png
new file mode 100644 (file)
index 0000000..ffbffc7
Binary files /dev/null and b/CubeIT/images/tango/32/devices/camera-photo.png differ
diff --git a/CubeIT/images/tango/32/devices/camera-video.png b/CubeIT/images/tango/32/devices/camera-video.png
new file mode 100644 (file)
index 0000000..7473dd7
Binary files /dev/null and b/CubeIT/images/tango/32/devices/camera-video.png differ
diff --git a/CubeIT/images/tango/32/devices/computer.png b/CubeIT/images/tango/32/devices/computer.png
new file mode 100644 (file)
index 0000000..975cf35
Binary files /dev/null and b/CubeIT/images/tango/32/devices/computer.png differ
diff --git a/CubeIT/images/tango/32/devices/drive-harddisk.png b/CubeIT/images/tango/32/devices/drive-harddisk.png
new file mode 100644 (file)
index 0000000..b34d8b7
Binary files /dev/null and b/CubeIT/images/tango/32/devices/drive-harddisk.png differ
diff --git a/CubeIT/images/tango/32/devices/drive-optical.png b/CubeIT/images/tango/32/devices/drive-optical.png
new file mode 100644 (file)
index 0000000..bf2e8c8
Binary files /dev/null and b/CubeIT/images/tango/32/devices/drive-optical.png differ
diff --git a/CubeIT/images/tango/32/devices/drive-removable-media.png b/CubeIT/images/tango/32/devices/drive-removable-media.png
new file mode 100644 (file)
index 0000000..2d28909
Binary files /dev/null and b/CubeIT/images/tango/32/devices/drive-removable-media.png differ
diff --git a/CubeIT/images/tango/32/devices/input-gaming.png b/CubeIT/images/tango/32/devices/input-gaming.png
new file mode 100644 (file)
index 0000000..26e2a98
Binary files /dev/null and b/CubeIT/images/tango/32/devices/input-gaming.png differ
diff --git a/CubeIT/images/tango/32/devices/input-keyboard.png b/CubeIT/images/tango/32/devices/input-keyboard.png
new file mode 100644 (file)
index 0000000..5bb1298
Binary files /dev/null and b/CubeIT/images/tango/32/devices/input-keyboard.png differ
diff --git a/CubeIT/images/tango/32/devices/input-mouse.png b/CubeIT/images/tango/32/devices/input-mouse.png
new file mode 100644 (file)
index 0000000..49a923c
Binary files /dev/null and b/CubeIT/images/tango/32/devices/input-mouse.png differ
diff --git a/CubeIT/images/tango/32/devices/media-flash.png b/CubeIT/images/tango/32/devices/media-flash.png
new file mode 100644 (file)
index 0000000..7540f3f
Binary files /dev/null and b/CubeIT/images/tango/32/devices/media-flash.png differ
diff --git a/CubeIT/images/tango/32/devices/media-floppy.png b/CubeIT/images/tango/32/devices/media-floppy.png
new file mode 100644 (file)
index 0000000..17b1274
Binary files /dev/null and b/CubeIT/images/tango/32/devices/media-floppy.png differ
diff --git a/CubeIT/images/tango/32/devices/media-optical.png b/CubeIT/images/tango/32/devices/media-optical.png
new file mode 100644 (file)
index 0000000..5853a75
Binary files /dev/null and b/CubeIT/images/tango/32/devices/media-optical.png differ
diff --git a/CubeIT/images/tango/32/devices/multimedia-player.png b/CubeIT/images/tango/32/devices/multimedia-player.png
new file mode 100644 (file)
index 0000000..8d59208
Binary files /dev/null and b/CubeIT/images/tango/32/devices/multimedia-player.png differ
diff --git a/CubeIT/images/tango/32/devices/network-wired.png b/CubeIT/images/tango/32/devices/network-wired.png
new file mode 100644 (file)
index 0000000..c3ca691
Binary files /dev/null and b/CubeIT/images/tango/32/devices/network-wired.png differ
diff --git a/CubeIT/images/tango/32/devices/network-wireless.png b/CubeIT/images/tango/32/devices/network-wireless.png
new file mode 100644 (file)
index 0000000..aa5f9f2
Binary files /dev/null and b/CubeIT/images/tango/32/devices/network-wireless.png differ
diff --git a/CubeIT/images/tango/32/devices/printer.png b/CubeIT/images/tango/32/devices/printer.png
new file mode 100644 (file)
index 0000000..05b49e0
Binary files /dev/null and b/CubeIT/images/tango/32/devices/printer.png differ
diff --git a/CubeIT/images/tango/32/devices/video-display.png b/CubeIT/images/tango/32/devices/video-display.png
new file mode 100644 (file)
index 0000000..b449f37
Binary files /dev/null and b/CubeIT/images/tango/32/devices/video-display.png differ
diff --git a/CubeIT/images/tango/32/emblems/emblem-favorite.png b/CubeIT/images/tango/32/emblems/emblem-favorite.png
new file mode 100644 (file)
index 0000000..8a9ad39
Binary files /dev/null and b/CubeIT/images/tango/32/emblems/emblem-favorite.png differ
diff --git a/CubeIT/images/tango/32/emblems/emblem-important.png b/CubeIT/images/tango/32/emblems/emblem-important.png
new file mode 100644 (file)
index 0000000..263fbd5
Binary files /dev/null and b/CubeIT/images/tango/32/emblems/emblem-important.png differ
diff --git a/CubeIT/images/tango/32/emblems/emblem-photos.png b/CubeIT/images/tango/32/emblems/emblem-photos.png
new file mode 100644 (file)
index 0000000..f7dfd88
Binary files /dev/null and b/CubeIT/images/tango/32/emblems/emblem-photos.png differ
diff --git a/CubeIT/images/tango/32/emblems/emblem-readonly.png b/CubeIT/images/tango/32/emblems/emblem-readonly.png
new file mode 100644 (file)
index 0000000..5e972d1
Binary files /dev/null and b/CubeIT/images/tango/32/emblems/emblem-readonly.png differ
diff --git a/CubeIT/images/tango/32/emblems/emblem-symbolic-link.png b/CubeIT/images/tango/32/emblems/emblem-symbolic-link.png
new file mode 100644 (file)
index 0000000..56ef039
Binary files /dev/null and b/CubeIT/images/tango/32/emblems/emblem-symbolic-link.png differ
diff --git a/CubeIT/images/tango/32/emblems/emblem-system.png b/CubeIT/images/tango/32/emblems/emblem-system.png
new file mode 100644 (file)
index 0000000..abac7e9
Binary files /dev/null and b/CubeIT/images/tango/32/emblems/emblem-system.png differ
diff --git a/CubeIT/images/tango/32/emblems/emblem-unreadable.png b/CubeIT/images/tango/32/emblems/emblem-unreadable.png
new file mode 100644 (file)
index 0000000..25e7802
Binary files /dev/null and b/CubeIT/images/tango/32/emblems/emblem-unreadable.png differ
diff --git a/CubeIT/images/tango/32/emotes/face-angel.png b/CubeIT/images/tango/32/emotes/face-angel.png
new file mode 100644 (file)
index 0000000..abd0285
Binary files /dev/null and b/CubeIT/images/tango/32/emotes/face-angel.png differ
diff --git a/CubeIT/images/tango/32/emotes/face-crying.png b/CubeIT/images/tango/32/emotes/face-crying.png
new file mode 100644 (file)
index 0000000..eabc23c
Binary files /dev/null and b/CubeIT/images/tango/32/emotes/face-crying.png differ
diff --git a/CubeIT/images/tango/32/emotes/face-devilish.png b/CubeIT/images/tango/32/emotes/face-devilish.png
new file mode 100644 (file)
index 0000000..cbdff52
Binary files /dev/null and b/CubeIT/images/tango/32/emotes/face-devilish.png differ
diff --git a/CubeIT/images/tango/32/emotes/face-glasses.png b/CubeIT/images/tango/32/emotes/face-glasses.png
new file mode 100644 (file)
index 0000000..1e865c5
Binary files /dev/null and b/CubeIT/images/tango/32/emotes/face-glasses.png differ
diff --git a/CubeIT/images/tango/32/emotes/face-grin.png b/CubeIT/images/tango/32/emotes/face-grin.png
new file mode 100644 (file)
index 0000000..999eb9f
Binary files /dev/null and b/CubeIT/images/tango/32/emotes/face-grin.png differ
diff --git a/CubeIT/images/tango/32/emotes/face-kiss.png b/CubeIT/images/tango/32/emotes/face-kiss.png
new file mode 100644 (file)
index 0000000..1e3fa54
Binary files /dev/null and b/CubeIT/images/tango/32/emotes/face-kiss.png differ
diff --git a/CubeIT/images/tango/32/emotes/face-monkey.png b/CubeIT/images/tango/32/emotes/face-monkey.png
new file mode 100644 (file)
index 0000000..fb0204a
Binary files /dev/null and b/CubeIT/images/tango/32/emotes/face-monkey.png differ
diff --git a/CubeIT/images/tango/32/emotes/face-plain.png b/CubeIT/images/tango/32/emotes/face-plain.png
new file mode 100644 (file)
index 0000000..d58bef7
Binary files /dev/null and b/CubeIT/images/tango/32/emotes/face-plain.png differ
diff --git a/CubeIT/images/tango/32/emotes/face-sad.png b/CubeIT/images/tango/32/emotes/face-sad.png
new file mode 100644 (file)
index 0000000..749f1c8
Binary files /dev/null and b/CubeIT/images/tango/32/emotes/face-sad.png differ
diff --git a/CubeIT/images/tango/32/emotes/face-smile-big.png b/CubeIT/images/tango/32/emotes/face-smile-big.png
new file mode 100644 (file)
index 0000000..8ca2249
Binary files /dev/null and b/CubeIT/images/tango/32/emotes/face-smile-big.png differ
diff --git a/CubeIT/images/tango/32/emotes/face-smile.png b/CubeIT/images/tango/32/emotes/face-smile.png
new file mode 100644 (file)
index 0000000..9957c23
Binary files /dev/null and b/CubeIT/images/tango/32/emotes/face-smile.png differ
diff --git a/CubeIT/images/tango/32/emotes/face-surprise.png b/CubeIT/images/tango/32/emotes/face-surprise.png
new file mode 100644 (file)
index 0000000..753e7b7
Binary files /dev/null and b/CubeIT/images/tango/32/emotes/face-surprise.png differ
diff --git a/CubeIT/images/tango/32/emotes/face-wink.png b/CubeIT/images/tango/32/emotes/face-wink.png
new file mode 100644 (file)
index 0000000..4981db6
Binary files /dev/null and b/CubeIT/images/tango/32/emotes/face-wink.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/application-certificate.png b/CubeIT/images/tango/32/mimetypes/application-certificate.png
new file mode 100644 (file)
index 0000000..b75ba54
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/application-certificate.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/application-x-executable.png b/CubeIT/images/tango/32/mimetypes/application-x-executable.png
new file mode 100644 (file)
index 0000000..8a150b8
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/application-x-executable.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/audio-x-generic.png b/CubeIT/images/tango/32/mimetypes/audio-x-generic.png
new file mode 100644 (file)
index 0000000..0e68ace
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/audio-x-generic.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/font-x-generic.png b/CubeIT/images/tango/32/mimetypes/font-x-generic.png
new file mode 100644 (file)
index 0000000..b166f4b
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/font-x-generic.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/image-x-generic.png b/CubeIT/images/tango/32/mimetypes/image-x-generic.png
new file mode 100644 (file)
index 0000000..6f118cd
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/image-x-generic.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/package-x-generic.png b/CubeIT/images/tango/32/mimetypes/package-x-generic.png
new file mode 100644 (file)
index 0000000..4b55b50
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/package-x-generic.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/text-html.png b/CubeIT/images/tango/32/mimetypes/text-html.png
new file mode 100644 (file)
index 0000000..a896697
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/text-html.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/text-x-generic-template.png b/CubeIT/images/tango/32/mimetypes/text-x-generic-template.png
new file mode 100644 (file)
index 0000000..5b7e649
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/text-x-generic-template.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/text-x-generic.png b/CubeIT/images/tango/32/mimetypes/text-x-generic.png
new file mode 100644 (file)
index 0000000..928a679
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/text-x-generic.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/text-x-script.png b/CubeIT/images/tango/32/mimetypes/text-x-script.png
new file mode 100644 (file)
index 0000000..820d967
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/text-x-script.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/video-x-generic.png b/CubeIT/images/tango/32/mimetypes/video-x-generic.png
new file mode 100644 (file)
index 0000000..5d6c8d1
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/video-x-generic.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/x-office-address-book.png b/CubeIT/images/tango/32/mimetypes/x-office-address-book.png
new file mode 100644 (file)
index 0000000..53dde74
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/x-office-address-book.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/x-office-calendar.png b/CubeIT/images/tango/32/mimetypes/x-office-calendar.png
new file mode 100644 (file)
index 0000000..bc6db5b
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/x-office-calendar.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/x-office-document-template.png b/CubeIT/images/tango/32/mimetypes/x-office-document-template.png
new file mode 100644 (file)
index 0000000..9619241
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/x-office-document-template.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/x-office-document.png b/CubeIT/images/tango/32/mimetypes/x-office-document.png
new file mode 100644 (file)
index 0000000..daf84b2
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/x-office-document.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/x-office-drawing-template.png b/CubeIT/images/tango/32/mimetypes/x-office-drawing-template.png
new file mode 100644 (file)
index 0000000..6fc043c
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/x-office-drawing-template.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/x-office-drawing.png b/CubeIT/images/tango/32/mimetypes/x-office-drawing.png
new file mode 100644 (file)
index 0000000..5cd66c1
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/x-office-drawing.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/x-office-presentation-template.png b/CubeIT/images/tango/32/mimetypes/x-office-presentation-template.png
new file mode 100644 (file)
index 0000000..bc348f1
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/x-office-presentation-template.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/x-office-presentation.png b/CubeIT/images/tango/32/mimetypes/x-office-presentation.png
new file mode 100644 (file)
index 0000000..047355c
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/x-office-presentation.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/x-office-spreadsheet-template.png b/CubeIT/images/tango/32/mimetypes/x-office-spreadsheet-template.png
new file mode 100644 (file)
index 0000000..6a81f36
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/x-office-spreadsheet-template.png differ
diff --git a/CubeIT/images/tango/32/mimetypes/x-office-spreadsheet.png b/CubeIT/images/tango/32/mimetypes/x-office-spreadsheet.png
new file mode 100644 (file)
index 0000000..c0ccb7a
Binary files /dev/null and b/CubeIT/images/tango/32/mimetypes/x-office-spreadsheet.png differ
diff --git a/CubeIT/images/tango/32/places/folder-remote.png b/CubeIT/images/tango/32/places/folder-remote.png
new file mode 100644 (file)
index 0000000..0d753eb
Binary files /dev/null and b/CubeIT/images/tango/32/places/folder-remote.png differ
diff --git a/CubeIT/images/tango/32/places/folder-saved-search.png b/CubeIT/images/tango/32/places/folder-saved-search.png
new file mode 100644 (file)
index 0000000..8100aae
Binary files /dev/null and b/CubeIT/images/tango/32/places/folder-saved-search.png differ
diff --git a/CubeIT/images/tango/32/places/folder.png b/CubeIT/images/tango/32/places/folder.png
new file mode 100644 (file)
index 0000000..0171b09
Binary files /dev/null and b/CubeIT/images/tango/32/places/folder.png differ
diff --git a/CubeIT/images/tango/32/places/network-server.png b/CubeIT/images/tango/32/places/network-server.png
new file mode 100644 (file)
index 0000000..1d38e4f
Binary files /dev/null and b/CubeIT/images/tango/32/places/network-server.png differ
diff --git a/CubeIT/images/tango/32/places/network-workgroup.png b/CubeIT/images/tango/32/places/network-workgroup.png
new file mode 100644 (file)
index 0000000..4137b3c
Binary files /dev/null and b/CubeIT/images/tango/32/places/network-workgroup.png differ
diff --git a/CubeIT/images/tango/32/places/start-here.png b/CubeIT/images/tango/32/places/start-here.png
new file mode 100644 (file)
index 0000000..1e54d01
Binary files /dev/null and b/CubeIT/images/tango/32/places/start-here.png differ
diff --git a/CubeIT/images/tango/32/places/user-desktop.png b/CubeIT/images/tango/32/places/user-desktop.png
new file mode 100644 (file)
index 0000000..57fb177
Binary files /dev/null and b/CubeIT/images/tango/32/places/user-desktop.png differ
diff --git a/CubeIT/images/tango/32/places/user-home.png b/CubeIT/images/tango/32/places/user-home.png
new file mode 100644 (file)
index 0000000..c0474da
Binary files /dev/null and b/CubeIT/images/tango/32/places/user-home.png differ
diff --git a/CubeIT/images/tango/32/places/user-trash.png b/CubeIT/images/tango/32/places/user-trash.png
new file mode 100644 (file)
index 0000000..9b7a462
Binary files /dev/null and b/CubeIT/images/tango/32/places/user-trash.png differ
diff --git a/CubeIT/images/tango/32/status/audio-volume-high.png b/CubeIT/images/tango/32/status/audio-volume-high.png
new file mode 100644 (file)
index 0000000..70ae43a
Binary files /dev/null and b/CubeIT/images/tango/32/status/audio-volume-high.png differ
diff --git a/CubeIT/images/tango/32/status/audio-volume-low.png b/CubeIT/images/tango/32/status/audio-volume-low.png
new file mode 100644 (file)
index 0000000..34546f9
Binary files /dev/null and b/CubeIT/images/tango/32/status/audio-volume-low.png differ
diff --git a/CubeIT/images/tango/32/status/audio-volume-medium.png b/CubeIT/images/tango/32/status/audio-volume-medium.png
new file mode 100644 (file)
index 0000000..4d48a9a
Binary files /dev/null and b/CubeIT/images/tango/32/status/audio-volume-medium.png differ
diff --git a/CubeIT/images/tango/32/status/audio-volume-muted.png b/CubeIT/images/tango/32/status/audio-volume-muted.png
new file mode 100644 (file)
index 0000000..a602c85
Binary files /dev/null and b/CubeIT/images/tango/32/status/audio-volume-muted.png differ
diff --git a/CubeIT/images/tango/32/status/battery-caution.png b/CubeIT/images/tango/32/status/battery-caution.png
new file mode 100644 (file)
index 0000000..ede9788
Binary files /dev/null and b/CubeIT/images/tango/32/status/battery-caution.png differ
diff --git a/CubeIT/images/tango/32/status/dialog-error.png b/CubeIT/images/tango/32/status/dialog-error.png
new file mode 100644 (file)
index 0000000..cdd95ba
Binary files /dev/null and b/CubeIT/images/tango/32/status/dialog-error.png differ
diff --git a/CubeIT/images/tango/32/status/dialog-information.png b/CubeIT/images/tango/32/status/dialog-information.png
new file mode 100644 (file)
index 0000000..2ac5747
Binary files /dev/null and b/CubeIT/images/tango/32/status/dialog-information.png differ
diff --git a/CubeIT/images/tango/32/status/dialog-warning.png b/CubeIT/images/tango/32/status/dialog-warning.png
new file mode 100644 (file)
index 0000000..7233d45
Binary files /dev/null and b/CubeIT/images/tango/32/status/dialog-warning.png differ
diff --git a/CubeIT/images/tango/32/status/folder-drag-accept.png b/CubeIT/images/tango/32/status/folder-drag-accept.png
new file mode 100644 (file)
index 0000000..d55769f
Binary files /dev/null and b/CubeIT/images/tango/32/status/folder-drag-accept.png differ
diff --git a/CubeIT/images/tango/32/status/folder-open.png b/CubeIT/images/tango/32/status/folder-open.png
new file mode 100644 (file)
index 0000000..eb65de2
Binary files /dev/null and b/CubeIT/images/tango/32/status/folder-open.png differ
diff --git a/CubeIT/images/tango/32/status/folder-visiting.png b/CubeIT/images/tango/32/status/folder-visiting.png
new file mode 100644 (file)
index 0000000..a9bbebe
Binary files /dev/null and b/CubeIT/images/tango/32/status/folder-visiting.png differ
diff --git a/CubeIT/images/tango/32/status/image-loading.png b/CubeIT/images/tango/32/status/image-loading.png
new file mode 100644 (file)
index 0000000..9442085
Binary files /dev/null and b/CubeIT/images/tango/32/status/image-loading.png differ
diff --git a/CubeIT/images/tango/32/status/image-missing.png b/CubeIT/images/tango/32/status/image-missing.png
new file mode 100644 (file)
index 0000000..27fccd5
Binary files /dev/null and b/CubeIT/images/tango/32/status/image-missing.png differ
diff --git a/CubeIT/images/tango/32/status/mail-attachment.png b/CubeIT/images/tango/32/status/mail-attachment.png
new file mode 100644 (file)
index 0000000..78f1e1c
Binary files /dev/null and b/CubeIT/images/tango/32/status/mail-attachment.png differ
diff --git a/CubeIT/images/tango/32/status/network-error.png b/CubeIT/images/tango/32/status/network-error.png
new file mode 100644 (file)
index 0000000..3de26e7
Binary files /dev/null and b/CubeIT/images/tango/32/status/network-error.png differ
diff --git a/CubeIT/images/tango/32/status/network-idle.png b/CubeIT/images/tango/32/status/network-idle.png
new file mode 100644 (file)
index 0000000..dca03af
Binary files /dev/null and b/CubeIT/images/tango/32/status/network-idle.png differ
diff --git a/CubeIT/images/tango/32/status/network-offline.png b/CubeIT/images/tango/32/status/network-offline.png
new file mode 100644 (file)
index 0000000..428aaa5
Binary files /dev/null and b/CubeIT/images/tango/32/status/network-offline.png differ
diff --git a/CubeIT/images/tango/32/status/network-receive.png b/CubeIT/images/tango/32/status/network-receive.png
new file mode 100644 (file)
index 0000000..b149c5d
Binary files /dev/null and b/CubeIT/images/tango/32/status/network-receive.png differ
diff --git a/CubeIT/images/tango/32/status/network-transmit-receive.png b/CubeIT/images/tango/32/status/network-transmit-receive.png
new file mode 100644 (file)
index 0000000..10ad0ac
Binary files /dev/null and b/CubeIT/images/tango/32/status/network-transmit-receive.png differ
diff --git a/CubeIT/images/tango/32/status/network-transmit.png b/CubeIT/images/tango/32/status/network-transmit.png
new file mode 100644 (file)
index 0000000..aaa91b8
Binary files /dev/null and b/CubeIT/images/tango/32/status/network-transmit.png differ
diff --git a/CubeIT/images/tango/32/status/network-wireless-encrypted.png b/CubeIT/images/tango/32/status/network-wireless-encrypted.png
new file mode 100644 (file)
index 0000000..0d4e368
Binary files /dev/null and b/CubeIT/images/tango/32/status/network-wireless-encrypted.png differ
diff --git a/CubeIT/images/tango/32/status/printer-error.png b/CubeIT/images/tango/32/status/printer-error.png
new file mode 100644 (file)
index 0000000..a6aa460
Binary files /dev/null and b/CubeIT/images/tango/32/status/printer-error.png differ
diff --git a/CubeIT/images/tango/32/status/software-update-available.png b/CubeIT/images/tango/32/status/software-update-available.png
new file mode 100644 (file)
index 0000000..aadcb91
Binary files /dev/null and b/CubeIT/images/tango/32/status/software-update-available.png differ
diff --git a/CubeIT/images/tango/32/status/software-update-urgent.png b/CubeIT/images/tango/32/status/software-update-urgent.png
new file mode 100644 (file)
index 0000000..3d67d9e
Binary files /dev/null and b/CubeIT/images/tango/32/status/software-update-urgent.png differ
diff --git a/CubeIT/images/tango/32/status/user-trash-full.png b/CubeIT/images/tango/32/status/user-trash-full.png
new file mode 100644 (file)
index 0000000..462ef39
Binary files /dev/null and b/CubeIT/images/tango/32/status/user-trash-full.png differ
diff --git a/CubeIT/images/tango/32/status/weather-clear-night.png b/CubeIT/images/tango/32/status/weather-clear-night.png
new file mode 100644 (file)
index 0000000..aa2714c
Binary files /dev/null and b/CubeIT/images/tango/32/status/weather-clear-night.png differ
diff --git a/CubeIT/images/tango/32/status/weather-clear.png b/CubeIT/images/tango/32/status/weather-clear.png
new file mode 100644 (file)
index 0000000..c84e8d3
Binary files /dev/null and b/CubeIT/images/tango/32/status/weather-clear.png differ
diff --git a/CubeIT/images/tango/32/status/weather-few-clouds-night.png b/CubeIT/images/tango/32/status/weather-few-clouds-night.png
new file mode 100644 (file)
index 0000000..62e21d7
Binary files /dev/null and b/CubeIT/images/tango/32/status/weather-few-clouds-night.png differ
diff --git a/CubeIT/images/tango/32/status/weather-few-clouds.png b/CubeIT/images/tango/32/status/weather-few-clouds.png
new file mode 100644 (file)
index 0000000..8c14e0d
Binary files /dev/null and b/CubeIT/images/tango/32/status/weather-few-clouds.png differ
diff --git a/CubeIT/images/tango/32/status/weather-overcast.png b/CubeIT/images/tango/32/status/weather-overcast.png
new file mode 100644 (file)
index 0000000..cc22e4c
Binary files /dev/null and b/CubeIT/images/tango/32/status/weather-overcast.png differ
diff --git a/CubeIT/images/tango/32/status/weather-severe-alert.png b/CubeIT/images/tango/32/status/weather-severe-alert.png
new file mode 100644 (file)
index 0000000..fb75808
Binary files /dev/null and b/CubeIT/images/tango/32/status/weather-severe-alert.png differ
diff --git a/CubeIT/images/tango/32/status/weather-showers-scattered.png b/CubeIT/images/tango/32/status/weather-showers-scattered.png
new file mode 100644 (file)
index 0000000..6e85a7b
Binary files /dev/null and b/CubeIT/images/tango/32/status/weather-showers-scattered.png differ
diff --git a/CubeIT/images/tango/32/status/weather-showers.png b/CubeIT/images/tango/32/status/weather-showers.png
new file mode 100644 (file)
index 0000000..0074348
Binary files /dev/null and b/CubeIT/images/tango/32/status/weather-showers.png differ
diff --git a/CubeIT/images/tango/32/status/weather-snow.png b/CubeIT/images/tango/32/status/weather-snow.png
new file mode 100644 (file)
index 0000000..fef6e4d
Binary files /dev/null and b/CubeIT/images/tango/32/status/weather-snow.png differ
diff --git a/CubeIT/images/tango/32/status/weather-storm.png b/CubeIT/images/tango/32/status/weather-storm.png
new file mode 100644 (file)
index 0000000..8a7db96
Binary files /dev/null and b/CubeIT/images/tango/32/status/weather-storm.png differ
diff --git a/CubeIT/images/tooltip.svg b/CubeIT/images/tooltip.svg
new file mode 100644 (file)
index 0000000..122c9ac
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        width="9px" height="9px" viewBox="0 0 9 9" enable-background="new 0 0 9 9" xml:space="preserve">
+<polygon fill="#333333" points="9,0 0,9 0,0 "/>
+</svg>
diff --git a/CubeIT/images/webvideo/dailymotion.png b/CubeIT/images/webvideo/dailymotion.png
new file mode 100644 (file)
index 0000000..477c54d
Binary files /dev/null and b/CubeIT/images/webvideo/dailymotion.png differ
diff --git a/CubeIT/images/webvideo/placeholder.png b/CubeIT/images/webvideo/placeholder.png
new file mode 100644 (file)
index 0000000..07bde73
Binary files /dev/null and b/CubeIT/images/webvideo/placeholder.png differ
diff --git a/CubeIT/images/webvideo/vimeo.png b/CubeIT/images/webvideo/vimeo.png
new file mode 100644 (file)
index 0000000..c11e02e
Binary files /dev/null and b/CubeIT/images/webvideo/vimeo.png differ
diff --git a/CubeIT/images/webvideo/youtube.png b/CubeIT/images/webvideo/youtube.png
new file mode 100644 (file)
index 0000000..86079d1
Binary files /dev/null and b/CubeIT/images/webvideo/youtube.png differ
diff --git a/CubeIT/js/accordion.js b/CubeIT/js/accordion.js
new file mode 100644 (file)
index 0000000..a8c4af9
--- /dev/null
@@ -0,0 +1,39 @@
+(function($) {
+       function JQaccordion(element) {
+               this.element = element;
+               this.init();
+       }
+       JQaccordion.prototype = {
+               init: function() {
+                       var $this = this;
+                       this.element.find('h3').on('click', function() {
+                               $this.toggle(this);
+                       });
+
+                       this.element.find('h3').each(function() {
+                               var elements = $(this).nextUntil('h3');
+                               $(elements).wrapAll('<div class="accordionHolder" />');
+                       });
+
+                       this.element.find('.accordionHolder').hide();
+                       this.element.find(".accordionHolder *:last-child").addClass('last-child');
+               },
+               toggle: function(h3) {
+                       $(h3).next().slideToggle();
+                       $(h3).toggleClass('open');
+               }
+       };
+
+       jQuery.fn.accordion = function() {
+               return this.each(function() {
+                       var $this = $(this);
+                       $(this).data('accordion', new JQaccordion($this));
+               })
+       };
+})(jQuery);
+
+registerLoader(load_accordion);
+
+function load_accordion() {
+       $(".accordion").accordion();
+}
\ No newline at end of file
diff --git a/CubeIT/js/admin/common.js b/CubeIT/js/admin/common.js
new file mode 100644 (file)
index 0000000..f6887fc
--- /dev/null
@@ -0,0 +1,14 @@
+registerLoader(load_cubeit_admin, true);
+
+
+function load_cubeit_admin() {
+       $(window).resize(resizeCubeITAdmin);
+       $(window).one('cubeitfontsloaded', resizeCubeITAdmin);
+       resizeCubeITAdmin();
+}
+
+function resizeCubeITAdmin() {
+       var top = $("#adminBar").outerHeight() + parseInt($("#mockup").attr('data-offset'));
+       var height = $(document).height() - top;
+       $("#mockup").css({top: top, height: height});
+}
\ No newline at end of file
diff --git a/CubeIT/js/admin/translations.js b/CubeIT/js/admin/translations.js
new file mode 100644 (file)
index 0000000..9935fc2
--- /dev/null
@@ -0,0 +1,8 @@
+registerLoader(load_admin_translations, true);
+
+
+function load_admin_translations() {
+       $(document).on('change', "#locale-element #locale", function() {
+               window.location = '/admin/translations/' + $(this).val();
+       });
+}
diff --git a/CubeIT/js/admin/tree.js b/CubeIT/js/admin/tree.js
new file mode 100644 (file)
index 0000000..04d7c9a
--- /dev/null
@@ -0,0 +1,99 @@
+
+registerLoader(load_admin_tree, true);
+
+
+function load_admin_tree() {
+
+       $(document).on('click', '#inherit', function() {
+               if ($(this).is(':checked')) {
+                       $('#acl-element :checkbox').prop('checked', false);
+               }
+       });
+
+       $(document).on('click', '#acl-element :checkbox', function() {
+               $("#inherit").prop('checked', false);
+       });
+
+       if ($("#pageTreeInterface").length > 0) {
+               newcounter = 0;
+               $("#pageTreeInterface").sortable({
+                       cancel: 'h3,input',
+                       axis: 'y',
+                       handle: '.handle'
+               });
+
+               $("#pageTreeInterface .page").each(function() {
+                       setLevel(this, getLevel(this));
+                       initTreePage(this, true);
+               });
+       }
+}
+
+function initTreePage(page, acl) {
+
+       if (!acl) {
+               $(page).find('.acl').remove();
+       }
+
+       $(page).find(".nextl a").click(function() {
+               var level = getLevel(page);
+               setLevel(page, Math.min(level + 1, 4));
+               return false;
+       });
+
+       $(page).find(".previous a").click(function() {
+               var level = getLevel(page);
+               setLevel(page, Math.max(level - 1, 0));
+               return false;
+       });
+
+       $(page).find(".delete a").click(function() {
+               $(page).remove();
+               return false;
+       });
+
+       $(page).find(".add a").click(function() {
+               var newpage = $(page).clone();
+               $(page).after($(newpage));
+               $(newpage).find('.id').text('# X');
+               $(newpage).find('.label').val('');
+               $(newpage).find('.label').attr('name', 'label[new_' + newcounter + ']');
+               $(newpage).find('input[type="hidden"].level').attr('name', 'level[new_' + newcounter + ']');
+               $(newpage).find('.online input').attr('name', 'online[new_' + newcounter + ']')
+               $(newpage).find('.template').attr('name', 'template[new_' + newcounter + ']');
+               $(newpage).find('.online :checkbox').prop('checked', null).checkbox();
+               newcounter++;
+               initTreePage(newpage, false);
+               return false;
+       });
+}
+
+
+function getLevel(e) {
+       for (i = 0; i <= 4; i++) {
+               if ($(e).hasClass('level' + i)) {
+                       return i;
+               }
+       }
+       return 0;
+}
+
+
+function setLevel(e, level) {
+       for (i = 0; i <= 4; i++) {
+               $(e).removeClass('level' + i);
+       }
+       $(e).addClass('level' + level);
+       $(e).find('input[type="hidden"].level').val(level);
+       if (level == 0) {
+               $(e).children('.previous').css('visibility', 'hidden');
+       } else {
+               $(e).children('.previous').css('visibility', 'visible');
+       }
+       if (level == 4) {
+               $(e).children('.nextl').css('visibility', 'hidden');
+       } else {
+               $(e).children('.nextl').css('visibility', 'visible');
+       }
+}
+
diff --git a/CubeIT/js/autocomplete.js b/CubeIT/js/autocomplete.js
new file mode 100644 (file)
index 0000000..aae249e
--- /dev/null
@@ -0,0 +1,15 @@
+
+registerLoader(load_autocomplete);
+
+function load_autocomplete() {
+       $(".autocomplete").each(function() {
+               $(this).wrap('<div style="position:relative;"></div>');
+               $(this).autocomplete($(this).attr('rel'), {maxItemsToShow: 15, cacheLength: 0});
+       });
+
+       $(".autocompletestatic").each(function() {
+               $(this).wrap('<div style="position:relative;"></div>');
+               tab = $(this).attr('rel').split('§');
+               $(this).autocompleteArray(tab, {maxItemsToShow: 15, cacheLength: 0});
+       });
+}
\ No newline at end of file
diff --git a/CubeIT/js/bannerCookies.js b/CubeIT/js/bannerCookies.js
new file mode 100644 (file)
index 0000000..0928eb0
--- /dev/null
@@ -0,0 +1,10 @@
+registerLoader(load_cubeit_banner_cookies, true);
+function load_cubeit_banner_cookies() {
+    $(document).on('click', "#cookieBanner .close", function () {
+        processAjaxURL('/ajax/cookieBannerDismiss');
+        $("#cookieBanner").fadeOut(function () {
+            $(this).remove();
+        });
+        return false;
+    });
+}
\ No newline at end of file
diff --git a/CubeIT/js/base64.js b/CubeIT/js/base64.js
new file mode 100644 (file)
index 0000000..afc41f0
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2012 Miles Shang <mail@mshang.ca>
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * Usage:
+ * Set your settings:
+ *   base64.settings.char62 = "-";
+ *   base64.settings.char63 = "_";
+ *   etc.
+ * 
+ * Then:
+ * base64.encode(str) takes a string and returns the base64 encoding of it.
+ * base64.decode(str) does the reverse.
+ */
+
+/* TODO:
+ * Add a "padding_mandatory" flag to check for bad padding in the decoder.
+ * Add test cases that throw errors.
+ */
+
+var base64 = new Object();
+
+base64.settings = {// defaults
+       "char62": "+",
+       "char63": "/",
+       "pad": "=",
+       "ascii": true
+};
+
+/* 
+ * Settings:
+ * If "pad" is not null or undefined, then it will be used for encoding.
+ *
+ * If "ascii" is set to true, then the encoder
+ * will assume that plaintext is in 8-bit chars (the standard). 
+ * In this case, for every 3 chars in plaintext, you get 4 chars of base64.
+ * Any non-8-bit chars will cause an error.
+ * Otherwise, assume that all plaintext can be in the full range
+ * of Javascript chars, i.e. 16 bits. Get 8 chars of base64 for 3 chars
+ * of plaintext. Any possible JS string can be encoded.
+ */
+
+base64.encode = function(str) {
+       this.char_set =
+                       "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+                       + this.settings.char62 + this.settings.char63;
+
+       var output = ""; // final output
+       var buf = ""; // binary buffer
+       for (var i = 0; i < str.length; ++i) {
+               var c_num = str.charCodeAt(i);
+               if (this.settings.ascii)
+                       if (c_num >= 256)
+                               throw "Not an 8-bit char.";
+               var c_bin = c_num.toString(2);
+               while (c_bin.length < (this.settings.ascii ? 8 : 16))
+                       c_bin = "0" + c_bin;
+               buf += c_bin;
+
+               while (buf.length >= 6) {
+                       var sextet = buf.slice(0, 6);
+                       buf = buf.slice(6);
+                       output += this.char_set.charAt(parseInt(sextet, 2));
+               }
+       }
+
+       if (buf) { // not empty
+               while (buf.length < 6)
+                       buf += "0";
+               output += this.char_set.charAt(parseInt(buf, 2));
+       }
+
+       if (this.settings.pad)
+               while (output.length % (this.settings.ascii ? 4 : 8) != 0)
+                       output += this.settings.pad;
+
+       return output;
+}
+
+base64.decode = function(str) {
+       this.char_set =
+                       "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+                       + this.settings.char62 + this.settings.char63;
+
+       var output = ""; // final output
+       var buf = ""; // binary buffer
+       var bits = (this.settings.ascii ? 8 : 16);
+       for (var i = 0; i < str.length; ++i) {
+               if (str[i] == this.settings.pad)
+                       break;
+               var c_num = this.char_set.indexOf(str.charAt(i));
+               if (c_num == -1)
+                       throw "Not base64.";
+               var c_bin = c_num.toString(2);
+               while (c_bin.length < 6)
+                       c_bin = "0" + c_bin;
+               buf += c_bin;
+
+               while (buf.length >= bits) {
+                       var octet = buf.slice(0, bits);
+                       buf = buf.slice(bits);
+                       output += String.fromCharCode(parseInt(octet, 2));
+               }
+       }
+       return output;
+}
+
+if (window['btoa'] == undefined) {
+       window['btoa'] = base64.decode;
+       window['atob'] = base64.encode;
+}
\ No newline at end of file
diff --git a/CubeIT/js/canvasmask.js b/CubeIT/js/canvasmask.js
new file mode 100644 (file)
index 0000000..0ff0e5b
--- /dev/null
@@ -0,0 +1,58 @@
+registerLoader(load_canvasmask);
+function load_canvasmask() {
+       $('img[data-mask]').canvasMask();
+}
+
+
+(function ($) {
+       function JQcanvasMask(element) {
+               var $this = this;
+               this.element = element;
+               this.img = this.element.get(0);
+               this.imagecanvas = document.createElement('canvas');
+               this.imagecontext = this.imagecanvas.getContext('2d');
+               if (this.element.isLoaded()) {
+                       this.init();
+               } else {
+                       this.element.one('load', function () {
+                               $this.init();
+                       });
+               }
+       }
+
+       JQcanvasMask.prototype = {
+               init: function () {
+                       var $this = this;
+                       this.width = this.img.width;
+                       this.height = this.img.height;
+                       this.imagecanvas.width = this.width;
+                       this.imagecanvas.height = this.height;
+                       var mask = document.createElement('img');
+                       mask.src = this.element.data('mask');
+                       if ($(mask).isLoaded()) {
+                               this.maskLoaded(mask);
+                       } else {
+                               $(mask).one('load', function () {
+                                       $this.maskLoaded(mask);
+                               });
+                       }
+               },
+               maskLoaded: function (maskImg) {
+                       var mask = $(maskImg).get(0);
+
+                       this.imagecontext.drawImage(mask, 0, 0, this.width, this.height);
+                       this.imagecontext.globalCompositeOperation = 'source-atop';
+                       this.imagecontext.drawImage(this.img, 0, 0);
+                       this.img.src = this.imagecanvas.toDataURL();
+               }
+       };
+       jQuery.fn.canvasMask = function () {
+               return this.each(function () {
+                       var $this = $(this);
+
+                       if (undefined === $(this).data('canvasMask')) {
+                               $(this).data('canvasMask', new JQcanvasMask($this));
+                       }
+               });
+       };
+})(jQuery);
diff --git a/CubeIT/js/checkall.js b/CubeIT/js/checkall.js
new file mode 100644 (file)
index 0000000..b28fd29
--- /dev/null
@@ -0,0 +1,13 @@
+
+registerLoader(load_checkall);
+
+function load_checkall() {
+       // Checkbox
+       $(".check-all").click(function() {
+               var rel = $(this).attr('rel');
+               var newc = this.checked;
+               $('[rel=' + rel + ']').each(function() {
+                       this.checked = newc;
+               });
+       });
+}
\ No newline at end of file
diff --git a/CubeIT/js/checkbox.js b/CubeIT/js/checkbox.js
new file mode 100644 (file)
index 0000000..0f25afb
--- /dev/null
@@ -0,0 +1,139 @@
+registerLoader(load_checkbox, true);
+
+function load_checkbox() {
+    $(document).on('cubeitdomchange', function () {
+        $(":checkbox").checkbox();
+        $(":radio").checkbox();
+    });
+}
+
+(function ($) {
+    $.propHooks.checked = {
+        set: function (el, value) {
+            if (el.checked !== value) {
+                el.checked = value;
+                $(el).trigger('checkboxchange');
+            }
+        }
+    };
+
+    function JQcheckbox(element) {
+        this.element = element;
+        this.type = this.element.attr('type');
+        this.input = element;
+        this.substitute;
+        this.label = element.parents("label");
+        if (this.label.length == 0) {
+            this.label = $('label[for="' + element.attr('id') + '"]');
+        }
+        this.label.attr('data-value', element.attr('value'));
+        this.init();
+    }
+
+    JQcheckbox.prototype = {
+        init: function () {
+            var $this = this;
+            this.element.hide();
+            this.element.next(".checkbox").remove();
+            this.substitute = $('<div class="' + this.type + '"></div>');
+
+            var ignore = ['name', 'id', 'type', 'checked', 'style', 'value', 'class'];
+
+            $.each(this.element.attributes(), function (k, v) {
+                if (ignore == undefined || ignore.indexOf(k) == -1) {
+                    $this.substitute.attr(k, v);
+                }
+            });
+            this.element.after(this.substitute);
+            this.initEvents();
+            this.initState();
+        },
+        initEvents: function () {
+            var $this = this;
+            this.substitute.off('click');
+            this.substitute.on('click', function () {
+                $this.click();
+                return false;
+            });
+
+            this.element.off('checkboxchange');
+            this.element.on('checkboxchange', function () {
+                $this.initState();
+            });
+            this.label.off('click');
+            this.label.on('click', function (e) {
+                if (e.target == this) {
+                    $this.click();
+                    return false;
+                }
+            });
+
+        },
+        click: function () {
+            var change = false;
+            if (this.type == 'radio') {
+                change = this.check();
+            } else {
+                change = this.toggle();
+            }
+
+            if (change) {
+                this.element.trigger('change');
+            }
+        },
+        initState: function () {
+            if (!this.element.prop('checked')) {
+                this.uncheck();
+            } else {
+                this.check();
+            }
+        },
+        toggle: function () {
+            this.element.trigger('change');
+            if (this.element.prop('checked')) {
+                this.uncheck();
+            } else {
+                this.check();
+            }
+            return true;
+        },
+        check: function () {
+            if (this.type == 'radio') {
+                try {
+                    $(':radio[name="' + this.element.attr('name') + '"]').not(this.element).each(function () {
+                        $(this).data('checkbox').uncheck();
+                    });
+                } catch (err) {
+
+                }
+            }
+
+            if (this.substitute.attr('checked') != 'checked') {
+                this.substitute.attr('checked', 'checked');
+                this.element.prop('checked', true);
+                this.label.attr('data-checked', 'checked');
+                return true;
+            }
+            return false;
+        },
+        uncheck: function () {
+            this.label.attr('data-checked', null);
+            this.substitute.attr('checked', null);
+            this.element.prop('checked', false);
+        }
+
+
+    };
+
+    jQuery.fn.checkbox = function () {
+        return this.each(function () {
+            var $this = $(this);
+            if ($(this).data('checkbox') != undefined) {
+                $(this).data('checkbox').initState();
+                return;
+            }
+            $(this).data('checkbox', new JQcheckbox($this));
+        })
+    };
+})(jQuery);
+
diff --git a/CubeIT/js/contextmenu.js b/CubeIT/js/contextmenu.js
new file mode 100644 (file)
index 0000000..22c06a8
--- /dev/null
@@ -0,0 +1,50 @@
+registerLoader(load_contextmenu);
+
+function load_contextmenu() {
+       $("*:not(.openContextMenu)").click(function() {
+               $(".contextMenu").hide();
+       });
+
+       $(".openContextMenu").click(function(e) {
+               $(".contextMenu").hide();
+               var rel = $(this).attr('rel');
+               var cm = $("#" + rel).clone(true);
+               var args = $(this).attr('rev').split('§');
+               var j;
+               var mask;
+               for (var i = 0; i < args.length; i++) {
+                       j = i + 1;
+                       mask = new RegExp('\\$' + j.toString(), 'gi');
+                       $(cm).find('li.head').each(function() {
+                               $(this).html($(this).html().replace(mask, args[i]));
+                       });
+                       $(cm).find('li a').each(function() {
+                               if ($(this).attr('href') && $(this).attr('href') != '#') {
+                                       $(this).attr('href', $(this).attr('href').replace(mask, args[i]));
+                               }
+                               if ($(this).attr('rel')) {
+                                       $(this).attr('rel', $(this).attr('rel').replace(mask, args[i]));
+                               }
+
+                               if ($(this).attr('rev')) {
+                                       $(this).attr('rev', $(this).attr('rev').replace(mask, args[i]));
+                               }
+                       });
+                       $(cm).find('span').each(function() {
+                               $(this).text($(this).text().replace(mask, args[i]))
+                       });
+               }
+               $(cm).appendTo('body');
+               $(cm).removeAttr('id');
+               $(cm).show();
+               if ($(cm).hasClass('fixed')) {
+                       var offset = $(this).offset();
+                       $(cm).css('top', offset.top + $(this).height());
+                       $(cm).css('left', offset.left);
+               } else {
+                       $(cm).css('top', e.pageY);
+                       $(cm).css('left', e.pageX);
+               }
+               return false;
+       });
+}
\ No newline at end of file
diff --git a/CubeIT/js/corner.js b/CubeIT/js/corner.js
new file mode 100644 (file)
index 0000000..701a2f5
--- /dev/null
@@ -0,0 +1,12 @@
+registerLoader(load_corners);
+
+function load_corners() {
+       // Coins arrondis
+       $(".corner").each(function() {
+               var title = $(this).attr('title');
+               var classe = $(this).attr('class');
+               $(this).attr('class', classe.replace(/corner/, ''));
+               $(this).attr('title', '');
+               $(this).corner(title);
+       });
+}
\ No newline at end of file
diff --git a/CubeIT/js/cube.js b/CubeIT/js/cube.js
new file mode 100644 (file)
index 0000000..9c5e8de
--- /dev/null
@@ -0,0 +1,1237 @@
+var TO_LOAD = new Array();
+var TO_LOAD_ONCE = new Array();
+var UNBIND = false;
+var GOTOAFTERSUBMIT = '';
+var GOTOAFTERSUBMITTARGET = '_self';
+var POPUP_COUNTER = 0;
+var DEFAULT_WAIT_MESSAGE = '';
+var IE = undefined;
+var CLOSE_UPLOAD_POPUP_PENDING = false;
+var RESIZE_TIMEOUT = false;
+var MASK_LOADER = false;
+var CUBEIT_READY = false;
+$(function () {
+    if (CUBEIT_READY) {
+        return;
+    }
+    measureScrollBars();
+    CUBEIT_READY = true;
+    load_jquery();
+    load_jquery_onetime();
+
+    setTimeout(function () {
+        $("html").addClass('wf-active');
+    }, 1000);
+});
+
+/**
+ *
+ * @access public
+ * @return void
+ **/
+function load_jquery_onetime() {
+
+
+    execLoaders(true);
+    $(document).trigger('loadonce.cubeit');
+    $(document).on('click', "a.popup", clickPopup);
+    $(document).on('click', 'a[data-confirm]', function (e) {
+        var confirm = window.confirm($(this).data('confirm'));
+        if (!confirm) {
+            e.preventDefault();
+            e.stopPropagation();
+            e.stopImmediatePropagation();
+
+            maskLoader(250);
+        }
+        return confirm;
+    });
+    $(document).on('click', 'a[data-loader]', function () {
+        var message = $(this).data('loader');
+        var options = {};
+        if (message) {
+            options.message = message;
+        }
+        displayLoader(options);
+        return true;
+    });
+
+
+    // Emulation d'un bouton submit
+    $(document).on('click', "a.submit", function () {
+        var form = $(this).parents('form');
+        if ($(this).data('name') != undefined) {
+            $(form).append('<input type="hidden" class="clickedButton" value="' + $(this).attr('data-name') + '" name="clickedButton" />');
+            setTimeout(function () {
+                $(form).find('input.clickedButton').remove();
+            }, 25);
+        }
+        $(form).submit();
+        return false;
+    });
+
+    $(document).on('click', "a.dummy,a.nothing", function () {
+        return false;
+    });
+    // Lien qui mene vers une fonction ajax
+    $(document).on('click', "a.ajax", function () {
+        if ($(this).data('nohref') == 'nohref') {
+            return false;
+        }
+        return processAjaxLink(this);
+    });
+    // Lien qui mene vers une fonction ajax en doublecliquant
+    $(document).on('dblclick', "a.dajax", function () {
+        return processAjaxLink(this);
+    });
+    // Gestion des faux popups
+    $(document).on('click', "a.closePopup", function () {
+        closePopup($(this), true);
+        return false;
+    });
+    $(document).on('change', ":checkbox[value='_all_']", function () {
+        var attr = null;
+        if ($(this).is(':checked')) {
+            attr = 'checked';
+        }
+        $(':checkbox[name="' + $(this).attr('name') + '"]').not($(this)).attr('checked', attr);
+        return false;
+    });
+    $(window).on('popstate', function () {
+        hideLoader();
+    });
+    $(document).on('click', 'a.truePopup', function () {
+        var params = [];
+        var attributes = ['width', 'height', 'status', 'resizable', 'scrollbars', 'location'];
+        var k;
+        var v;
+        if ($(this).data('ratio') != undefined) {
+            var ratio = parseFloat($(this).data('ratio'));
+            var h = screen.height;
+            var w = h * ratio;
+            if (w > screen.width) {
+                w = screen.width;
+                h = w / ratio;
+            }
+
+            $(this).attr('data-width', Math.round(w));
+            $(this).attr('data-height', Math.round(h));
+        }
+
+        for (var i = 0; i < attributes.length; i++) {
+            k = attributes[i];
+            if ($(this).attr('data-' + k) != undefined) {
+                v = $(this).attr('data-' + k);
+                if ((k == 'width' || k == 'height') && v.indexOf('%') != -1) {
+                    v = parseInt(v) / 100;
+                    if (k == 'width') {
+                        v *= screen.width;
+                    } else {
+                        v *= screen.height;
+                    }
+                }
+                params.push(k + '=' + v);
+            }
+        }
+
+        var href = $(this).attr('href');
+        var name = $(this).attr('data-name');
+        var settings = params.join(',');
+        window.open(href, name, settings);
+        return false;
+    });
+    $(document).on('click', 'a.blank', function () {
+        if ($(this).attr('target') == undefined) {
+            $(this).attr('target', '_blank');
+        }
+        return true;
+    });
+    $(document).on('click', 'a[target="fullscreen"]', function () {
+        truePopup($(this).attr('href'), screen.width, screen.height);
+        return false;
+    });
+    $(document).on('click', 'a.historyback', function () {
+        history.back();
+        return false;
+    });
+    $(document).on('click', 'a[href]:not(.popup,.submit,.dummy,.nothing,.ajax,.dajax,.closePopup,.truePopup,.external,[target="fullscreen"])',
+        function () {
+            if ($(this).attr('target') == undefined) {
+                var href = $(this).attr('href');
+                var currentHost = window.location.host;
+                var matches = href.match(/^https?:\/\/([a-z0-9-.]*)/i);
+                if (matches && matches.length > 0) {
+                    if (matches[1] == Application.webhost || (currentHost && matches[1] == currentHost)) {
+                    } else {
+                        $(this).attr('target', '_blank');
+                        $(this).addClass('external');
+                    }
+                }
+
+            }
+            return true;
+        });
+
+    // Autoplay videos on chrome
+    $("video[data-autoplay]").each(function () {
+        $(this).get(0).play();
+    });
+
+    $(window).on('cubeitfontsloaded', _cubeitresize);
+    $(window).on('resize orientationchange blur focus', _cubeitresize);
+    $(document).on('webkitfullscreenchange mozfullscreenchange msfullscreenchange fullscreenchange', _cubeitresize);
+    _cubeitresize();
+
+    $(document).trigger('cubeitdomchange');
+
+    DEFAULT_WAIT_MESSAGE = $("#ajaxLoader .c p").text();
+    if (Application.actions != undefined) {
+        parseActions(Application.actions);
+    }
+}
+
+function measureScrollBars() {
+    // Create the measurement node
+    var scrollDiv = document.createElement("div");
+    scrollDiv.className = "scrollbar-measure";
+    document.body.appendChild(scrollDiv);
+
+    // Get the scrollbar width
+    window.scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
+
+    // Delete the DIV
+    document.body.removeChild(scrollDiv);
+}
+
+function _cubeitresize() {
+    cubeitresize();
+    /*if (RESIZE_TIMEOUT !== false) {
+     clearTimeout(RESIZE_TIMEOUT);
+     }
+     RESIZE_TIMEOUT = setTimeout(function() {
+     cubeitresize();
+     }, 1);*/
+}
+
+function cubeitresize() {
+    $(window).trigger('cubeitresize');
+    popup_dimensions();
+    $(".resize-ratio[data-ratio]").each(function () {
+        var w = $(this).outerWidth();
+        $(this).attr('height', Math.round(w / $(this).data('ratio')));
+    });
+}
+
+function load_jquery() {
+    $(":checkbox[value='_all_']").each(function () {
+        $(this).parent('label').css('font-style', 'italic');
+    });
+    // Target _blank
+    $("a.blank").each(function () {
+        $(this).attr('target', '_blank');
+    });
+    $("a.pemail").each(function () {
+        var p;
+        var adresse;
+        if ($(this).attr('rel') == '' || $(this).attr('rel') == undefined) {
+
+            var h = $(this).attr('href').split(':');
+            p = h[1];
+            adresse = rot13(p);
+            if ($(this).text() == p) {
+                $(this).text(adresse);
+            }
+        } else {
+            p = $(this).attr('rel');
+            adresse = rot13(p);
+        }
+
+        $(this).attr('href', 'mailto:' + adresse);
+        $(this).removeClass('pemail');
+    });
+    $("html.no-svg img.svg[data-altsrc]").each(function () {
+        $(this).attr('src', $(this).attr('data-altsrc'));
+        $(this).removeClass('svg');
+    });
+    if ($(".dotdotdot").length > 0) {
+        try {
+            $('.dotdotdot').dotdotdot();
+        } catch (err) {
+            fb(err);
+        }
+    }
+
+    $(document).trigger('cubeitdomchange');
+    execLoaders(false);
+    if ($("#jquery_time").length > 0 && $("#jquery_time").text() == '') {
+        var E = new Date();
+        var m = (parseInt(E - S) / 1000).toString().replace('.', ',');
+        $("#jquery_time").text(m);
+    }
+}
+
+
+function processAjaxLink(link, callback) {
+    var url;
+    var continueAfterAjax = false;
+    if (typeof link === 'string') {
+        url = link;
+        displayLoader();
+    } else {
+        continueAfterAjax = $(link).hasClass('continue');
+        if ($(link).data('url') != null) {
+            url = $(link).data('url');
+        } else {
+            url = $(link).attr('href');
+        }
+        if ($(link).hasClass('wait')) {
+            wait();
+        }
+        displayLoader($(link).data('loader'));
+    }
+
+    return processAjaxURL(url, {}, callback, continueAfterAjax);
+}
+
+function processAjaxURL(url, data, callback, async) {
+    if (data === undefined) {
+        data = {};
+    }
+    if (async === undefined) {
+        async = false;
+    }
+    $.ajax({
+        cache: false,
+        asycn: async,
+        url: url,
+        data: data,
+        success: function (data) {
+            var parsedDatas = successAjax(data);
+            if (callback !== undefined) {
+                callback(parsedDatas);
+            }
+        },
+        error: errorAjax
+    });
+    return async;
+}
+
+function errorAjax(xhr, textStatis, errorThrown) {
+    displayErrorLoader();
+}
+
+function successAjax(data) {
+    try {
+        if (typeof (data) == 'string') {
+            if (data.indexOf("B64") == 0) {
+                data = data.replace(/(<([^>]+)>)/ig, "").substr(3);
+                data = base64.decode(data);
+            }
+            data = JSON.parse(data);
+        }
+    } catch (err) {
+        data = {};
+        fb(err);
+    }
+
+    try {
+        if (parseActions(data)) {
+            hideLoader();
+            load_jquery();
+        }
+    } catch (err) {
+        fb(err);
+        hideLoader();
+        load_jquery();
+    }
+    return data;
+}
+
+function clickPopup() {
+    var href = $(this).attr('href');
+    if ($(this).data('popup-href') !== undefined && $(this).data('popup-href') !== null) {
+        href = $(this).data('popup-href');
+    }
+
+    if ($(this).hasClass('image')) {
+        var hclass = 'b ajaxpopup';
+        if ($(this).attr('data-class') != undefined) {
+            hclass += ' ' + $(this).attr('data-class');
+        }
+        var close = "/images/close.png";
+        if ($(this).attr('data-close') != undefined) {
+            close = $(this).attr('data-close');
+        }
+
+        var data = '<div class="' + hclass + '"><img src="' + href + '" width="' + $(this).attr('data-width') + '" height="' + $(this).attr('data-height') + '" /><a href="#" class="closePopup"><img src="' + close + '" /></a></div>';
+        createPopup(data);
+    } else {
+        openPopup(href);
+    }
+    return false;
+}
+
+function openPopup(href, popup, callback) {
+    if (popup == undefined) {
+        popup = 'new';
+    }
+    displayLoader();
+    $.ajax({
+        cache: false,
+        url: href,
+        dataType: 'html',
+        data: {context: 'popup'},
+        success: function (data) {
+            createPopup(data, href, popup);
+            hideLoader();
+            if (callback != undefined) {
+                callback();
+            }
+            $(window).trigger('cubeitopenpopup');
+        },
+        error: function (data) {
+            displayErrorLoader();
+        }
+    });
+}
+
+function displayErrorLoader() {
+    displayLoader({message: __('Une erreur s\'est produite'), error: true, hideAfter: 2500});
+}
+
+function randval(min, max) {
+    var diff = max - min;
+    return Math.round(Math.random() * diff) + diff;
+}
+
+function rot(t, u, v) {
+    return String.fromCharCode(((t - u + v) % (v * 2)) + u);
+}
+
+function rot13(s) {
+    if (s == undefined) {
+        return '';
+    }
+    var b = [];
+    var c;
+    var i = s.length;
+    var a = 'a'.charCodeAt();
+    var z = a + 26;
+    var A = 'A'.charCodeAt();
+    var Z = A + 26;
+    while (i--) {
+        c = s.charCodeAt(i);
+        if (c >= a && c < z) {
+            b[i] = rot(c, a, 13);
+        } else if (c >= A && c < Z) {
+            b[i] = rot(c, A, 13);
+        } else {
+            b[i] = s.charAt(i);
+        }
+
+    }
+    return b.join('');
+}
+
+function createPopup(data, href, popup) {
+    if (popup == undefined) {
+        popup = 'new';
+    }
+
+    var popupn;
+    var create = false;
+    if (popup == 'new') {
+        popupn = parseInt(POPUP_COUNTER);
+        POPUP_COUNTER = popupn + 1;
+        create = true;
+    } else {
+        popupn = popup
+    }
+
+    var c = wrapPopup(data, href, popupn);
+    if (create) {
+        $("body").append(c);
+    } else {
+        $("#pl_" + popupn).replaceWith(c);
+    }
+
+
+    $("#po_" + popupn).css('display', 'block');
+    $("#pw_" + popupn).html(data);
+    $("#pw_" + popupn).show();
+    var opacity = $("#pl_" + popupn).find('[data-overlay-opacity]').data('overlay-opacity');
+    if (opacity == null) {
+        opacity = 0.35;
+    }
+
+    $("#po_" + popupn).css('opacity', opacity);
+
+    popup_dimensions();
+    $(document).trigger('cubeitpopupcreated');
+    load_jquery();
+    setTimeout(function () {
+        $("#pl_" + popupn).addClass('display');
+        popup_dimensions();
+    }, 1);
+}
+
+function reloadPopup() {
+    var c = POPUP_COUNTER - 1;
+    var url = $('#pl_' + c).data('uri');
+    openPopup(url, c);
+}
+
+
+function wrapPopup(data, href, popupn) {
+    var uri = '';
+    if (href != undefined) {
+        uri = ' data-uri="' + href + '"';
+    }
+    var zindexbase = 10000;
+    return '<div id="pl_' + popupn + '" class="popupLayer"' + uri + '><div class="popupOverlay" id="po_' + popupn + '" style="z-index:' + (zindexbase + popupn * 2) + ';"></div><div id="pw_' + popupn + '" class="popupWindow" style="z-index:' + (zindexbase + popupn * 2) + ';"></div></div>'
+}
+
+function closeAllPopups() {
+    var nb = $(".popupLayer").length;
+    for (var i = 0; i < nb; i++) {
+        closePopup();
+    }
+    $.fancybox.close(true);
+}
+
+function closePopup(object, confirm) {
+    if (object == undefined || object == null) {
+        var i = $(".popupLayer").length - 1;
+        var elements = $(".popupLayer").get();
+        var e = elements[i];
+        var changes = false;
+        $(this).find("form").each(function () {
+            if ($(this).attr("change") == 1) {
+                changes = true;
+            }
+        });
+        if (confirm == false || (changes == true && window.confirm(CONFIRM_CLOSE)) || changes == false) {
+            $(e).remove();
+            POPUP_COUNTER -= 1;
+            $(document).trigger('cubeitpopupremoved');
+            popup_dimensions();
+        }
+    } else {
+        $(object).parents(".popupLayer").each(function () {
+            var changes = false;
+            $(this).find("form").each(function () {
+                if ($(this).attr("change") == 1) {
+                    changes = true;
+                }
+            });
+            if (confirm == false || (changes == true && window.confirm(CONFIRM_CLOSE)) || changes == false) {
+                $(this).remove();
+                POPUP_COUNTER -= 1;
+                $(document).trigger('cubeitpopupremoved');
+                popup_dimensions();
+            }
+        });
+    }
+}
+
+function popup_dimensions() {
+    var windowHeight = getWindowHeight();
+    var windowWidth = $(window).width();
+
+
+    $(".popupWindow").each(function () {
+        var div = $(this).find('.c>div');
+        if ($(div).length == 0) {
+            div = $(this).find('.b');
+        }
+
+        var margin = $(div).data('verticalMargin');
+        margin = parseInt(margin);
+        if (isNaN(margin)) {
+            margin = 60;
+        }
+
+
+        var availableHeight = windowHeight - (margin * 2);
+        var availableWidth = windowWidth - (margin * 2);
+
+        var ww = $(div).data('width');
+        ww = parseInt(ww);
+        if (isNaN(ww)) {
+            ww = 550;
+        }
+
+        var wmax = $(div).data('maxwidth');
+        wmax = parseInt(wmax);
+        if (isNaN(wmax)) {
+            wmax = 700;
+        }
+        wmax = Math.min(wmax, availableWidth);
+
+        var padding = $(div).data('padding');
+        padding = parseInt(padding);
+        if (isNaN(padding)) {
+            padding = 25;
+        }
+
+        var bw = $(div).data('backwidth');
+        var corr = 0;
+        if (bw != '100%') {
+            corr = -padding * 2;
+        }
+
+        var offset = $(div).data('offset');
+        offset = parseInt(offset);
+        if (isNaN(offset)) {
+            offset = 0;
+        }
+
+        $(div).find('.back,.top,.closeholder').css('width', bw);
+        $(div).find('.cont').css('width', Math.min($(div).find('.top').outerWidth() + corr, wmax));
+        $(div).find('.cont,.top,.back').css('left', offset);
+        $(div).find('.top').css({
+            left: -1 * padding,
+            top: -1 * padding,
+            paddingTop: padding,
+            paddingRight: padding,
+            paddingLeft: padding,
+            paddingBottom: 0
+        });
+        $(div).find('.cont').css({
+            position: 'relative'
+        });
+        $(div).css({padding: padding});
+
+        // Reset window size
+        $(div).css('max-width', wmax);
+        // Get the real size
+        var ow = $(div).outerWidth();
+        var iw = $(div).width();
+        var pw = ow - iw;
+        var w = Math.min(availableWidth, ow) - pw;
+        if ($(div).hasClass('maxpopup')) {
+            w = Math.min(availableWidth - pw, wmax);
+        }
+
+        var oh = $(div).outerHeight();
+        var ih = $(div).height();
+        var ph = oh - ih;
+        var h = Math.min(availableHeight, oh) - ph;
+        // Hack For IE7
+        if (w < wmax) {
+            $(div).css('width', wmax);
+        } else {
+            $(div).css('width', w);
+        }
+
+        if ($(div).find('.elastic').length != 1) {
+            $(div).css('max-height', availableHeight);
+        } else {
+            var elastic = $(div).find('.elastic');
+            $(elastic).css('height', availableHeight - $(elastic).data('otherheight'));
+        }
+
+        $(div).css('overflow-y', 'auto');
+        if ($(this).data('allowhorizontalscroll') === 1) {
+            $(div).css('overflow-x', 'visible');
+        } else {
+            $(div).css('overflow-x', 'hidden');
+        }
+
+        // Center the window
+        $(this).css('left', (windowWidth - $(this).find('.back').width()) / 2);
+        $(this).css('top', (windowHeight - $(div).outerHeight()) / 2);
+    });
+    resizeLoader();
+}
+
+function resizeLoader(overlay) {
+    if (overlay != undefined) {
+        if (overlay === true) {
+            h = getWindowHeight();
+        } else if (overlay === false) {
+            h = 0;
+        }
+        $("#ajaxLoader").css('height', h);
+    }
+    $("#ajaxLoader").css('width', $(window).width());
+}
+
+function maskLoader(during) {
+    if (during === undefined) {
+        during = 250;
+    }
+    MASK_LOADER = true;
+    setTimeout(function () {
+        MASK_LOADER = false;
+    }, during);
+}
+
+function displayLoader(options) {
+    if (MASK_LOADER) {
+        return;
+    }
+    var defaultOptions = {display: true, overlay: true, message: null, hideAfter: 0, error: false};
+    if (options == undefined || options == null) {
+        options = {};
+    }
+    options = $.extend({}, defaultOptions, options);
+    if (options.message != null) {
+        $("#ajaxLoader .c p").html(options.message);
+    }
+
+    if (options.error) {
+        $("#ajaxLoader").addClass('error');
+    } else {
+        $("#ajaxLoader").removeClass('error');
+    }
+
+    resizeLoader(options.overlay);
+    $("#ajaxLoader").show();
+    var h = $("#ajaxLoader .c").outerHeight();
+    $("#ajaxLoader").css('top', -h);
+    $("#ajaxLoader").animate({
+        top: 0
+    }, 400, function () {
+        if (options.hideAfter > 0) {
+            setTimeout(function () {
+                hideLoader();
+            }, options.hideAfter);
+        }
+    });
+}
+
+function hideLoader() {
+    resizeLoader();
+    var h = $("#ajaxLoader .c").outerHeight();
+    $("#ajaxLoader").animate({
+        top: -h
+    }, 400, function () {
+        $("#ajaxLoader").hide();
+        $("#ajaxLoader .c p").html(DEFAULT_WAIT_MESSAGE);
+    });
+}
+
+function changepopup(data) {
+    var pc = POPUP_COUNTER - 1;
+    $("#pw_" + pc).html(data);
+    popup_dimensions();
+}
+
+function isSet(i) {
+    return (i == null || i == 'null' || i == '' || i == 'undefined');
+}
+
+try {
+    $.fn.ajaxSubmit.debug = false;
+} catch (err) {
+
+}
+
+function parseActions(data) {
+    var actionDatas, action, params;
+    var hideLoader = true;
+    for (var i = 0; i < data.actions.length; i++) {
+        actionDatas = data.actions[i];
+        action = actionDatas[0];
+        params = actionDatas[1];
+        if (action == 'redirection' || action == 'fileRedirection') {
+            if (action == 'redirection') {
+                hideLoader = false;
+            }
+            if (params == '') {
+                window.location.reload(true);
+            } else {
+                window.location = params;
+            }
+        } else if (action == 'timeoutRedirection') {
+            setTimeout(function () {
+                if (params[0] == '') {
+                    window.location.reload(true);
+                } else {
+                    window.location = params[0];
+                }
+            }, parseInt(params[1]) * 1000);
+        } else if (action == 'alert') {
+            window.alert(params);
+        } else if (action == 'closePopup') {
+            closePopup();
+
+        } else if (action == 'openPopup') {
+            openPopup(params, 'new');
+        } else if (action == 'openWindow') {
+            window.open(params);
+        } else if (action == 'append') {
+            $("#" + params[0]).append(params[1]);
+        } else if (action == 'markitup') {
+            $.markItUp(params);
+        } else if (action == 'content') {
+            $("#" + params[0]).html(params[1]);
+        } else if (action == 'inner') {
+            var c = $(params[1]).find(params[0]);
+            $(params[0]).html($(c).html());
+        } else if (action == 'setValue') {
+            $(params[0]).val(params[1]);
+        } else if (action == 'contentSelector') {
+            $(params[0]).html(params[1]);
+        } else if (action == 'remove' || action == 'removeSelector') {
+            $(params).remove();
+        } else if (action == 'appendSelector') {
+            $(params[0]).append(params[1]);
+        } else if (action == 'addAttribute' || action == 'setAttribute') {
+            $(params[0]).attr(params[1], params[2]);
+        } else if (action == 'replace') {
+            var removed = $(params[0]).replaceWith(params[1]);
+            $(removed).remove();
+        } else if (action == 'eval') {
+            try {
+                eval(params);
+            } catch (err) {
+
+            }
+        } else if (action == 'error') {
+            $("#" + params[0]).addClass('error');
+        } else if (action == 'ok') {
+            $("#" + params).removeClass('error');
+        } else if (action == 'show') {
+            $(params).show();
+        } else if (action == 'hide') {
+            $(params).hide();
+        } else if (action == 'class') {
+            $(params[0]).addClass(params[1]);
+        } else if (action == 'removeClass') {
+            $(params[0]).removeClass(params[1]);
+        } else if (action == 'scrollto') {
+            try {
+                $(window).scrollTo(params[0], params[1] * 1000, {offset: params[2]});
+            } catch (err) {
+
+            }
+        } else if (action == 'scrollElement') {
+            try {
+                // Handle special case where we want to go to the bottom of the element
+                if (params[1] == 'bottom') {
+                    // Get the height of the element we are scrolling so we can go to the bottom of it.
+                    params[1] = Math.max($(params[0]).height(), $(params[0]).children().height());
+                }
+                $(params[0]).scrollTo(params[1], params[2] * 1000);
+            } catch (err) {
+
+            }
+        } else if (action == 'resizePopup') {
+            popup_dimensions();
+        } else if (action == 'truncate') {
+            var filter = ':';
+            var index = parseInt(params[1]) - 1;
+            if (params[2] == '1') {
+                index++;
+                filter += 'lt(-' + index + ')';
+            } else {
+                filter += 'gt(' + index + ')';
+            }
+            var toRemove = params[0] + filter;
+            $(toRemove).remove();
+        } else if (action == 'replacePopup') {
+            var counter = POPUP_COUNTER - 1;
+            if (counter < 0) {
+                return;
+            }
+            var p = $("#pw_" + counter);
+            if (params[1] == 1) {
+                $(p).find('.cont').html(params[0]);
+            } else {
+                $(p).find('.b').html(params[0]);
+            }
+            popup_dimensions();
+        } else if (action == 'reloadPopup') {
+            reloadPopup();
+        } else if (action == 'blankWindow') {
+            window.open(params, '_blank');
+        } else if (action == 'trackingAdwords') {
+            trackingAdwordsConversion(params);
+        } else if (action == 'reloadPart') {
+            var selector = params;
+            $.ajax({
+                cache: false,
+                url: window.location,
+                success: function (data) {
+                    var content = $(data).find(selector).html();
+                    $(selector).html(content);
+                    successAjax([]);
+                },
+                error: errorAjax
+            });
+        } else if (action == 'gaEvent') {
+            ga('send', 'event', params[0], params[1], params[2]);
+        } else if (action == "appvariables") {
+            window.Application = $.extend({}, window.Application, params);
+        }
+    }
+
+    try {
+        resize();
+    } catch (err) {
+
+    }
+
+    return hideLoader;
+}
+
+function getSelector(name) {
+    if (name.substr(0, 1) == '#' || name.substr(0, 1) == '.') {
+        return name;
+    } else {
+        return "#" + name;
+    }
+}
+
+function truePopup(url) {
+    var rand = Math.round(Math.random() * 200);
+    window.open(url, 'Popup' + rand, 'width=' + screen.availWidth + ',height=' + screen.availHeight);
+}
+
+
+function getWindowHeight() {
+    var windowHeight = 0;
+    if (typeof (window.innerHeight) == 'number') {
+        windowHeight = window.innerHeight;
+    }
+    else {
+        if (document.documentElement &&
+            document.documentElement.clientHeight) {
+            windowHeight = document.documentElement.clientHeight;
+        }
+        else {
+            if (document.body && document.body.clientHeight) {
+                windowHeight = document.body.clientHeight;
+            }
+        }
+    }
+    return windowHeight;
+}
+
+function getWindowWidth() {
+    var myWidth = 0;
+    if (typeof (window.innerWidth) == 'number') {
+        //Non-IE
+        myWidth = window.innerWidth;
+    }
+    else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
+        //IE 6+ in 'standards compliant mode'
+        myWidth = document.documentElement.clientWidth;
+    }
+    else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
+        //IE 4 compatible
+        myWidth = document.body.clientWidth;
+    }
+    return myWidth;
+}
+
+function doNothing() {
+
+}
+
+function htmlEditorGetText(id) {
+    var text = document.getElementById(id).value;
+    return '<TEXTFORMAT LEADING="2"><P ALIGN="LEFT">' + text + '</P></TEXTFORMAT>';
+}
+
+function htmlEditorPutText(id, text) {
+    document.getElementById(id).value = text;
+}
+
+function fb(o, json) {
+    if (window.console != undefined && window.console != null) {
+        if (json == undefined) {
+            json = false;
+        }
+        if (json) {
+            o = JSON.stringify(o);
+        }
+        console.log(o);
+    }
+    return;
+}
+
+$.fn.textWidth = function () {
+    var html_org = $(this).html();
+    var html_calc = '<span>' + html_org + '</span>';
+    $(this).html(html_calc);
+    var width = $(this).find('span:first').width();
+    $(this).html(html_org);
+    return width;
+};
+$.fn.isLoaded = function () {
+    var img = $(this).get(0);
+    if (img.readyState === 4 || img.readyState === 'complete') {
+        return true;
+    }
+    if (img.complete) {
+        return true;
+    }
+    return false;
+};
+
+$.fn.hasAttr = function (name) {
+    var attr = $(this).attr(name);
+    return typeof attr !== typeof undefined && attr !== false
+};
+
+// Extend jquery attr in order to get all attribututes
+// http://stackoverflow.com/a/14645827/1082031
+(function (old) {
+    $.fn.attr = function () {
+        if (arguments.length === 0) {
+            if (this.length === 0) {
+                return null;
+            }
+
+            var obj = {};
+            $.each(this[0].attributes, function () {
+                if (this.specified) {
+                    obj[this.name] = this.value;
+                }
+            });
+            return obj;
+        }
+
+        return old.apply(this, arguments);
+    };
+})($.fn.attr);
+
+(function ($) {
+    var
+        props = ['Width', 'Height'],
+        prop;
+    while (prop = props.pop()) {
+        (function (natural, prop) {
+            $.fn[natural] = (natural in new Image()) ?
+                function () {
+                    return this[0][natural];
+                } :
+                function () {
+                    var
+                        node = this[0],
+                        img,
+                        value;
+                    if (node.tagName.toLowerCase() === 'img') {
+                        img = new Image();
+                        img.src = node.src,
+                            value = img[prop];
+                    }
+                    return value;
+                };
+        }('natural' + prop, prop.toLowerCase()));
+    }
+}(jQuery));
+(function () {
+    var D = new Date('2011-06-02T09:34:29+02:00');
+    if (!D || +D !== 1307000069000) {
+        Date.fromISO = function (s) {
+            var day, tz,
+                rx = /^(\d{4}\-\d\d\-\d\d([tT ][\d:\.]*)?)([zZ]|([+\-])(\d\d):(\d\d))?$/,
+                p = rx.exec(s) || [];
+            if (p[1]) {
+                day = p[1].split(/\D/);
+                for (var i = 0, L = day.length; i < L; i++) {
+                    day[i] = parseInt(day[i], 10) || 0;
+                }
+                ;
+                day[1] -= 1;
+                day = new Date(Date.UTC.apply(Date, day));
+                if (!day.getDate())
+                    return new Date();
+                if (p[5]) {
+                    tz = (parseInt(p[5], 10) * 60);
+                    if (p[6])
+                        tz += parseInt(p[6], 10);
+                    if (p[4] == '+')
+                        tz *= -1;
+                    if (tz)
+                        day.setUTCMinutes(day.getUTCMinutes() + tz);
+                }
+                return day;
+            }
+            return new Date();
+        };
+    }
+    else {
+        Date.fromISO = function (s) {
+            try {
+                return new Date(s);
+            } catch (err) {
+                return new Date();
+            }
+        };
+    }
+
+    if (!Date.prototype.toISOString) {
+        (function () {
+            function pad(number) {
+                var r = String(number);
+                if (r.length === 1) {
+                    r = '0' + r;
+                }
+                return r;
+            }
+
+            Date.prototype.toISOString = function () {
+                return this.getUTCFullYear()
+                    + '-' + pad(this.getUTCMonth() + 1)
+                    + '-' + pad(this.getUTCDate())
+                    + 'T' + pad(this.getUTCHours())
+                    + ':' + pad(this.getUTCMinutes())
+                    + ':' + pad(this.getUTCSeconds())
+                    + '.' + String((this.getUTCMilliseconds() / 1000).toFixed(3)).slice(2, 5)
+                    + 'Z';
+            };
+        }());
+    }
+})();
+$.fn.attributes = function () {
+    var e = $(this).get(0);
+    var a;
+    var res = {};
+    for (var i = 0; i < e.attributes.length; i++) {
+        a = e.attributes[i];
+        if (a.specified) {
+            res[a.name] = a.value;
+        }
+    }
+    return res;
+};
+
+$.fn.windowHeight = function () {
+    var res = $(window).height();
+    if (window.innerHeight && window.innerHeight > res) {
+        res = window.innerHeight;
+    }
+    return res;
+};
+
+$.fn.cssNumber = function(prop){
+    var v = parseInt(this.css(prop),10);
+    return isNaN(v) ? 0 : v;
+};
+
+function objectIndexOf(o, value) {
+    var res = -1;
+    for (var k in o) {
+        if (o[k] == value) {
+            return k;
+        }
+    }
+    return res;
+}
+
+function __(str) {
+    if (Application.l10n && Application.l10n[str]) {
+        return Application.l10n[str];
+    }
+    return str;
+}
+
+(function () {
+    var lastTime = 0;
+    var vendors = ['ms', 'moz', 'webkit', 'o'];
+    for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
+        window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
+        window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame']
+            || window[vendors[x] + 'CancelRequestAnimationFrame'];
+    }
+    if (!window.requestAnimationFrame)
+        window.requestAnimationFrame = function (callback, element) {
+            var currTime = new Date().getTime();
+            var timeToCall = Math.max(0, 16 - (currTime - lastTime));
+            var id = window.setTimeout(function () {
+                    callback(currTime + timeToCall);
+                },
+                timeToCall);
+            lastTime = currTime + timeToCall;
+            return id;
+        };
+    if (!window.cancelAnimationFrame)
+        window.cancelAnimationFrame = function (id) {
+            clearTimeout(id);
+        };
+}());
+
+function registerLoader(callback, once) {
+    if (once === undefined) {
+        once = false;
+    }
+    if (once) {
+        TO_LOAD_ONCE[TO_LOAD_ONCE.length] = callback;
+    } else {
+        TO_LOAD[TO_LOAD.length] = callback;
+    }
+}
+
+function execLoaders(once) {
+    var list;
+    if (once) {
+        list = TO_LOAD_ONCE;
+    } else {
+        list = TO_LOAD;
+    }
+
+
+    var len = list.length;
+    for (var i = 0; i < len; i++) {
+        var c = list[i];
+        if ((typeof c) == "string") {
+            eval(c);
+        } else {
+            c();
+        }
+    }
+
+}
+
+function getWindowHeight() {
+    var res = $(window).height();
+    if (navigator.userAgent.match(/iPad;.*CPU.*OS 7_\d/i) && Modernizr.mq('screen and (orientation:landscape)')) {
+        res -= 20;
+    }
+    return res;
+}
+
+function isIE(version) {
+    if (IE === undefined || IE === null || IE === false) {
+        return false;
+    }
+    if (version === undefined) {
+        return true;
+    }
+    return IE <= version;
+
+}
+
+function quoteattr(s, preserveCR) {
+    preserveCR = preserveCR ? '&#13;' : '\n';
+    return ('' + s) /* Forces the conversion to string. */
+        .replace(/&/g, '&amp;') /* This MUST be the 1st replacement. */
+        .replace(/'/g, '&apos;') /* The 4 other predefined entities, required. */
+        .replace(/"/g, '&quot;')
+        .replace(/</g, '&lt;')
+        .replace(/>/g, '&gt;')
+        /*
+        You may add other replacements here for HTML only
+        (but it's not necessary).
+        Or for XML, only if the named entities are defined in its DTD.
+        */
+        .replace(/\r\n/g, preserveCR) /* Must be before the next replacement. */
+        .replace(/[\r\n]/g, preserveCR);
+    ;
+}
+
+function _guid() {
+    function s4() {
+        return Math.floor((1 + Math.random()) * 0x10000)
+            .toString(16)
+            .substring(1);
+    }
+
+    return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
+        s4() + '-' + s4() + s4() + s4();
+}
\ No newline at end of file
diff --git a/CubeIT/js/currency.js b/CubeIT/js/currency.js
new file mode 100644 (file)
index 0000000..3228c13
--- /dev/null
@@ -0,0 +1,88 @@
+registerLoader(load_currency, true);
+function load_currency() {
+
+       if (window.currencyFormat !== undefined) {
+               return;
+       }
+       // 12,345.67 €
+       var c = Application.currencyFormat;
+       currencyFormat = {};
+       currencyFormat.original = c;
+       currencyFormat.decimalSeparator = ',';
+       currencyFormat.thousandSeparator = ' ';
+       currencyFormat.symbol = '';
+       currencyFormat.symbolPosition = 'none';
+       currencyFormat.precision = 2;
+       var len = c.length;
+       var l;
+
+       var pos = [0];
+       for (var i = 1; i <= 7; i++) {
+               pos[i] = c.indexOf("" + i);
+       }
+       /// Séparateur des milliers
+       l = pos[3] - pos[2] - 1;
+       if (l > 0) {
+               currencyFormat.thousandSeparator = c.substr(pos[2] + 1, l);
+       }
+
+       /// Séparateur décimal
+       l = pos[6] - pos[7] - 1;
+       if (l > 0) {
+               currencyFormat.decimalSeparator = c.substr(pos[6] + 1, l);
+       }
+
+       /// Position du symbole
+
+       if (pos[1] > 0) {
+               currencyFormat.symbolPosition = 'before';
+               currencyFormat.symbol = c.substr(0, pos[1]);
+       } else if (pos[7] < len - 1) {
+               l = len - 1 - pos[7];
+               currencyFormat.symbolPosition = 'after';
+               currencyFormat.symbol = c.substr(pos[7] + 1, l);
+       }
+}
+
+function formatCurrency(value) {
+       load_currency();
+       var res = '';
+
+       var sign = value < 0 ? '-' : '';
+       var abs = Math.abs(value);
+       var rounded = Math.floor(abs);
+       var pmulti = Math.pow(10, currencyFormat.precision);
+       var floatPart = Math.round((abs - rounded) * pmulti);
+       if (floatPart == pmulti) {
+               rounded += 1;
+               floatPart = 0;
+       }
+       floatPart = floatPart.toString();
+
+       if (floatPart.length < currencyFormat.precision) {
+               l = currencyFormat.precision - floatPart.length;
+               for (var i = 0; i < l; i++) {
+                       floatPart = '0' + floatPart;
+               }
+       }
+
+       var intPart = '';
+       var j = 0;
+       var roundeds = "" + rounded;
+
+       for (var i = roundeds.length; i > 0; i--) {
+               if (j % 3 == 0 && j > 0) {
+                       intPart = currencyFormat.thousandSeparator + intPart;
+               }
+               intPart = "" + roundeds.substr(i - 1, 1) + intPart;
+               j++;
+       }
+       res = sign + intPart + currencyFormat.decimalSeparator + floatPart;
+       if (currencyFormat.symbolPosition === 'after') {
+               res += currencyFormat.symbol;
+       } else if (currencyFormat.symbolPosition === 'before') {
+               res = currencyFormat.symbol + res;
+       }
+       return res;
+
+}
diff --git a/CubeIT/js/datepicker.js b/CubeIT/js/datepicker.js
new file mode 100644 (file)
index 0000000..f776601
--- /dev/null
@@ -0,0 +1,7 @@
+registerLoader(load_datepicker);
+
+function load_datepicker() {
+       $('.date-pick').each(function() {
+               $(this).datePicker({startDate: '1970-01-01', clickInput: true});
+       });
+}
\ No newline at end of file
diff --git a/CubeIT/js/easyzoom/easyzoom.js b/CubeIT/js/easyzoom/easyzoom.js
new file mode 100644 (file)
index 0000000..c355dcd
--- /dev/null
@@ -0,0 +1,316 @@
+(function ($) {
+
+    'use strict';
+
+    var dw, dh, rw, rh, lx, ly;
+
+    var defaults = {
+
+        // The text to display within the notice box while loading the zoom image.
+        loadingNotice: 'Loading image',
+
+        // The text to display within the notice box if an error occurs loading the zoom image.
+        errorNotice: 'The image could not be loaded',
+
+        // The time (in milliseconds) to display the error notice.
+        errorDuration: 2500,
+
+        // Prevent clicks on the zoom image link.
+        preventClicks: true,
+
+        // Callback function to execute when the flyout is displayed.
+        onShow: $.noop,
+
+        // Callback function to execute when the flyout is removed.
+        onHide: $.noop,
+
+        // Callback function to execute when the cursor is moved while over the image.
+        onMove: $.noop
+
+    };
+
+    /**
+     * EasyZoom
+     * @constructor
+     * @param {Object} target
+     * @param {Object} options (Optional)
+     */
+    function EasyZoom(target, options) {
+        this.$target = $(target);
+        this.opts = $.extend({}, defaults, options, this.$target.data());
+
+        this.isOpen === undefined && this._init();
+    }
+
+    /**
+     * Init
+     * @private
+     */
+    EasyZoom.prototype._init = function () {
+        this.$link = this.$target.find('a');
+        this.$image = this.$target.find('img');
+
+        this.$flyout = $('<div class="easyzoom-flyout" />');
+        this.$notice = $('<div class="easyzoom-notice" />');
+
+        this.$target.on({
+            'mousemove.easyzoom touchmove.easyzoom': $.proxy(this._onMove, this),
+            'mouseleave.easyzoom touchend.easyzoom': $.proxy(this._onLeave, this),
+            'mouseenter.easyzoom touchstart.easyzoom': $.proxy(this._onEnter, this)
+        });
+
+        this.opts.preventClicks && this.$target.on('click.easyzoom', function (e) {
+            e.preventDefault();
+        });
+    };
+
+    /**
+     * Show
+     * @param {MouseEvent|TouchEvent} e
+     * @param {Boolean} testMouseOver (Optional)
+     */
+    EasyZoom.prototype.show = function (e, testMouseOver) {
+        var w1, h1, w2, h2;
+        var self = this;
+
+        if (!this.isReady) {
+            return this._loadImage(this.$link.attr('href'), function () {
+                if (self.isMouseOver || !testMouseOver) {
+                    self.show(e);
+                }
+            });
+        }
+
+        this.$target.append(this.$flyout);
+
+        w1 = this.$target.width();
+        h1 = this.$target.height();
+
+        w2 = this.$flyout.width();
+        h2 = this.$flyout.height();
+
+        dw = this.$zoom.width() - w2;
+        dh = this.$zoom.height() - h2;
+
+        rw = dw / w1;
+        rh = dh / h1;
+
+        this.isOpen = true;
+
+        this.opts.onShow.call(this);
+
+        e && this._move(e);
+    };
+
+    /**
+     * On enter
+     * @private
+     * @param {Event} e
+     */
+    EasyZoom.prototype._onEnter = function (e) {
+        var touches = e.originalEvent.touches;
+
+        this.isMouseOver = true;
+
+        if (!touches || touches.length == 1) {
+            e.preventDefault();
+            this.show(e, true);
+        }
+    };
+
+    /**
+     * On move
+     * @private
+     * @param {Event} e
+     */
+    EasyZoom.prototype._onMove = function (e) {
+        if (!this.isOpen) return;
+
+        e.preventDefault();
+        this._move(e);
+    };
+
+    /**
+     * On leave
+     * @private
+     */
+    EasyZoom.prototype._onLeave = function () {
+        this.isMouseOver = false;
+        this.isOpen && this.hide();
+    };
+
+    /**
+     * On load
+     * @private
+     * @param {Event} e
+     */
+    EasyZoom.prototype._onLoad = function (e) {
+        // IE may fire a load event even on error so test the image dimensions
+        if (!e.target.width) return;
+
+        this.isReady = true;
+
+        this.$notice.detach();
+        this.$flyout.html(this.$zoom);
+        this.$target.removeClass('is-loading').addClass('is-ready');
+
+        e.data.call && e.data();
+    };
+
+    /**
+     * On error
+     * @private
+     */
+    EasyZoom.prototype._onError = function () {
+        var self = this;
+
+        this.$notice.text(this.opts.errorNotice);
+        this.$target.removeClass('is-loading').addClass('is-error');
+
+        this.detachNotice = setTimeout(function () {
+            self.$notice.detach();
+            self.detachNotice = null;
+        }, this.opts.errorDuration);
+    };
+
+    /**
+     * Load image
+     * @private
+     * @param {String} href
+     * @param {Function} callback
+     */
+    EasyZoom.prototype._loadImage = function (href, callback) {
+        var zoom = new Image;
+
+        this.$target
+            .addClass('is-loading')
+            .append(this.$notice.text(this.opts.loadingNotice));
+
+        this.$zoom = $(zoom)
+            .on('error', $.proxy(this._onError, this))
+            .on('load', callback, $.proxy(this._onLoad, this));
+
+        zoom.style.position = 'absolute';
+        zoom.src = href;
+    };
+
+    /**
+     * Move
+     * @private
+     * @param {Event} e
+     */
+    EasyZoom.prototype._move = function (e) {
+
+        if (e.type.indexOf('touch') === 0) {
+            var touchlist = e.touches || e.originalEvent.touches;
+            lx = touchlist[0].pageX;
+            ly = touchlist[0].pageY;
+        } else {
+            lx = e.pageX || lx;
+            ly = e.pageY || ly;
+        }
+
+        var offset = this.$target.offset();
+        var pt = ly - offset.top;
+        var pl = lx - offset.left;
+        var xt = Math.ceil(pt * rh);
+        var xl = Math.ceil(pl * rw);
+
+        // Close if outside
+        if (xl < 0 || xt < 0 || xl > dw || xt > dh) {
+            this.hide();
+        } else {
+            var top = xt * -1;
+            var left = xl * -1;
+
+            this.$zoom.css({
+                top: top,
+                left: left
+            });
+
+            this.opts.onMove.call(this, top, left);
+        }
+
+    };
+
+    /**
+     * Hide
+     */
+    EasyZoom.prototype.hide = function () {
+        if (!this.isOpen) return;
+
+        this.$flyout.detach();
+        this.isOpen = false;
+
+        this.opts.onHide.call(this);
+    };
+
+    /**
+     * Swap
+     * @param {String} standardSrc
+     * @param {String} zoomHref
+     * @param {String|Array} srcset (Optional)
+     */
+    EasyZoom.prototype.swap = function (standardSrc, zoomHref, srcset) {
+        this.hide();
+        this.isReady = false;
+
+        this.detachNotice && clearTimeout(this.detachNotice);
+
+        this.$notice.parent().length && this.$notice.detach();
+
+        this.$target.removeClass('is-loading is-ready is-error');
+
+        this.$image.attr({
+            src: standardSrc,
+            srcset: $.isArray(srcset) ? srcset.join() : srcset
+        });
+
+        this.$link.attr('href', zoomHref);
+    };
+
+    /**
+     * Teardown
+     */
+    EasyZoom.prototype.teardown = function () {
+        this.hide();
+
+        this.$target
+            .off('.easyzoom')
+            .removeClass('is-loading is-ready is-error');
+
+        this.detachNotice && clearTimeout(this.detachNotice);
+
+        delete this.$link;
+        delete this.$zoom;
+        delete this.$image;
+        delete this.$notice;
+        delete this.$flyout;
+
+        delete this.isOpen;
+        delete this.isReady;
+    };
+
+    // jQuery plugin wrapper
+    $.fn.easyZoom = function (options) {
+        return this.each(function () {
+            var api = $.data(this, 'easyZoom');
+
+            if (!api) {
+                $.data(this, 'easyZoom', new EasyZoom(this, options));
+            } else if (api.isOpen === undefined) {
+                api._init();
+            }
+        });
+    };
+
+    // AMD and CommonJS module compatibility
+    if (typeof define === 'function' && define.amd) {
+        define(function () {
+            return EasyZoom;
+        });
+    } else if (typeof module !== 'undefined' && module.exports) {
+        module.exports = EasyZoom;
+    }
+
+})(jQuery);
diff --git a/CubeIT/js/easyzoom/easyzoom.less b/CubeIT/js/easyzoom/easyzoom.less
new file mode 100644 (file)
index 0000000..d98ab72
--- /dev/null
@@ -0,0 +1,69 @@
+/**
+ * EasyZoom core styles
+ */
+.easyzoom {
+       position: relative;
+
+       /* 'Shrink-wrap' the element */
+       display: inline-block;
+       *display: inline;
+       *zoom: 1;
+}
+
+.easyzoom img {
+       vertical-align: bottom;
+}
+
+.easyzoom.is-loading img {
+       cursor: progress;
+}
+
+.easyzoom.is-ready img {
+       cursor: crosshair;
+}
+
+.easyzoom.is-error img {
+       cursor: not-allowed;
+}
+
+.easyzoom-notice {
+       position: absolute;
+       top: 50%;
+       left: 50%;
+       z-index: 150;
+       width: 10em;
+       margin: -1em 0 0 -5em;
+       line-height: 2em;
+       text-align: center;
+       background: #FFF;
+       box-shadow: 0 0 10px #888;
+}
+
+.easyzoom-flyout {
+       position: absolute;
+       z-index: 100;
+       overflow: hidden;
+       background: #FFF;
+
+       img {
+               display: inline-block;
+       }
+}
+
+/**
+ * EasyZoom layout variations
+ */
+.easyzoom--overlay .easyzoom-flyout {
+       top: 0;
+       left: 0;
+       width: 100%;
+       height: 100%;
+}
+
+.easyzoom--adjacent .easyzoom-flyout {
+       top: 0;
+       left: 100%;
+       width: 100%;
+       height: 100%;
+       margin-left: 20px;
+}
diff --git a/CubeIT/js/emptyfield.js b/CubeIT/js/emptyfield.js
new file mode 100644 (file)
index 0000000..34a03de
--- /dev/null
@@ -0,0 +1,24 @@
+registerLoader(load_emptyfield);
+
+function load_emptyfield() {
+       // Vide un champ si au clic
+       var s = 'input.empty_field,input.empty-field,textarea.empty-field,textarea.empty_field';
+       $(s).each(function() {
+               if ($(this).attr('orig')) {
+                       return;
+               }
+               $(this).attr('orig', $(this).attr('value'));
+       });
+
+       $(s).focusin(function() {
+               if ($(this).val() == $(this).attr('orig')) {
+                       $(this).val('');
+               }
+       });
+
+       $(s).focusout(function() {
+               if ($(this).val() == '') {
+                       $(this).val($(this).attr('orig'));
+               }
+       });
+}
\ No newline at end of file
diff --git a/CubeIT/js/end.js b/CubeIT/js/end.js
new file mode 100644 (file)
index 0000000..1505ac6
--- /dev/null
@@ -0,0 +1,22 @@
+registerLoader(load_end, true);
+
+function load_end() {
+       // Cancel drop of file in the window
+       $(document.body).on('drop', function(e) {
+               e.preventDefault();
+               return false;
+       });
+
+       $(document.body).on('dragover dragenter drop', function(e) {
+               e.preventDefault();
+               var ev = e;
+               if (e.dataTransfer == undefined && e.originalEvent != undefined) {
+                       ev = e.originalEvent;
+               }
+
+               if (ev.dataTransfer != undefined && ev.dataTransfer) {
+                       ev.dataTransfer.dropEffect = 'none';
+               }
+               return false;
+       });
+}
\ No newline at end of file
diff --git a/CubeIT/js/farbtastic.js b/CubeIT/js/farbtastic.js
new file mode 100644 (file)
index 0000000..b5e7082
--- /dev/null
@@ -0,0 +1,7 @@
+registerLoader(load_farbtastic);
+
+function load_farbtastic() {
+       $(".farbtastic_field").each(function() {
+               $('#' + $(this).attr('rel')).farbtastic('#' + $(this).attr('id'));
+       });
+}
\ No newline at end of file
diff --git a/CubeIT/js/fastclick.js b/CubeIT/js/fastclick.js
new file mode 100644 (file)
index 0000000..b238d77
--- /dev/null
@@ -0,0 +1,5 @@
+if (Modernizr.touch) {
+    $.getScript('//cdnjs.cloudflare.com/ajax/libs/fastclick/1.0.6/fastclick.min.js', function () {
+        FastClick.attach(document.body);
+    });
+}
\ No newline at end of file
diff --git a/CubeIT/js/fatloader.js b/CubeIT/js/fatloader.js
new file mode 100644 (file)
index 0000000..03a29e0
--- /dev/null
@@ -0,0 +1,98 @@
+(function($) {
+       function JQfatloader(element) {
+               this.element = element;
+               this.init();
+       }
+
+       JQfatloader.prototype = {
+               init: function() {
+                       var $this = this;
+                       this.size = 30;
+                       if (this.element.data('size')) {
+                               this.size = this.element.data('size');
+                       }
+
+
+                       this.width = this.size;
+                       this.height = this.size;
+                       this.lineWidth = this.element.data('linewidth');
+                       if (!this.lineWidth) {
+                               this.lineWidth = Math.round(this.size / 4);
+                       }
+                       this.shadow = this.element.data('shadow') == 1;
+
+                       this.radius = (this.size - this.lineWidth) / 2;
+
+                       if (this.element.find('canvas').length == 0) {
+                               this.element.append('<canvas width="' + this.width + '" height="' + this.height + '"></canvas>');
+                       }
+                       this.loadingWheelProgress = 0;
+                       this.fps = 60;
+                       this.deg2rad = Math.PI / 180;
+
+                       this.element.css({width: this.width, height: this.height});
+                       window.requestAnimationFrame(function() {
+                               $this.step();
+                       });
+
+               },
+               step: function() {
+                       if (!Modernizr.canvas) {
+                               return;
+                       }
+                       var $this = this;
+                       this.loadingWheelProgress += 7;
+                       this.loadingWheelProgress = this.loadingWheelProgress % 720;
+                       var canvas = this.element.find('canvas');
+                       canvas = canvas.get(0);
+                       var ctx = canvas.getContext("2d");
+                       // Clear the whole canvas
+                       ctx.clearRect(0, 0, canvas.width, canvas.height);
+
+                       // Apply a drop shadow
+                       if (this.shadow) {
+                               ctx.shadowOffsetX = 0;
+                               ctx.shadowOffsetY = 1;
+                               ctx.shadowBlur = 1;
+                               ctx.shadowColor = "rgba(0,0,0,0.65)";
+                       }
+                       // Set stroke style
+                       ctx.strokeStyle = '#ffffff';
+                       ctx.lineWidth = this.lineWidth;
+                       ctx.lineCap = 'butt';
+                       ctx.lineJoin = 'mitter';
+                       // Draw the arc (x,y,radius,start angle, end angle, reverse)
+                       var end, start;
+                       if (this.loadingWheelProgress <= 360) {
+                               end = -90;
+                               start = -90 + this.loadingWheelProgress;
+                       } else {
+                               var angle = this.loadingWheelProgress - 360;
+                               start = -90;
+                               end = -90 + angle;
+                       }
+                       start *= this.deg2rad;
+                       end *= this.deg2rad;
+                       ctx.beginPath();
+                       ctx.arc(this.width / 2, this.height / 2, this.radius, start, end, true)
+                       // Apply the stroke
+                       ctx.stroke();
+                       window.requestAnimationFrame(function() {
+                               $this.step();
+                       });
+               }
+       };
+
+       jQuery.fn.fatloader = function() {
+               return this.each(function() {
+                       var $this = $(this);
+                       $(this).data('fatloader', new JQfatloader($this));
+               })
+       };
+})(jQuery);
+
+registerLoader(load_fatloader);
+
+function load_fatloader() {
+       $(".fatloader").fatloader();
+}
\ No newline at end of file
diff --git a/CubeIT/js/fileManager.js b/CubeIT/js/fileManager.js
new file mode 100644 (file)
index 0000000..673ed7a
--- /dev/null
@@ -0,0 +1,396 @@
+registerLoader(load_filemanager);
+registerLoader(load_filemanager_once, true);
+
+var fmDelta = '';
+
+function load_filemanager_once() {
+    (function f() {
+        if (fmDelta != '') {
+            $.scrollTo(fmDelta);
+        }
+        requestAnimationFrame(f);
+    })();
+}
+
+function checkMouseFM(e) {
+    var y = e.pageY - $(document).scrollTop();
+    var move = 20;
+    var sensibility = 50;
+    if (y < sensibility) {
+        fmDelta = '-=6px';
+    } else if (y > getWindowHeight() - sensibility) {
+        fmDelta = '+=6px';
+    } else {
+        fmDelta = '';
+    }
+}
+
+function load_filemanager() {
+    $(".cubeit-file-manager").FileManager();
+
+    if ($('.cubeit-file-list').length > 0) {
+        try {
+            $('.cubeit-file-list').sortable('destroy');
+        } catch (err) {
+
+        }
+
+        var interval;
+        $('.cubeit-file-list').sortable({
+            items: "li:not(.placeholder)",
+            placeholder: 'sortable-placeholder',
+            forcePlaceholderSize: true,
+            scroll: false,
+            start: function (e, ui) {
+                fmDelta = '';
+                $(window).on('mousemove', checkMouseFM);
+            },
+            stop: function (e, ui) {
+                $(window).off('mousemove', checkMouseFM);
+                fmDelta = '';
+            }
+        });
+    }
+
+    $(".cubeit-filemanager-legend").each(function () {
+        var m = $(this).find('.cubeit-file-list li:eq(0)').parent();
+        var w = $(m).width();
+        w -= $(this).find('.icon').width();
+        w -= 30;
+        //$(this).find('.additional textarea').css('width', w);
+    });
+}
+
+(function ($) {
+    function FileManager(fm) {
+        if (!Modernizr.inputfile) {
+            fm.children().not('.cubeit-file-manager-nofile').hide();
+            return;
+        } else {
+            fm.children('.cubeit-file-manager-nofile').hide();
+        }
+
+        this.$fm = fm;
+        this.fm = fm.get(0);
+        this.files = [];
+        this.index = 0;
+        this.query = '';
+        this.boundary = '------multipartformboundary' + (new Date).getTime();
+        this.dashdash = '--';
+        this.crlf = "\r\n";
+        this.filesContent = '';
+        this.uploading = false;
+        this.xhr = {};
+        this.progress = 0;
+        this.params = JSON.parse(base64.decode(fm.data('params')));
+        this.limit = this.params.maxitems > 0;
+        this.scrolltonew = this.params.scrolltonew;
+        this.advancedUpload = !(window.FileReader == undefined && window.FormData == undefined);
+
+        this.init();
+    }
+
+    FileManager.prototype = {
+        init: function () {
+            if (this.$fm.parents('.toClone').length > 0) {
+                return;
+            }
+            if (this.$fm.data('filemanager') == '1') {
+                return;
+            }
+
+            var $this = this;
+
+            this.$fm.find('.dragMessage').show();
+
+            this.$fm.on('click', ".cancelUpload", function () {
+                if ($this.xhr != undefined && $this.xhr.abort === 'function') {
+                    $this.$fm.find('.new').remove();
+                    $this.xhr.abort();
+                }
+                return false;
+            });
+
+            this.fm.fileManager = this;
+
+            this.$fm.find('.cubeit-open-upload-form').click(function () {
+                var id = 'finput_' + Math.round(Math.random() * 100000);
+
+                var prefix = "";
+                if ($this.params.admin) {
+                    prefix = "/admin";
+                }
+
+                var form = $('<form class="ajax" action="' + prefix + '/ajax/upload/' + $this.$fm.data('params') + '/1" enctype="multipart/form-data" method="post"><input type="file" id="' + id + '" multiple="multiple" name="file[]" /></form>');
+                $('body').append(form);
+                $(form).css({
+                    opacity: 0,
+                    position: 'absolute',
+                    right: 0,
+                    bottom: 0,
+                    width: 1,
+                    height: 1,
+                    overflow: 'hidden'
+                });
+
+                $("#" + id).focus().change(function () {
+                    if ($this.advancedUpload) {
+                        $this._upload($(this).get(0).files);
+                    } else {
+                        $(form).submit();
+                    }
+                }).trigger('click');
+
+                return false;
+            });
+
+            $(this.fm).bind('dragstart', function (e) {
+                e.stopPropagation();
+                e.preventDefault();
+            });
+
+            $(this.fm).bind('dragenter', function (e) {
+                e.stopPropagation();
+                e.stopImmediatePropagation();
+                e.preventDefault();
+                $this.allowAllDrop(e);
+                $(this).addClass('drop');
+
+            });
+            $(this.fm).bind('dragover', function (e) {
+                e.stopPropagation();
+                e.stopImmediatePropagation();
+                e.preventDefault();
+                $this.allowAllDrop(e);
+                return false;
+            });
+            $(this.fm).bind('dragleave', function (e) {
+                e.preventDefault();
+                $(this).removeClass('drop');
+            });
+            $(this.fm).bind('drop', function (e) {
+                $this.onDrop(e);
+            });
+
+            $(this.fm).on('click', '.cubeit-file-list .del', function () {
+                $(this).parent().remove();
+                $this.update();
+            });
+
+            this.$fm.attr('data-filemanager', '1');
+
+            this.update();
+        },
+        allowAllDrop: function (e) {
+            var ev = e;
+            if (e.dataTransfer == undefined && e.originalEvent != undefined) {
+                ev = e.originalEvent;
+            }
+            if (ev.dataTransfer != undefined) {
+                ev.dataTransfer.dropEffect = 'copy';
+            }
+        },
+        onDrop: function (ev) {
+            ev.preventDefault();
+            ev.stopPropagation();
+
+            var e = ev.originalEvent;
+
+            if (this.uploading) {
+                return;
+            }
+            var $this = this;
+            this._upload(e.dataTransfer.files);
+        },
+        _upload: function (f) {
+            this.files = f;
+            this.index = 0;
+            this.filesContent = '';
+            $.ajax({
+                url: '/ajax/closeConnection',
+                async: false
+            });
+            if (window.FormData == undefined) {
+                this.handleFile();
+                return;
+            } else {
+                this.sendFormDatas();
+                return;
+            }
+        },
+        sendFormDatas: function () {
+            var formdata = new FormData();
+            for (var i = 0; i < this.files.length; i++) {
+                formdata.append('file[]', this.files[i]);
+            }
+            this.xhr = this.getXHR(false);
+            this.xhr.send(formdata);
+        },
+        handleFile: function () {
+            this.uploading = true;
+            var $this = this;
+            var file = this.files[this.index];
+
+            var reader = new FileReader();
+            reader.onload = function (e) {
+                $this.readerLoaded(e);
+            };
+            try {
+                reader.readAsBinaryString(file);
+            } catch (err) {
+                $this.uploading = false;
+            }
+        },
+        readerLoaded: function (e) {
+            var file = this.files[this.index];
+
+            var f = '';
+            /* Generate headers. */
+            f += 'Content-Disposition: form-data; name="file[]"';
+            if (file.name) {
+                f += '; filename="' + file.name + '"';
+            }
+            f += this.crlf;
+
+            f += 'Content-Type: ' + file.type;
+            f += this.crlf;
+            f += this.crlf;
+
+            /* Append binary data. */
+            f += e.target.result;
+            f += this.crlf;
+
+            /* Write boundary. */
+            f += this.dashdash;
+            f += this.boundary;
+            f += this.crlf;
+            this.filesContent += f;
+
+            this.index++;
+
+            if (this.index < this.files.length) {
+                return this.handleFile();
+            }
+            return this.sendFiles();
+        },
+        sendFiles: function () {
+            var $this = this;
+
+            /* Build RFC2388 string. */
+            this.query = '';
+
+            this.query += this.dashdash;
+            this.query += this.boundary;
+            this.query += this.crlf;
+
+            this.query += this.filesContent;
+
+            /* Mark end of the request. */
+            this.query += 'Content-Disposition: form-data; name="dummy"';
+            this.query += this.crlf;
+            this.query += this.crlf;
+            this.query += 'dummy';
+            this.query += this.crlf;
+            this.query += this.dashdash;
+            this.query += this.boundary;
+            this.query += this.dashdash;
+            this.query += this.crlf;
+
+            this.xhr = this.getXHR(true);
+            this.xhr.sendAsBinary(this.query);
+
+        },
+        getXHR: function (setContentType) {
+            var $this = this;
+            var xhr = new XMLHttpRequest();
+            xhr.open('POST', '/ajax/upload/' + $this.$fm.attr('data-params') + '/0');
+            if (setContentType) {
+                xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + this.boundary);
+            }
+            xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+            xhr.onload = function () {
+                $this.uploading = false;
+                $this.$fm.find('.cubeit-file-list li.new').remove();
+                successAjax(xhr.responseText);
+            };
+            if (xhr.upload) {
+                xhr.upload.onprogress = function (e) {
+                    var ratio = Math.round((e.loaded / e.total) * 10000) / 100;
+                    $this.updateUploadProgress(e.total, ratio);
+                };
+                $this.createProgressItem();
+            } else {
+                $this.createProgressItem();
+            }
+            return xhr;
+        },
+        createProgressItem: function () {
+            this.$fm.find('.cubeit-file-list').append('<li class="new"><div class="loadingtext">' + __('Chargement en cours') + '</div><a href="#" class="cancelUpload">' + __('Annuler') + '  »</a><div id="uploading" class="progress"><div class="bar"></div></div></li>');
+            if (this.scrolltonew) {
+                try {
+                    $.scrollTo(this.$fm.find('.cubeit-file-list li.new'), 750);
+                } catch (err) {
+
+                }
+            }
+        },
+        updateUploadProgress: function (total, percent) {
+            this.progress = percent;
+            this.$fm.find(".new .progress .bar").animate({width: this.progress + '%'}, 100, 'linear');
+        },
+        jqFormUploadProgress: function (event, position, total, percent) {
+            this.updateUploadProgress(total, percent);
+        },
+        setXHR: function (xhr) {
+            this.xhr = xhr;
+        },
+        update: function () {
+            var nb = this.$fm.find('.cubeit-file-list li:not(.placeholder)').length;
+            if (nb) {
+                this.$fm.find('.placeholder').hide();
+            } else {
+                this.$fm.find('.placeholder').show();
+            }
+
+            var full = '0';
+            if (this.limit && nb >= this.params.maxitems) {
+                full = '1';
+            }
+            this.$fm.attr('data-nb', nb).attr('data-full', full);
+            if (nb == 0) {
+                if (this.$fm.find('input.emptyfield').length == 0) {
+                    var empty = '<input type="hidden" class="emptyfield" name="' + this.params.name + '" value="" />';
+                    this.$fm.append(empty);
+                }
+            } else {
+                this.$fm.find('input.emptyfield').remove();
+            }
+        }
+    };
+
+    jQuery.fn.FileManager = function () {
+
+
+        var res = this.each(function () {
+            var $this = $(this);
+            if ($this.data('fm') != undefined) {
+                $this.data('fm').update();
+                return;
+            }
+            var fm = new FileManager($this);
+            $this.data('fm', fm);
+        });
+
+
+        if (!Modernizr.draganddrop || (window.FileReader == undefined && window.FormData == undefined)) {
+            $(".dragMessage").hide();
+        }
+
+        return res;
+    }
+})(jQuery);
+
+function getFileManagerById(id) {
+    return $("#" + id + '-element .cubeit-file-manager').data('fm');
+}
+
diff --git a/CubeIT/js/flashrightclick.js b/CubeIT/js/flashrightclick.js
new file mode 100644 (file)
index 0000000..08fe81d
--- /dev/null
@@ -0,0 +1,159 @@
+/**
+ *
+ * Copyright 2007-2009
+ *
+ * Paulius Uza
+ * http://www.uza.lt
+ *
+ * Dan Florio
+ * http://www.polygeek.com
+ *
+ * Arif Ali Saiyed
+ * http://arif-ali-saiyed.blogspot.com/
+ *
+ * Project website:
+ * http://code.google.com/p/custom-context-menu/
+ *
+ * --
+ * RightClick for Flash Player.
+ * Version 0.6.2
+ *
+ */
+
+var RightClick = {
+       /**
+        *  Constructor
+        */
+       init: function (objectID,containerID) {
+               this.FlashObjectID = objectID;
+               this.FlashContainerID = containerID;
+               this.Cache = this.FlashObjectID;
+               if(window.addEventListener){
+                        window.addEventListener("mousedown", this.onGeckoMouse(), true);
+               } else {
+                       document.getElementById(this.FlashContainerID).onmouseup = function() { document.getElementById(RightClick.FlashContainerID).releaseCapture(); }
+                       document.oncontextmenu = function(){ if(window.event.srcElement.id == RightClick.FlashObjectID) { return false; } else { RightClick.Cache = "nan"; }}
+                       document.getElementById(this.FlashContainerID).onmousedown = RightClick.onIEMouse;
+               }
+       },
+       /**
+        *  Disable the Right-Click event trap  and continue showing flash player menu
+        */
+       UnInit: function () {
+           //alert('Un init is called' );
+               if(window.RemoveEventListener){
+                       alert('Un init is called for GECKO' );
+                       window.addEventListener("mousedown", null, true);
+                       window.RemoveEventListener("mousedown",this.onGeckoMouse(),true);
+                        //w//indow.releaseEvents("mousedown");
+               } else {
+                       //alert('Un init is called for IE' );
+                       document.getElementById(this.FlashContainerID).onmouseup = "" ;
+                       document.oncontextmenu = "";
+                       document.getElementById(this.FlashContainerID).onmousedown = "";
+               }
+       },
+
+       /**
+        * GECKO / WEBKIT event overkill
+        * @param {Object} eventObject
+        */
+       killEvents: function(eventObject) {
+               if(eventObject) {
+                       if (eventObject.stopPropagation) eventObject.stopPropagation();
+                       if (eventObject.preventDefault) eventObject.preventDefault();
+                       if (eventObject.preventCapture) eventObject.preventCapture();
+                       if (eventObject.preventBubble) eventObject.preventBubble();
+               }
+       },
+       /**
+        * GECKO / WEBKIT call right click
+        * @param {Object} ev
+        */
+       onGeckoMouse: function(ev) {
+               return function(ev) {
+           if (ev.button != 0) {
+                       RightClick.killEvents(ev);
+                       if(ev.target.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID) {
+                       RightClick.call();
+                       }
+                       RightClick.Cache = ev.target.id;
+               }
+         }
+       },
+       /**
+        * IE call right click
+        * @param {Object} ev
+        */
+       onIEMouse: function() {
+               if (event.button > 1) {
+                       if(window.event.srcElement.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID) {
+                               RightClick.call();
+                       }
+                       document.getElementById(RightClick.FlashContainerID).setCapture();
+                       if(window.event.srcElement.id)
+                       RightClick.Cache = window.event.srcElement.id;
+               }
+       },
+       /**
+        * Main call to Flash External Interface
+        */
+       call: function() {
+               document.getElementById(this.FlashObjectID).rightClick();
+       }
+}
+
+function initWheel(id){
+       objectID=id;
+}
+
+function handleWheel(delta){
+       try{
+               document.getElementById(objectID).mouseWheel(delta);
+       }catch(e){
+
+       }
+}
+
+function wheel(event){
+        var delta = 0;
+        if (!event) /* For IE. */
+                event = window.event;
+        if (event.wheelDelta) { /* IE/Opera. */
+                delta = event.wheelDelta/120;
+                /** In Opera 9, delta differs in sign as compared to IE.
+                 */
+                if (window.opera)
+                        delta = -delta;
+        } else if (event.detail) { /** Mozilla case. */
+                /** In Mozilla, sign of delta is different than in IE.
+                 * Also, delta is multiple of 3.
+                 */
+                delta = -event.detail;
+        }
+        /** If delta is nonzero, handle it.
+         * Basically, delta is now positive if wheel was scrolled up,
+         * and negative, if wheel was scrolled down.
+         */
+        if (delta){
+               handleWheel(delta);
+               }
+        /** Prevent default actions caused by mouse wheel.
+         * That might be ugly, but we handle scrolls somehow
+         * anyway, so don't bother here..
+         */
+        if (event.preventDefault){
+               event.preventDefault();
+        }
+               event.returnValue = false;
+       }
+
+/** Initialization code.
+ * If you use your own event management code, change it as required.
+ */
+if (window.addEventListener){
+        /** DOMMouseScroll is for mozilla. */
+        window.addEventListener('DOMMouseScroll', wheel, false);
+    }
+/** IE/Opera. */
+window.onmousewheel = document.onmousewheel = wheel;
\ No newline at end of file
diff --git a/CubeIT/js/form.js b/CubeIT/js/form.js
new file mode 100644 (file)
index 0000000..061de62
--- /dev/null
@@ -0,0 +1,133 @@
+registerLoader(load_cubeit_form_once, true);
+registerLoader(load_cubeit_form, false);
+
+function load_cubeit_form_once() {
+    // Fermeture de la fenêtre
+    $(window).on('beforeunload', function (e) {
+        var block = false;
+        $('form.blockunload').each(function () {
+            if ($(this).data('change') == 1) {
+                block = true;
+            }
+        });
+        if (block) {
+            var msg = __("Certaines modifications n'ont pas été sauvegardées. Souhaitez-vous néanmoins quitter cette page ?");
+            if (window.event) {
+                window.event.returnValue = msg;
+            } else {
+                e.returnValue = msg;
+            }
+            return msg;
+        }
+    });
+
+    $(document).on('submit', 'form', function () {
+        $('form').data('change', 0);
+        $(this).find('.toClone').remove();
+        if ($(this).attr('data-submitmessage')) {
+            var a = $(this).find('a.submit');
+            a.off('click');
+            a.html($(this).attr('data-submitmessage'));
+        }
+        return true;
+    });
+    // Désactivation de la touche entrée pour les formulaires
+    $(document).on('keypress', 'form.disableEnterSubmit input, form.disableEnterSubmit select', function (e) {
+        var code = (e.keyCode ? e.keyCode : e.which);
+        if (code == 13) { //Enter keycode
+            return false;
+        }
+        return true;
+    });
+    // Formulaires en ajax a part ceux ayant pour classe .notajax
+    $(document).on('submit', 'form.ajax', function () {
+        return submitAjaxForm(this);
+    });
+    // Changement dans un formulaire
+    $(document).on('change', ':input:not([data-nochange])', function () {
+        $(this).parents("form").data('change', 1);
+    });
+
+    // Formulaire qui se soumet à chaque modification
+    $(document).on('change', "form.submitonchange :input", function () {
+        $(this).parents("form").submit();
+    });
+
+}
+
+function load_cubeit_form() {
+    $("form.blank").each(function () {
+        $(this).attr('target', '_blank');
+        $(this).removeClass('blank');
+    });
+    $("form").each(function () {
+        if ($(this).children('input[type="submit"]').length == 0) {
+            $(this).append('<input type="submit" class="hsubmit" />');
+        }
+    });
+
+
+}
+
+function successAjaxForm(data, status, xhr) {
+    var res = successAjax(data, status, xhr);
+    if (CLOSE_UPLOAD_POPUP_PENDING) {
+        closePopup();
+        CLOSE_UPLOAD_POPUP_PENDING = false;
+    }
+    return res;
+}
+
+function submitAjaxForm(form, url) {
+
+    var urlForm;
+    if (url !== undefined) {
+        urlForm = url;
+    } else {
+        urlForm = $(form).attr('action');
+    }
+    var async = true;
+    if ($(form).attr('data-sync')) {
+        async = false;
+    }
+
+    var options = {
+        cache: false,
+        url: urlForm,
+        success: successAjaxForm,
+        async: async
+    };
+    var immediateClose = false;
+    if ($(form).attr('data-fm-id') != undefined) {
+        var fm = getFileManagerById($(form).data('fm-id'));
+        options.uploadProgress = $.proxy(fm.jqFormUploadProgress, fm);
+        options.beforeSend = function (event, files, index, xhr, handler, callBack) {
+            $.ajax({
+                async: false,
+                url: '/ajax/closeConnection'
+            });
+            if (callBack != undefined) {
+                callBack();
+            }
+        };
+        $(form).ajaxSubmit(options);
+        var xhr = $(form).data('jqxhr');
+        fm.setXHR(xhr);
+        if (xhr.upload) {
+            fm.createProgressItem();
+            immediateClose = true;
+        } else {
+            CLOSE_UPLOAD_POPUP_PENDING = true;
+        }
+
+    } else {
+        $(form).ajaxSubmit(options);
+    }
+
+    if (immediateClose) {
+        closePopup();
+    } else {
+        displayLoader($(form).data('loader'));
+    }
+    return false;
+}
diff --git a/CubeIT/js/googleCalendar.js b/CubeIT/js/googleCalendar.js
new file mode 100644 (file)
index 0000000..26d09f2
--- /dev/null
@@ -0,0 +1,79 @@
+registerLoader(load_googlecalendar);
+
+function load_googlecalendar() {
+       $(".formGoogleCalendar").each(function() {
+               $(this).formGoogleCalendar();
+       });
+}
+
+(function($) {
+       $.fn.extend({
+               formGoogleCalendar: function() {
+
+                       $this = this;
+                       if (this.length == 0) {
+                               return;
+                       }
+
+                       $($this).find(".when-ad").change(function() {
+                               $this.allDay(this.checked);
+                       });
+
+                       $($this).find(".when-repeat").change(function() {
+                               $this.changeRepeat($(this).val());
+                       });
+
+                       $($this).find(".hr-ends").change(function() {
+                               $this.changeEnd($(this).val());
+                       });
+
+                       $this.initFormGoogleCalendar();
+               },
+               initFormGoogleCalendar: function() {
+                       $($this).find(".when-ad").each(function() {
+                               $this.allDay(this.checked);
+                       });
+
+                       $($this).find(".when-repeat").each(function() {
+                               $this.changeRepeat($(this).val());
+                       });
+
+                       $($this).find(".hr-ends").each(function() {
+                               if (this.checked) {
+                                       $this.changeEnd($(this).val());
+                               }
+                       });
+               },
+               allDay: function(v) {
+                       if (v == true) {
+                               $($this).find(".when-time").hide();
+                       } else {
+                               $($this).find(".when-time").show();
+                       }
+               },
+               changeRepeat: function(v) {
+                       if (v == 'no') {
+                               $($this).find('.repeat-every').hide();
+                               $($this).find('.repeat-on-week').hide();
+                               $($this).find('.repeat-range').hide();
+                       } else if (v == 'WEEKLY') {
+                               $($this).find('.repeat-every').show();
+                               $($this).find('.repeat-on-week').show();
+                               $($this).find('.repeat-range').show();
+                       } else {
+                               $($this).find('.repeat-every').show();
+                               $($this).find('.repeat-on-week').hide();
+                               $($this).find('.repeat-range').show();
+                       }
+                       $(".repeat-every-span").hide();
+                       $(".repeat-every-" + v).show();
+               },
+               changeEnd: function(v) {
+                       if (v == '0') {
+                               $($this).find('.hr-ends-date').hide();
+                       } else {
+                               $($this).find('.hr-ends-date').show();
+                       }
+               }
+       });
+})(jQuery);
\ No newline at end of file
diff --git a/CubeIT/js/googleMaps.js b/CubeIT/js/googleMaps.js
new file mode 100644 (file)
index 0000000..5835cff
--- /dev/null
@@ -0,0 +1,156 @@
+(function ($) {
+    function JQGoogleMaps(element) {
+        this.element = element;
+        this.init();
+    }
+
+    JQGoogleMaps.prototype = {
+        init: function () {
+            var $this = this;
+            this.id = this.element.data('id');
+            this.styles = this.element.data('styles');
+            this.data = this.element.data('mapsdata');
+
+            this.initMap();
+        },
+
+        initMap: function () {
+            var $this = this;
+            var mapSettings = this.data.settings;
+            var centre = mapSettings.centre;
+            var coder = new google.maps.Geocoder();
+            coder.geocode({
+                address: centre.adresse + ' - ' + centre.ville,
+                region: centre.pays
+            }, function (res) {
+                var result = res[0];
+                var center = result.geometry.location;
+
+                var mapOptions = {
+                    scrollwheel: false,
+                    zoom: parseInt(mapSettings.zoom),
+                    center: center,
+                    mapTypeControlOptions: {
+                        mapTypeIds: [google.maps.MapTypeId.ROADMAP]
+                    },
+                    styles: $this.styles,
+                    mapTypeId: google.maps.MapTypeId.ROADMAP
+                };
+
+                $this.map = new google.maps.Map(document.getElementById($this.element.attr('id')), mapOptions);
+
+
+                $this.markerRefs = new Array;
+                var markers = $this.data.markers;
+                if (markers === undefined) {
+                    markers = new Array;
+                }
+                for (var i = 0; i < markers.length; i++) {
+                    m = markers[i];
+                    $this.addMarker(m);
+                }
+
+            });
+        },
+
+        addMarker: function (m) {
+            var $this = this;
+            if (m.latitude == 0 && m.longitude == 0) {
+                var coder = new google.maps.Geocoder();
+                coder.geocode({
+                    address: m.adresse + ' - ' + m.ville,
+                    region: m.pays
+                }, function (res) {
+                    $this.markerGeocodeCallback(m, res[0].geometry.location);
+                });
+            } else {
+                var location = new google.maps.LatLng(m.latitude, m.longitude)
+                this.markerGeocodeCallback(m, location);
+            }
+        },
+
+        markerGeocodeCallback: function (m, pos) {
+            var $this = this;
+            var marker = new google.maps.Marker({
+                icon: '/' + m.icon[0],
+                position: pos,
+                map: $this.map
+            });
+
+            var content = $this.makeInfoContent(m);
+            marker.infos = new google.maps.InfoWindow({
+                content: content
+            });
+            $this.markerRefs.push(marker);
+            google.maps.event.addListener(marker, 'click', function () {
+                for (var i = 0; i < $this.markerRefs.length; i++) {
+                    var ma = $this.markerRefs[i];
+                    ma.infos.close();
+                }
+                this.infos.open($this.map, this);
+            });
+
+        },
+        makeInfoContent: function (c) {
+            var res = '';
+            if (undefined !== c.tooltip) {
+                res = c.tooltip;
+            } else {
+                if (c.nom != '') {
+                    res += '<strong>' + c.nom + '</strong><br />';
+                }
+                if (c.adresse != '') {
+                    res += c.adresse + '<br />';
+                }
+                if (c.code_postal) {
+                    res += c.code_postal + ' ';
+                }
+                if (c.ville != '') {
+                    res += c.ville + '<br />';
+                }
+                if (c.email != '' && undefined !== c.email) {
+                    res += '<a href="mailto:' + c.email + '">' + c.email + '</a>';
+                }
+            }
+            if (c.adresse && c.direction !== undefined && c.direction !== false) {
+                if (Modernizr.ios) {
+                    res += c.direction.replace("https://maps.google.com/", "maps://maps.apple.com/");
+                } else {
+                    res += c.direction;
+                }
+            }
+            return res;
+
+        }
+    };
+
+    jQuery.fn.googleMaps = function () {
+        return this.each(function () {
+            var $this = $(this);
+            if ($(this).data('googleMaps') === undefined) {
+                $(this).data('googleMaps', new JQGoogleMaps($this));
+            }
+        })
+    };
+})(jQuery);
+
+google_maps_inited = false;
+registerLoader(load_google_maps);
+
+function load_google_maps() {
+    google.maps.event.addDomListener(window, 'load', init_maps_once);
+    setTimeout(init_maps_once, 800);
+}
+
+function init_maps_once() {
+    if (google_maps_inited) {
+        return;
+    }
+
+    init_maps();
+}
+
+function init_maps() {
+    google_maps_inited = true;
+    $(".googlemaps-container").googleMaps();
+}
diff --git a/CubeIT/js/gsap/TimelineLite.js b/CubeIT/js/gsap/TimelineLite.js
new file mode 100644 (file)
index 0000000..042fb25
--- /dev/null
@@ -0,0 +1,571 @@
+/*!
+ * VERSION: beta 1.701
+ * DATE: 2013-01-16
+ * JavaScript (ActionScript 3 and 2 also available)
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ */
+       
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+
+       _gsDefine("TimelineLite", ["core.Animation","core.SimpleTimeline","TweenLite"], function(Animation, SimpleTimeline, TweenLite) {
+               
+               "use strict";
+               
+               var TimelineLite = function(vars) {
+                               SimpleTimeline.call(this, vars);
+                               this._labels = {};
+                               this.autoRemoveChildren = (this.vars.autoRemoveChildren == true);
+                               this.smoothChildTiming = (this.vars.smoothChildTiming == true);
+                               this._sortChildren = true;
+                               this._onUpdate = this.vars.onUpdate;
+                               var i = _paramProps.length,
+                                       j, a;
+                               while (--i > -1) {
+                                       if ((a = this.vars[_paramProps[i]])) {
+                                               j = a.length;
+                                               while (--j > -1) {
+                                                       if (a[j] === "{self}") {
+                                                               a = this.vars[_paramProps[i]] = a.concat(); //copy the array in case the user referenced the same array in multiple timelines/tweens (each {self} should be unique)
+                                                               a[j] = this;
+                                                       }
+                                               }
+                                       }
+                               }
+                               if (this.vars.tweens instanceof Array) {
+                                       this.insertMultiple(this.vars.tweens, 0, this.vars.align || "normal", this.vars.stagger || 0);
+                               }
+                       },
+                       _paramProps = ["onStartParams","onUpdateParams","onCompleteParams","onReverseCompleteParams","onRepeatParams"],
+                       _blankArray = [],
+                       _copy = function(vars) {
+                               var copy = {}, p;
+                               for (p in vars) {
+                                       copy[p] = vars[p];
+                               }
+                               return copy;
+                       },
+                       p = TimelineLite.prototype = new SimpleTimeline();
+
+               TimelineLite.version = 1.701;
+               p.constructor = TimelineLite;
+               p.kill()._gc = false;
+               
+               p.to = function(target, duration, vars, offsetOrLabel, baseTimeOrLabel) {
+                       return this.insert( new TweenLite(target, duration, vars), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+               
+               p.from = function(target, duration, vars, offsetOrLabel, baseTimeOrLabel) {
+                       return this.insert( TweenLite.from(target, duration, vars), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+               
+               p.fromTo = function(target, duration, fromVars, toVars, offsetOrLabel, baseTimeOrLabel) {
+                       return this.insert( TweenLite.fromTo(target, duration, fromVars, toVars), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+               
+               p.staggerTo = function(targets, duration, vars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+                       var tl = new TimelineLite({onComplete:onCompleteAll, onCompleteParams:onCompleteAllParams, onCompleteScope:onCompleteAllScope});
+                       stagger = stagger || 0;
+                       for (var i = 0; i < targets.length; i++) {
+                               if (vars.startAt != null) {
+                                       vars.startAt = _copy(vars.startAt);
+                               }
+                               tl.insert( new TweenLite(targets[i], duration, _copy(vars)), i * stagger);
+                       }
+                       return this.insert(tl, this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+               
+               p.staggerFrom = function(targets, duration, vars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+                       if (vars.immediateRender == null) {
+                               vars.immediateRender = true;
+                       }
+                       vars.runBackwards = true;
+                       return this.staggerTo(targets, duration, vars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope);
+               };
+               
+               p.staggerFromTo = function(targets, duration, fromVars, toVars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+                       toVars.startAt = fromVars;
+                       if (fromVars.immediateRender) {
+                               toVars.immediateRender = true;
+                       }
+                       return this.staggerTo(targets, duration, toVars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope);
+               };
+               
+               p.call = function(callback, params, scope, offsetOrLabel, baseTimeOrLabel) {
+                       return this.insert( TweenLite.delayedCall(0, callback, params, scope), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+               
+               p.set = function(target, vars, offsetOrLabel, baseTimeOrLabel) {
+                       vars.immediateRender = false;
+                       return this.insert( new TweenLite(target, 0, vars), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+               
+               TimelineLite.exportRoot = function(vars, ignoreDelayedCalls) {
+                       vars = vars || {};
+                       if (vars.smoothChildTiming == null) {
+                               vars.smoothChildTiming = true;
+                       }
+                       var tl = new TimelineLite(vars),
+                               root = tl._timeline;
+                       if (ignoreDelayedCalls == null) {
+                               ignoreDelayedCalls = true;
+                       }
+                       root._remove(tl, true);
+                       tl._startTime = 0;
+                       tl._rawPrevTime = tl._time = tl._totalTime = root._time;
+                       var tween = root._first, next;
+                       while (tween) {
+                               next = tween._next;
+                               if (!ignoreDelayedCalls || !(tween instanceof TweenLite && tween.target === tween.vars.onComplete)) {
+                                       tl.insert(tween, tween._startTime - tween._delay);
+                               }
+                               tween = next;
+                       }
+                       root.insert(tl, 0);
+                       return tl;
+               };
+               
+               p.insert = function(value, timeOrLabel) {
+                       if (value instanceof Animation) {
+                               //continue...
+                       } else if (value instanceof Array) {
+                               return this.insertMultiple(value, timeOrLabel);
+                       } else if (typeof(value) === "string") {
+                               return this.addLabel(value, this._parseTimeOrLabel(timeOrLabel || 0, 0, true));
+                       } else if (typeof(value) === "function") {
+                               value = TweenLite.delayedCall(0, value);
+                       } else {
+                               throw ("ERROR: Cannot insert() " + value + " into the TimelineLite/Max because it is neither a tween, timeline, function, nor a String.");
+                               return this;
+                       }
+                       
+                       SimpleTimeline.prototype.insert.call(this, value, this._parseTimeOrLabel(timeOrLabel || 0, 0, true, value));
+                       
+                       //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly.  
+                       if (this._gc) if (!this._paused) if (this._time === this._duration) if (this._time < this.duration()) {
+                               //in case any of the anscestors had completed but should now be enabled...
+                               var tl = this;
+                               while (tl._gc && tl._timeline) {
+                                       if (tl._timeline.smoothChildTiming) {
+                                               tl.totalTime(tl._totalTime, true); //also enables them
+                                       } else {
+                                               tl._enabled(true, false);
+                                       }
+                                       tl = tl._timeline;
+                               }
+                       }
+                       return this;
+               };
+               
+               p.remove = function(value) {
+                       if (value instanceof Animation) {
+                               return this._remove(value, false);
+                       } else if (value instanceof Array) {
+                               var i = value.length;
+                               while (--i > -1) {
+                                       this.remove(value[i]);
+                               }
+                               return this;
+                       } else if (typeof(value) === "string") {
+                               return this.removeLabel(value);
+                       }
+                       return this.kill(null, value);
+               };
+               
+               p.append = function(value, offsetOrLabel) {
+                       return this.insert(value, this._parseTimeOrLabel(null, offsetOrLabel, true, value));
+               };
+               
+               p.insertMultiple = function(tweens, timeOrLabel, align, stagger) {
+                       align = align || "normal";
+                       stagger = stagger || 0;
+                       var i, tween, curTime = this._parseTimeOrLabel(timeOrLabel || 0, 0, true, tweens), l = tweens.length;
+                       for (i = 0; i < l; i++) {
+                               if ((tween = tweens[i]) instanceof Array) {
+                                       tween = new TimelineLite({tweens:tween});
+                               }
+                               this.insert(tween, curTime);
+                               if (typeof(tween) === "string" || typeof(tween) === "function") {
+                                       //do nothing
+                               } else if (align === "sequence") {
+                                       curTime = tween._startTime + (tween.totalDuration() / tween._timeScale);
+                               } else if (align === "start") {
+                                       tween._startTime -= tween.delay();
+                               }
+                               curTime += stagger;
+                       }
+                       return this._uncache(true);
+               };
+               
+               p.appendMultiple = function(tweens, offsetOrLabel, align, stagger) {
+                       return this.insertMultiple(tweens, this._parseTimeOrLabel(null, offsetOrLabel, true, tweens), align, stagger);
+               };
+               
+               p.addLabel = function(label, time) {
+                       this._labels[label] = time;
+                       return this;
+               };
+       
+               p.removeLabel = function(label) {
+                       delete this._labels[label];
+                       return this;
+               };
+               
+               p.getLabelTime = function(label) {
+                       return (this._labels[label] != null) ? this._labels[label] : -1;
+               };
+               
+               p._parseTimeOrLabel = function(timeOrLabel, offsetOrLabel, appendIfAbsent, ignore) {
+                       //if we're about to add a tween/timeline (or an array of them) that's already a child of this timeline, we should remove it first so that it doesn't contaminate the duration().
+                       if (ignore instanceof Animation && ignore.timeline === this) {
+                               this.remove(ignore);
+                       } else if (ignore instanceof Array) {
+                               var i = ignore.length;
+                               while (--i > -1) {
+                                       if (ignore[i] instanceof Animation && ignore[i].timeline === this) {
+                                               this.remove(ignore[i]);
+                                       }
+                               }
+                       }
+                       if (typeof(offsetOrLabel) === "string") {
+                               return this._parseTimeOrLabel(offsetOrLabel, ((appendIfAbsent && typeof(timeOrLabel) === "number" && this._labels[offsetOrLabel] == null) ? timeOrLabel - this.duration() : 0), appendIfAbsent);
+                       }
+                       offsetOrLabel = offsetOrLabel || 0;
+                       if (timeOrLabel == null) {
+                               return this.duration() + offsetOrLabel;
+                       } else if (typeof(timeOrLabel) === "string" && isNaN(timeOrLabel)) {
+                               if (this._labels[timeOrLabel] == null) {
+                                       return (appendIfAbsent) ? (this._labels[timeOrLabel] = this.duration() + offsetOrLabel) : offsetOrLabel;
+                               }
+                               return this._labels[timeOrLabel] + offsetOrLabel;
+                       }
+                       return Number(timeOrLabel) + offsetOrLabel;
+               };
+               
+               p.seek = function(timeOrLabel, suppressEvents) {
+                       return this.totalTime(this._parseTimeOrLabel(timeOrLabel), (suppressEvents != false));
+               };
+               
+               p.stop = function() {
+                       return this.paused(true);
+               };
+       
+               p.gotoAndPlay = function(timeOrLabel, suppressEvents) {
+                       return SimpleTimeline.prototype.play.call(this, timeOrLabel, suppressEvents);
+               };
+               
+               p.gotoAndStop = function(timeOrLabel, suppressEvents) {
+                       return this.pause(timeOrLabel, suppressEvents);
+               };
+               
+               p.render = function(time, suppressEvents, force) {
+                       if (this._gc) {
+                               this._enabled(true, false);
+                       }
+                       this._active = !this._paused; 
+                       var totalDur = (!this._dirty) ? this._totalDuration : this.totalDuration(), 
+                               prevTime = this._time, 
+                               prevStart = this._startTime, 
+                               prevTimeScale = this._timeScale, 
+                               prevPaused = this._paused,
+                               tween, isComplete, next, callback;
+                       if (time >= totalDur) {
+                               this._totalTime = this._time = totalDur;
+                               if (!this._reversed) if (!this._hasPausedChild()) {
+                                       isComplete = true;
+                                       callback = "onComplete";
+                                       if (this._duration === 0) if (time === 0 || this._rawPrevTime < 0) if (this._rawPrevTime !== time) { //In order to accommodate zero-duration timelines, we must discern the momentum/direction of time in order to render values properly when the "playhead" goes past 0 in the forward direction or lands directly on it, and also when it moves past it in the backward direction (from a postitive time to a negative time).
+                                               force = true;
+                                       }
+                               }
+                               this._rawPrevTime = time;
+                               time = totalDur + 0.000001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when _time - tween._startTime is performed, floating point errors would return a value that was SLIGHTLY off)
+
+                       } else if (time <= 0) {
+                               this._totalTime = this._time = 0;
+                               if (prevTime !== 0 || (this._duration === 0 && this._rawPrevTime > 0)) {
+                                       callback = "onReverseComplete";
+                                       isComplete = this._reversed;
+                               }
+                               if (time < 0) {
+                                       this._active = false;
+                                       if (this._duration === 0) if (this._rawPrevTime >= 0) { //zero-duration timelines are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                                               force = true;
+                                       }
+                               } else if (!this._initted) {
+                                       force = true;
+                               }
+                               this._rawPrevTime = time;
+                               time = -0.000001; //to avoid occasional floating point rounding errors in Flash - sometimes child tweens/timelines were not being rendered at the very beginning (their progress might be 0.000000000001 instead of 0 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off)
+                               
+                       } else {
+                               this._totalTime = this._time = this._rawPrevTime = time;
+                       }
+                       
+                       if (this._time === prevTime && !force) {
+                               return;
+                       } else if (!this._initted) {
+                               this._initted = true;
+                       }
+                       if (prevTime === 0) if (this.vars.onStart) if (this._time !== 0) if (!suppressEvents) {
+                               this.vars.onStart.apply(this.vars.onStartScope || this, this.vars.onStartParams || _blankArray);
+                       }
+                       
+                       if (this._time > prevTime) {
+                               tween = this._first;
+                               while (tween) {
+                                       next = tween._next; //record it here because the value could change after rendering...
+                                       if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                                               break;
+                                       } else if (tween._active || (tween._startTime <= this._time && !tween._paused && !tween._gc)) {
+                                               
+                                               if (!tween._reversed) {
+                                                       tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, false);
+                                               } else {
+                                                       tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, false);
+                                               }
+                                               
+                                       }
+                                       tween = next;
+                               }
+                       } else {
+                               tween = this._last;
+                               while (tween) {
+                                       next = tween._prev; //record it here because the value could change after rendering...
+                                       if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                                               break;
+                                       } else if (tween._active || (tween._startTime <= prevTime && !tween._paused && !tween._gc)) {
+                                               
+                                               if (!tween._reversed) {
+                                                       tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, false);
+                                               } else {
+                                                       tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, false);
+                                               }
+                                               
+                                       }
+                                       tween = next;
+                               }
+                       }
+                       
+                       if (this._onUpdate) if (!suppressEvents) {
+                               this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                       }
+                       
+                       if (callback) if (!this._gc) if (prevStart === this._startTime || prevTimeScale != this._timeScale) if (this._time === 0 || totalDur >= this.totalDuration()) { //if one of the tweens that was rendered altered this timeline's startTime (like if an onComplete reversed the timeline), it probably isn't complete. If it is, don't worry, because whatever call altered the startTime would complete if it was necessary at the new time. The only exception is the timeScale property. Also check _gc because there's a chance that kill() could be called in an onUpdate
+                               if (isComplete) {
+                                       if (this._timeline.autoRemoveChildren) {
+                                               this._enabled(false, false);
+                                       }
+                                       this._active = false;
+                               }
+                               if (!suppressEvents) if (this.vars[callback]) {
+                                       this.vars[callback].apply(this.vars[callback + "Scope"] || this, this.vars[callback + "Params"] || _blankArray);
+                               }
+                       }
+               };
+               
+               p._hasPausedChild = function() {
+                       var tween = this._first;
+                       while (tween) {
+                               if (tween._paused || ((tween instanceof TimelineLite) && tween._hasPausedChild())) {
+                                       return true;
+                               }
+                               tween = tween._next;
+                       }
+                       return false;
+               };
+               
+               p.getChildren = function(nested, tweens, timelines, ignoreBeforeTime) {
+                       ignoreBeforeTime = ignoreBeforeTime || -9999999999;
+                       var a = [], 
+                               tween = this._first, 
+                               cnt = 0;
+                       while (tween) {
+                               if (tween._startTime < ignoreBeforeTime) {
+                                       //do nothing
+                               } else if (tween instanceof TweenLite) {
+                                       if (tweens !== false) {
+                                               a[cnt++] = tween;
+                                       }
+                               } else {
+                                       if (timelines !== false) {
+                                               a[cnt++] = tween;
+                                       }
+                                       if (nested !== false) {
+                                               a = a.concat(tween.getChildren(true, tweens, timelines));
+                                               cnt = a.length;
+                                       }
+                               }
+                               tween = tween._next;
+                       }
+                       return a;
+               };
+               
+               p.getTweensOf = function(target, nested) {
+                       var tweens = TweenLite.getTweensOf(target), 
+                               i = tweens.length, 
+                               a = [], 
+                               cnt = 0;
+                       while (--i > -1) {
+                               if (tweens[i].timeline === this || (nested && this._contains(tweens[i]))) {
+                                       a[cnt++] = tweens[i];
+                               }
+                       }
+                       return a;
+               };
+               
+               p._contains = function(tween) {
+                       var tl = tween.timeline;
+                       while (tl) {
+                               if (tl === this) {
+                                       return true;
+                               }
+                               tl = tl.timeline;
+                       }
+                       return false;
+               };
+               
+               p.shiftChildren = function(amount, adjustLabels, ignoreBeforeTime) {
+                       ignoreBeforeTime = ignoreBeforeTime || 0;
+                       var tween = this._first;
+                       while (tween) {
+                               if (tween._startTime >= ignoreBeforeTime) {
+                                       tween._startTime += amount;
+                               }
+                               tween = tween._next;
+                       }
+                       if (adjustLabels) {
+                               for (var p in this._labels) {
+                                       if (this._labels[p] >= ignoreBeforeTime) {
+                                               this._labels[p] += amount;
+                                       }
+                               }
+                       }
+                       return this._uncache(true);
+               };
+               
+               p._kill = function(vars, target) {
+                       if (vars == null) if (target == null) {
+                               return this._enabled(false, false);
+                       }
+                       var tweens = (target == null) ? this.getChildren(true, true, false) : this.getTweensOf(target),
+                               i = tweens.length, 
+                               changed = false;
+                       while (--i > -1) {
+                               if (tweens[i]._kill(vars, target)) {
+                                       changed = true;
+                               }
+                       }
+                       return changed;
+               };
+               
+               p.clear = function(labels) {
+                       var tweens = this.getChildren(false, true, true),
+                               i = tweens.length;
+                       this._time = this._totalTime = 0;
+                       while (--i > -1) {
+                               tweens[i]._enabled(false, false);
+                       }
+                       if (labels !== false) {
+                               this._labels = {};
+                       }
+                       return this._uncache(true);
+               };
+               
+               p.invalidate = function() {
+                       var tween = this._first;
+                       while (tween) {
+                               tween.invalidate();
+                               tween = tween._next;
+                       }
+                       return this;
+               };
+               
+               p._enabled = function(enabled, ignoreTimeline) {
+                       if (enabled === this._gc) {
+                               var tween = this._first;
+                               while (tween) {
+                                       tween._enabled(enabled, true);
+                                       tween = tween._next;
+                               }
+                       }
+                       return SimpleTimeline.prototype._enabled.call(this, enabled, ignoreTimeline);
+               };
+               
+               p.progress = function(value) {
+                       return (!arguments.length) ? this._time / this.duration() : this.totalTime(this.duration() * value, false);
+               };
+               
+               p.duration = function(value) {
+                       if (!arguments.length) {
+                               if (this._dirty) {
+                                       this.totalDuration(); //just triggers recalculation
+                               }
+                               return this._duration;
+                       }
+                       if (this.duration() !== 0) if (value !== 0) {
+                               this.timeScale(this._duration / value);
+                       }
+                       return this;
+               };
+               
+               p.totalDuration = function(value) {
+                       if (!arguments.length) {
+                               if (this._dirty) {
+                                       var max = 0, 
+                                               tween = this._first, 
+                                               prevStart = -999999999999, 
+                                               next, end;
+                                       while (tween) {
+                                               next = tween._next; //record it here in case the tween changes position in the sequence...
+                                               
+                                               if (tween._startTime < prevStart && this._sortChildren) { //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence
+                                                       this.insert(tween, tween._startTime - tween._delay);
+                                               } else {
+                                                       prevStart = tween._startTime;
+                                               }
+                                               if (tween._startTime < 0) {//children aren't allowed to have negative startTimes, so adjust here if one is found.
+                                                       max -= tween._startTime;
+                                                       this.shiftChildren(-tween._startTime, false, -9999999999);
+                                               }
+                                               end = tween._startTime + ((!tween._dirty ? tween._totalDuration : tween.totalDuration()) / tween._timeScale);
+                                               if (end > max) {
+                                                       max = end;
+                                               }
+                                               
+                                               tween = next;
+                                       }
+                                       this._duration = this._totalDuration = max;
+                                       this._dirty = false;
+                               }
+                               return this._totalDuration;
+                       }
+                       if (this.totalDuration() !== 0) if (value !== 0) {
+                               this.timeScale(this._totalDuration / value);
+                       }
+                       return this;
+               };
+               
+               p.usesFrames = function() {
+                       var tl = this._timeline;
+                       while (tl._timeline) {
+                               tl = tl._timeline;
+                       }
+                       return (tl === Animation._rootFramesTimeline);
+               };
+               
+               p.rawTime = function() {
+                       return (this._paused || (this._totalTime !== 0 && this._totalTime !== this._totalDuration)) ? this._totalTime : (this._timeline.rawTime() - this._startTime) * this._timeScale;
+               };
+               
+               return TimelineLite;
+               
+       }, true);
+
+
+}); if (window._gsDefine) { _gsQueue.pop()(); }
\ No newline at end of file
diff --git a/CubeIT/js/gsap/TimelineMax.js b/CubeIT/js/gsap/TimelineMax.js
new file mode 100644 (file)
index 0000000..284882e
--- /dev/null
@@ -0,0 +1,997 @@
+/*!
+ * VERSION: beta 1.701
+ * DATE: 2013-01-16
+ * JavaScript (ActionScript 3 and 2 also available)
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ */
+       
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+
+       _gsDefine("TimelineMax", ["TimelineLite","TweenLite","easing.Ease"], function(TimelineLite, TweenLite, Ease) {
+               
+               var TimelineMax = function(vars) {
+                               TimelineLite.call(this, vars);
+                               this._repeat = this.vars.repeat || 0;
+                               this._repeatDelay = this.vars.repeatDelay || 0;
+                               this._cycle = 0;
+                               this._yoyo = (this.vars.yoyo === true);
+                               this._dirty = true;
+                       },
+                       _blankArray = [],
+                       _easeNone = new Ease(null, null, 1, 0),
+                       _getGlobalPaused = function(tween) {
+                               while (tween) {
+                                       if (tween._paused) {
+                                               return true;
+                                       }
+                                       tween = tween._timeline;
+                               }
+                               return false;
+                       },
+                       p = TimelineMax.prototype = new TimelineLite();
+                       
+               p.constructor = TimelineMax;
+               p.kill()._gc = false;
+               TimelineMax.version = 1.701;
+               
+               p.invalidate = function() {
+                       this._yoyo = (this.vars.yoyo === true);
+                       this._repeat = this.vars.repeat || 0;
+                       this._repeatDelay = this.vars.repeatDelay || 0;
+                       this._uncache(true);
+                       return TimelineLite.prototype.invalidate.call(this);
+               };
+               
+               p.addCallback = function(callback, timeOrLabel, params, scope) {
+                       return this.insert( TweenLite.delayedCall(0, callback, params, scope), timeOrLabel);
+               };
+               
+               p.removeCallback = function(callback, timeOrLabel) {
+                       if (timeOrLabel == null) {
+                               this._kill(null, callback);
+                       } else {
+                               var a = this.getTweensOf(callback, false),
+                                       i = a.length,
+                                       time = this._parseTimeOrLabel(timeOrLabel);
+                               while (--i > -1) {
+                                       if (a[i]._startTime === time) {
+                                               a[i]._enabled(false, false);
+                                       }
+                               }
+                       }
+                       return this;
+               };
+               
+               p.tweenTo = function(timeOrLabel, vars) {
+                       vars = vars || {};
+                       var copy = {ease:_easeNone, overwrite:2, useFrames:this.usesFrames(), immediateRender:false}, p, t;
+                       for (p in vars) {
+                               copy[p] = vars[p];
+                       }
+                       copy.time = this._parseTimeOrLabel(timeOrLabel);
+                       t = new TweenLite(this, (Math.abs(Number(copy.time) - this._time) / this._timeScale) || 0.001, copy);
+                       copy.onStart = function() {
+                               t.target.paused(true);
+                               if (t.vars.time !== t.target.time()) { //don't make the duration zero - if it's supposed to be zero, don't worry because it's already initting the tween and will complete immediately, effectively making the duration zero anyway. If we make duration zero, the tween won't run at all.
+                                       t.duration( Math.abs( t.vars.time - t.target.time()) / t.target._timeScale );
+                               }
+                               if (vars.onStart) { //in case the user had an onStart in the vars - we don't want to overwrite it.
+                                       vars.onStart.apply(vars.onStartScope || t, vars.onStartParams || _blankArray);
+                               }
+                       }
+                       return t;
+               };
+               
+               p.tweenFromTo = function(fromTimeOrLabel, toTimeOrLabel, vars) {
+                       vars = vars || {};
+                       vars.startAt = {time:this._parseTimeOrLabel(fromTimeOrLabel)};
+                       var t = this.tweenTo(toTimeOrLabel, vars);
+                       return t.duration((Math.abs( t.vars.time - t.vars.startAt.time) / this._timeScale) || 0.001);
+               };
+               
+               p.render = function(time, suppressEvents, force) {
+                       if (this._gc) {
+                               this._enabled(true, false);
+                       }
+                       this._active = !this._paused;
+                       var totalDur = (!this._dirty) ? this._totalDuration : this.totalDuration(), 
+                               prevTime = this._time, 
+                               prevTotalTime = this._totalTime, 
+                               prevStart = this._startTime, 
+                               prevTimeScale = this._timeScale, 
+                               prevRawPrevTime = this._rawPrevTime,
+                               prevPaused = this._paused, 
+                               prevCycle = this._cycle, 
+                               tween, isComplete, next, dur, callback;
+                       if (time >= totalDur) {
+                               if (!this._locked) {
+                                       this._totalTime = totalDur;
+                                       this._cycle = this._repeat;
+                               }
+                               if (!this._reversed) if (!this._hasPausedChild()) {
+                                       isComplete = true;
+                                       callback = "onComplete";
+                                       if (this._duration === 0) if (time === 0 || this._rawPrevTime < 0) if (this._rawPrevTime !== time) { //In order to accommodate zero-duration timelines, we must discern the momentum/direction of time in order to render values properly when the "playhead" goes past 0 in the forward direction or lands directly on it, and also when it moves past it in the backward direction (from a postitive time to a negative time).
+                                               force = true;
+                                       }
+                               }
+                               this._rawPrevTime = time;
+                               if (this._yoyo && (this._cycle & 1) !== 0) {
+                                       this._time = 0;
+                                       time = -0.000001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being rendered at the very beginning (their progress might be 0.000000000001 instead of 0 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off)
+                               } else {
+                                       this._time = this._duration;
+                                       time = this._duration + 0.000001; //to avoid occasional floating point rounding errors in Flash - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off)
+                               }
+                               
+                       } else if (time <= 0) {
+                               if (!this._locked) {
+                                       this._totalTime = this._cycle = 0;
+                               }
+                               this._time = 0;
+                               if (prevTime !== 0 || (this._duration === 0 && this._rawPrevTime > 0 && !this._locked)) {
+                                       callback = "onReverseComplete";
+                                       isComplete = this._reversed;
+                               }
+                               if (time < 0) {
+                                       this._active = false;
+                                       if (this._duration === 0) if (this._rawPrevTime >= 0) { //zero-duration timelines are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                                               force = true;
+                                       }
+                               } else if (!this._initted) {
+                                       force = true;
+                               }
+                               this._rawPrevTime = time;
+                               time = (this._duration === 0) ? 0 : -0.000001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being rendered at the very beginning (their progress might be 0.000000000001 instead of 0 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off)
+                               
+                       } else {
+                               this._time = this._rawPrevTime = time;
+                               if (!this._locked) {
+                                       this._totalTime = time;
+                                       if (this._repeat !== 0) {
+                                               var cycleDuration = this._duration + this._repeatDelay;
+                                               this._cycle = (this._totalTime / cycleDuration) >> 0; //originally _totalTime % cycleDuration but floating point errors caused problems, so I normalized it. (4 % 0.8 should be 0 but Flash reports it as 0.79999999!)
+                                               if (this._cycle !== 0) if (this._cycle === this._totalTime / cycleDuration) {
+                                                       this._cycle--; //otherwise when rendered exactly at the end time, it will act as though it is repeating (at the beginning)
+                                               }
+                                               this._time = this._totalTime - (this._cycle * cycleDuration);
+                                               if (this._yoyo) if ((this._cycle & 1) !== 0) {
+                                                       this._time = this._duration - this._time;
+                                               }
+                                               if (this._time > this._duration) {
+                                                       this._time = this._duration;
+                                                       time = this._duration + 0.000001; //to avoid occasional floating point rounding errors in Flash - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off)
+                                               } else if (this._time < 0) {
+                                                       this._time = time = 0;
+                                               } else {
+                                                       time = this._time;
+                                               }
+                                       }
+                               }
+                       }
+                       
+                       if (this._cycle !== prevCycle) if (!this._locked) {
+                               /*
+                               make sure children at the end/beginning of the timeline are rendered properly. If, for example, 
+                               a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which
+                               would get transated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there
+                               could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So 
+                               we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must
+                               ensure that zero-duration tweens at the very beginning or end of the TimelineMax work. 
+                               */
+                               var backwards = (this._yoyo && (prevCycle & 1) !== 0),
+                                       wrap = (backwards === (this._yoyo && (this._cycle & 1) !== 0)),
+                                       recTotalTime = this._totalTime,
+                                       recCycle = this._cycle,
+                                       recRawPrevTime = this._rawPrevTime,
+                                       recTime = this._time;
+                               
+                               this._totalTime = prevCycle * this._duration;
+                               if (this._cycle < prevCycle) {
+                                       backwards = !backwards;
+                               } else {
+                                       this._totalTime += this._duration;
+                               }
+                               this._time = prevTime; //temporarily revert _time so that render() renders the children in the correct order. Without this, tweens won't rewind correctly. We could arhictect things in a "cleaner" way by splitting out the rendering queue into a separate method but for performance reasons, we kept it all inside this method.
+                               
+                               this._rawPrevTime = (this._duration === 0) ? prevRawPrevTime - 0.00001 : prevRawPrevTime;
+                               this._cycle = prevCycle;
+                               this._locked = true; //prevents changes to totalTime and skips repeat/yoyo behavior when we recursively call render()
+                               prevTime = (backwards) ? 0 : this._duration;
+                               this.render(prevTime, suppressEvents, (this._duration === 0));
+                               if (!suppressEvents) if (!this._gc) {
+                                       if (this.vars.onRepeat) {
+                                               this.vars.onRepeat.apply(this.vars.onRepeatScope || this, this.vars.onRepeatParams || _blankArray);
+                                       }
+                               }
+                               if (wrap) {
+                                       prevTime = (backwards) ? this._duration + 0.000001 : -0.000001;
+                                       this.render(prevTime, true, false);
+                               }
+                               this._time = recTime;
+                               this._totalTime = recTotalTime;
+                               this._cycle = recCycle;
+                               this._rawPrevTime = recRawPrevTime;
+                               this._locked = false;
+                       }
+
+                       if (this._time === prevTime && !force) {
+                               if (prevTotalTime !== this._totalTime) if (this._onUpdate) if (!suppressEvents) { //so that onUpdate fires even during the repeatDelay - as long as the totalTime changed, we should trigger onUpdate.
+                                       this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                               }
+                               return;
+                       } else if (!this._initted) {
+                               this._initted = true;
+                       }
+                       
+                       if (prevTotalTime === 0) if (this.vars.onStart) if (this._totalTime !== 0) if (!suppressEvents) {
+                               this.vars.onStart.apply(this.vars.onStartScope || this, this.vars.onStartParams || _blankArray);
+                       }
+
+                       if (this._time > prevTime) {
+                               tween = this._first;
+                               while (tween) {
+                                       next = tween._next; //record it here because the value could change after rendering...
+                                       if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                                               break;
+                                       } else if (tween._active || (tween._startTime <= this._time && !tween._paused && !tween._gc)) {
+                                               if (!tween._reversed) {
+                                                       tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, false);
+                                               } else {
+                                                       tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, false);
+                                               }
+                                               
+                                       }
+                                       tween = next;
+                               }
+                       } else {
+                               tween = this._last;
+                               while (tween) {
+                                       next = tween._prev; //record it here because the value could change after rendering...
+                                       if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                                               break;
+                                       } else if (tween._active || (tween._startTime <= prevTime && !tween._paused && !tween._gc)) {
+                                               if (!tween._reversed) {
+                                                       tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, false);
+                                               } else {
+                                                       tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, false);
+                                               }
+                                               
+                                       }
+                                       tween = next;
+                               }
+                       }
+                       
+                       if (this._onUpdate) if (!suppressEvents) {
+                               this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                       }
+                       if (callback) if (!this._locked) if (!this._gc) if (prevStart === this._startTime || prevTimeScale !== this._timeScale) if (this._time === 0 || totalDur >= this.totalDuration()) { //if one of the tweens that was rendered altered this timeline's startTime (like if an onComplete reversed the timeline), it probably isn't complete. If it is, don't worry, because whatever call altered the startTime would complete if it was necessary at the new time. The only exception is the timeScale property. Also check _gc because there's a chance that kill() could be called in an onUpdate
+                               if (isComplete) {
+                                       if (this._timeline.autoRemoveChildren) {
+                                               this._enabled(false, false);
+                                       }
+                                       this._active = false;
+                               }
+                               if (!suppressEvents) if (this.vars[callback]) {
+                                       this.vars[callback].apply(this.vars[callback + "Scope"] || this, this.vars[callback + "Params"] || _blankArray);
+                               }
+                       }
+               };
+               
+               p.getActive = function(nested, tweens, timelines) {
+                       if (nested == null) {
+                               nested = true;
+                       }
+                       if (tweens == null) {
+                               tweens = true;
+                       }
+                       if (timelines == null) {
+                               timelines = false;
+                       }
+                       var a = [], 
+                               all = this.getChildren(nested, tweens, timelines), 
+                               cnt = 0, 
+                               l = all.length,
+                               i, tween;
+                       for (i = 0; i < l; i++) {
+                               tween = all[i];
+                               //note: we cannot just check tween.active because timelines that contain paused children will continue to have "active" set to true even after the playhead passes their end point (technically a timeline can only be considered complete after all of its children have completed too, but paused tweens are...well...just waiting and until they're unpaused we don't know where their end point will be).
+                               if (!tween._paused) if (tween._timeline._time >= tween._startTime) if (tween._timeline._time < tween._startTime + tween._totalDuration / tween._timeScale) if (!_getGlobalPaused(tween._timeline)) {
+                                       a[cnt++] = tween;
+                               }
+                       }
+                       return a;
+               };
+               
+               
+               p.getLabelAfter = function(time) {
+                       if (!time) if (time !== 0) { //faster than isNan()
+                               time = this._time;
+                       }
+                       var labels = this.getLabelsArray(),
+                               l = labels.length,
+                               i;
+                       for (i = 0; i < l; i++) {
+                               if (labels[i].time > time) {
+                                       return labels[i].name;
+                               }
+                       }
+                       return null;
+               };
+               
+               p.getLabelBefore = function(time) {
+                       if (time == null) {
+                               time = this._time;
+                       }
+                       var labels = this.getLabelsArray(),
+                               i = labels.length;
+                       while (--i > -1) {
+                               if (labels[i].time < time) {
+                                       return labels[i].name;
+                               }
+                       }
+                       return null;
+               };
+               
+               p.getLabelsArray = function() {
+                       var a = [],
+                               cnt = 0,
+                               p;
+                       for (p in this._labels) {
+                               a[cnt++] = {time:this._labels[p], name:p};
+                       }
+                       a.sort(function(a,b) {
+                               return a.time - b.time;
+                       });
+                       return a;
+               };
+               
+               
+//---- GETTERS / SETTERS -------------------------------------------------------------------------------------------------------
+               
+               p.progress = function(value) {
+                       return (!arguments.length) ? this._time / this.duration() : this.totalTime( this.duration() * ((this._yoyo && (this._cycle & 1) !== 0) ? 1 - value : value) + (this._cycle * (this._duration + this._repeatDelay)), false);
+               };
+               
+               p.totalProgress = function(value) {
+                       return (!arguments.length) ? this._totalTime / this.totalDuration() : this.totalTime( this.totalDuration() * value, false);
+               };
+               
+               p.totalDuration = function(value) {
+                       if (!arguments.length) {
+                               if (this._dirty) {
+                                       TimelineLite.prototype.totalDuration.call(this); //just forces refresh
+                                       //Instead of Infinity, we use 999999999999 so that we can accommodate reverses.
+                                       this._totalDuration = (this._repeat === -1) ? 999999999999 : this._duration * (this._repeat + 1) + (this._repeatDelay * this._repeat);
+                               }
+                               return this._totalDuration;
+                       }
+                       return (this._repeat === -1) ? this : this.duration( (value - (this._repeat * this._repeatDelay)) / (this._repeat + 1) );
+               };
+               
+               p.time = function(value, suppressEvents) {
+                       if (!arguments.length) {
+                               return this._time;
+                       }
+                       if (this._dirty) {
+                               this.totalDuration();
+                       }
+                       if (value > this._duration) {
+                               value = this._duration;
+                       }
+                       if (this._yoyo && (this._cycle & 1) !== 0) {
+                               value = (this._duration - value) + (this._cycle * (this._duration + this._repeatDelay));
+                       } else if (this._repeat !== 0) {
+                               value += this._cycle * (this._duration + this._repeatDelay);
+                       }
+                       return this.totalTime(value, suppressEvents);
+               };
+               
+               p.repeat = function(value) {
+                       if (!arguments.length) {
+                               return this._repeat;
+                       }
+                       this._repeat = value;
+                       return this._uncache(true);
+               };
+               
+               p.repeatDelay = function(value) {
+                       if (!arguments.length) {
+                               return this._repeatDelay;
+                       }
+                       this._repeatDelay = value;
+                       return this._uncache(true);
+               };
+               
+               p.yoyo = function(value) {
+                       if (!arguments.length) {
+                               return this._yoyo;
+                       }
+                       this._yoyo = value;
+                       return this;
+               };
+               
+               p.currentLabel = function(value) {
+                       if (!arguments.length) {
+                               return this.getLabelBefore(this._time + 0.00000001);
+                       }
+                       return this.seek(value, true);
+               };
+               
+               return TimelineMax;
+               
+       }, true);
+
+
+
+
+
+
+
+/*
+ * ----------------------------------------------------------------
+ * TimelineLite
+ * ----------------------------------------------------------------
+ */
+
+       _gsDefine("TimelineLite", ["core.Animation","core.SimpleTimeline","TweenLite"], function(Animation, SimpleTimeline, TweenLite) {
+
+               "use strict";
+
+               var TimelineLite = function(vars) {
+                               SimpleTimeline.call(this, vars);
+                               this._labels = {};
+                               this.autoRemoveChildren = (this.vars.autoRemoveChildren == true);
+                               this.smoothChildTiming = (this.vars.smoothChildTiming == true);
+                               this._sortChildren = true;
+                               this._onUpdate = this.vars.onUpdate;
+                               var i = _paramProps.length,
+                                       j, a;
+                               while (--i > -1) {
+                                       if ((a = this.vars[_paramProps[i]])) {
+                                               j = a.length;
+                                               while (--j > -1) {
+                                                       if (a[j] === "{self}") {
+                                                               a = this.vars[_paramProps[i]] = a.concat(); //copy the array in case the user referenced the same array in multiple timelines/tweens (each {self} should be unique)
+                                                               a[j] = this;
+                                                       }
+                                               }
+                                       }
+                               }
+                               if (this.vars.tweens instanceof Array) {
+                                       this.insertMultiple(this.vars.tweens, 0, this.vars.align || "normal", this.vars.stagger || 0);
+                               }
+                       },
+                       _paramProps = ["onStartParams","onUpdateParams","onCompleteParams","onReverseCompleteParams","onRepeatParams"],
+                       _blankArray = [],
+                       _copy = function(vars) {
+                               var copy = {}, p;
+                               for (p in vars) {
+                                       copy[p] = vars[p];
+                               }
+                               return copy;
+                       },
+                       p = TimelineLite.prototype = new SimpleTimeline();
+
+               TimelineLite.version = 1.701;
+               p.constructor = TimelineLite;
+               p.kill()._gc = false;
+
+               p.to = function(target, duration, vars, offsetOrLabel, baseTimeOrLabel) {
+                       return this.insert( new TweenLite(target, duration, vars), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+
+               p.from = function(target, duration, vars, offsetOrLabel, baseTimeOrLabel) {
+                       return this.insert( TweenLite.from(target, duration, vars), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+
+               p.fromTo = function(target, duration, fromVars, toVars, offsetOrLabel, baseTimeOrLabel) {
+                       return this.insert( TweenLite.fromTo(target, duration, fromVars, toVars), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+
+               p.staggerTo = function(targets, duration, vars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+                       var tl = new TimelineLite({onComplete:onCompleteAll, onCompleteParams:onCompleteAllParams, onCompleteScope:onCompleteAllScope});
+                       stagger = stagger || 0;
+                       for (var i = 0; i < targets.length; i++) {
+                               if (vars.startAt != null) {
+                                       vars.startAt = _copy(vars.startAt);
+                               }
+                               tl.insert( new TweenLite(targets[i], duration, _copy(vars)), i * stagger);
+                       }
+                       return this.insert(tl, this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+
+               p.staggerFrom = function(targets, duration, vars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+                       if (vars.immediateRender == null) {
+                               vars.immediateRender = true;
+                       }
+                       vars.runBackwards = true;
+                       return this.staggerTo(targets, duration, vars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope);
+               };
+
+               p.staggerFromTo = function(targets, duration, fromVars, toVars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+                       toVars.startAt = fromVars;
+                       if (fromVars.immediateRender) {
+                               toVars.immediateRender = true;
+                       }
+                       return this.staggerTo(targets, duration, toVars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope);
+               };
+
+               p.call = function(callback, params, scope, offsetOrLabel, baseTimeOrLabel) {
+                       return this.insert( TweenLite.delayedCall(0, callback, params, scope), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+
+               p.set = function(target, vars, offsetOrLabel, baseTimeOrLabel) {
+                       vars.immediateRender = false;
+                       return this.insert( new TweenLite(target, 0, vars), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+
+               TimelineLite.exportRoot = function(vars, ignoreDelayedCalls) {
+                       vars = vars || {};
+                       if (vars.smoothChildTiming == null) {
+                               vars.smoothChildTiming = true;
+                       }
+                       var tl = new TimelineLite(vars),
+                               root = tl._timeline;
+                       if (ignoreDelayedCalls == null) {
+                               ignoreDelayedCalls = true;
+                       }
+                       root._remove(tl, true);
+                       tl._startTime = 0;
+                       tl._rawPrevTime = tl._time = tl._totalTime = root._time;
+                       var tween = root._first, next;
+                       while (tween) {
+                               next = tween._next;
+                               if (!ignoreDelayedCalls || !(tween instanceof TweenLite && tween.target === tween.vars.onComplete)) {
+                                       tl.insert(tween, tween._startTime - tween._delay);
+                               }
+                               tween = next;
+                       }
+                       root.insert(tl, 0);
+                       return tl;
+               };
+
+               p.insert = function(value, timeOrLabel) {
+                       if (value instanceof Animation) {
+                               //continue...
+                       } else if (value instanceof Array) {
+                               return this.insertMultiple(value, timeOrLabel);
+                       } else if (typeof(value) === "string") {
+                               return this.addLabel(value, this._parseTimeOrLabel(timeOrLabel || 0, 0, true));
+                       } else if (typeof(value) === "function") {
+                               value = TweenLite.delayedCall(0, value);
+                       } else {
+                               throw ("ERROR: Cannot insert() " + value + " into the TimelineLite/Max because it is neither a tween, timeline, function, nor a String.");
+                               return this;
+                       }
+
+                       SimpleTimeline.prototype.insert.call(this, value, this._parseTimeOrLabel(timeOrLabel || 0, 0, true, value));
+
+                       //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly.
+                       if (this._gc) if (!this._paused) if (this._time === this._duration) if (this._time < this.duration()) {
+                               //in case any of the anscestors had completed but should now be enabled...
+                               var tl = this;
+                               while (tl._gc && tl._timeline) {
+                                       if (tl._timeline.smoothChildTiming) {
+                                               tl.totalTime(tl._totalTime, true); //also enables them
+                                       } else {
+                                               tl._enabled(true, false);
+                                       }
+                                       tl = tl._timeline;
+                               }
+                       }
+                       return this;
+               };
+
+               p.remove = function(value) {
+                       if (value instanceof Animation) {
+                               return this._remove(value, false);
+                       } else if (value instanceof Array) {
+                               var i = value.length;
+                               while (--i > -1) {
+                                       this.remove(value[i]);
+                               }
+                               return this;
+                       } else if (typeof(value) === "string") {
+                               return this.removeLabel(value);
+                       }
+                       return this.kill(null, value);
+               };
+
+               p.append = function(value, offsetOrLabel) {
+                       return this.insert(value, this._parseTimeOrLabel(null, offsetOrLabel, true, value));
+               };
+
+               p.insertMultiple = function(tweens, timeOrLabel, align, stagger) {
+                       align = align || "normal";
+                       stagger = stagger || 0;
+                       var i, tween, curTime = this._parseTimeOrLabel(timeOrLabel || 0, 0, true, tweens), l = tweens.length;
+                       for (i = 0; i < l; i++) {
+                               if ((tween = tweens[i]) instanceof Array) {
+                                       tween = new TimelineLite({tweens:tween});
+                               }
+                               this.insert(tween, curTime);
+                               if (typeof(tween) === "string" || typeof(tween) === "function") {
+                                       //do nothing
+                               } else if (align === "sequence") {
+                                       curTime = tween._startTime + (tween.totalDuration() / tween._timeScale);
+                               } else if (align === "start") {
+                                       tween._startTime -= tween.delay();
+                               }
+                               curTime += stagger;
+                       }
+                       return this._uncache(true);
+               };
+
+               p.appendMultiple = function(tweens, offsetOrLabel, align, stagger) {
+                       return this.insertMultiple(tweens, this._parseTimeOrLabel(null, offsetOrLabel, true, tweens), align, stagger);
+               };
+
+               p.addLabel = function(label, time) {
+                       this._labels[label] = time;
+                       return this;
+               };
+
+               p.removeLabel = function(label) {
+                       delete this._labels[label];
+                       return this;
+               };
+
+               p.getLabelTime = function(label) {
+                       return (this._labels[label] != null) ? this._labels[label] : -1;
+               };
+
+               p._parseTimeOrLabel = function(timeOrLabel, offsetOrLabel, appendIfAbsent, ignore) {
+                       //if we're about to add a tween/timeline (or an array of them) that's already a child of this timeline, we should remove it first so that it doesn't contaminate the duration().
+                       if (ignore instanceof Animation && ignore.timeline === this) {
+                               this.remove(ignore);
+                       } else if (ignore instanceof Array) {
+                               var i = ignore.length;
+                               while (--i > -1) {
+                                       if (ignore[i] instanceof Animation && ignore[i].timeline === this) {
+                                               this.remove(ignore[i]);
+                                       }
+                               }
+                       }
+                       if (typeof(offsetOrLabel) === "string") {
+                               return this._parseTimeOrLabel(offsetOrLabel, ((appendIfAbsent && typeof(timeOrLabel) === "number" && this._labels[offsetOrLabel] == null) ? timeOrLabel - this.duration() : 0), appendIfAbsent);
+                       }
+                       offsetOrLabel = offsetOrLabel || 0;
+                       if (timeOrLabel == null) {
+                               return this.duration() + offsetOrLabel;
+                       } else if (typeof(timeOrLabel) === "string" && isNaN(timeOrLabel)) {
+                               if (this._labels[timeOrLabel] == null) {
+                                       return (appendIfAbsent) ? (this._labels[timeOrLabel] = this.duration() + offsetOrLabel) : offsetOrLabel;
+                               }
+                               return this._labels[timeOrLabel] + offsetOrLabel;
+                       }
+                       return Number(timeOrLabel) + offsetOrLabel;
+               };
+
+               p.seek = function(timeOrLabel, suppressEvents) {
+                       return this.totalTime(this._parseTimeOrLabel(timeOrLabel), (suppressEvents != false));
+               };
+
+               p.stop = function() {
+                       return this.paused(true);
+               };
+
+               p.gotoAndPlay = function(timeOrLabel, suppressEvents) {
+                       return SimpleTimeline.prototype.play.call(this, timeOrLabel, suppressEvents);
+               };
+
+               p.gotoAndStop = function(timeOrLabel, suppressEvents) {
+                       return this.pause(timeOrLabel, suppressEvents);
+               };
+
+               p.render = function(time, suppressEvents, force) {
+                       if (this._gc) {
+                               this._enabled(true, false);
+                       }
+                       this._active = !this._paused;
+                       var totalDur = (!this._dirty) ? this._totalDuration : this.totalDuration(),
+                               prevTime = this._time,
+                               prevStart = this._startTime,
+                               prevTimeScale = this._timeScale,
+                               prevPaused = this._paused,
+                               tween, isComplete, next, callback;
+                       if (time >= totalDur) {
+                               this._totalTime = this._time = totalDur;
+                               if (!this._reversed) if (!this._hasPausedChild()) {
+                                       isComplete = true;
+                                       callback = "onComplete";
+                                       if (this._duration === 0) if (time === 0 || this._rawPrevTime < 0) if (this._rawPrevTime !== time) { //In order to accommodate zero-duration timelines, we must discern the momentum/direction of time in order to render values properly when the "playhead" goes past 0 in the forward direction or lands directly on it, and also when it moves past it in the backward direction (from a postitive time to a negative time).
+                                               force = true;
+                                       }
+                               }
+                               this._rawPrevTime = time;
+                               time = totalDur + 0.000001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when _time - tween._startTime is performed, floating point errors would return a value that was SLIGHTLY off)
+
+                       } else if (time <= 0) {
+                               this._totalTime = this._time = 0;
+                               if (prevTime !== 0 || (this._duration === 0 && this._rawPrevTime > 0)) {
+                                       callback = "onReverseComplete";
+                                       isComplete = this._reversed;
+                               }
+                               if (time < 0) {
+                                       this._active = false;
+                                       if (this._duration === 0) if (this._rawPrevTime >= 0) { //zero-duration timelines are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                                               force = true;
+                                       }
+                               } else if (!this._initted) {
+                                       force = true;
+                               }
+                               this._rawPrevTime = time;
+                               time = -0.000001; //to avoid occasional floating point rounding errors in Flash - sometimes child tweens/timelines were not being rendered at the very beginning (their progress might be 0.000000000001 instead of 0 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off)
+
+                       } else {
+                               this._totalTime = this._time = this._rawPrevTime = time;
+                       }
+
+                       if (this._time === prevTime && !force) {
+                               return;
+                       } else if (!this._initted) {
+                               this._initted = true;
+                       }
+                       if (prevTime === 0) if (this.vars.onStart) if (this._time !== 0) if (!suppressEvents) {
+                               this.vars.onStart.apply(this.vars.onStartScope || this, this.vars.onStartParams || _blankArray);
+                       }
+
+                       if (this._time > prevTime) {
+                               tween = this._first;
+                               while (tween) {
+                                       next = tween._next; //record it here because the value could change after rendering...
+                                       if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                                               break;
+                                       } else if (tween._active || (tween._startTime <= this._time && !tween._paused && !tween._gc)) {
+
+                                               if (!tween._reversed) {
+                                                       tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, false);
+                                               } else {
+                                                       tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, false);
+                                               }
+
+                                       }
+                                       tween = next;
+                               }
+                       } else {
+                               tween = this._last;
+                               while (tween) {
+                                       next = tween._prev; //record it here because the value could change after rendering...
+                                       if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                                               break;
+                                       } else if (tween._active || (tween._startTime <= prevTime && !tween._paused && !tween._gc)) {
+
+                                               if (!tween._reversed) {
+                                                       tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, false);
+                                               } else {
+                                                       tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, false);
+                                               }
+
+                                       }
+                                       tween = next;
+                               }
+                       }
+
+                       if (this._onUpdate) if (!suppressEvents) {
+                               this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                       }
+
+                       if (callback) if (!this._gc) if (prevStart === this._startTime || prevTimeScale != this._timeScale) if (this._time === 0 || totalDur >= this.totalDuration()) { //if one of the tweens that was rendered altered this timeline's startTime (like if an onComplete reversed the timeline), it probably isn't complete. If it is, don't worry, because whatever call altered the startTime would complete if it was necessary at the new time. The only exception is the timeScale property. Also check _gc because there's a chance that kill() could be called in an onUpdate
+                               if (isComplete) {
+                                       if (this._timeline.autoRemoveChildren) {
+                                               this._enabled(false, false);
+                                       }
+                                       this._active = false;
+                               }
+                               if (!suppressEvents) if (this.vars[callback]) {
+                                       this.vars[callback].apply(this.vars[callback + "Scope"] || this, this.vars[callback + "Params"] || _blankArray);
+                               }
+                       }
+               };
+
+               p._hasPausedChild = function() {
+                       var tween = this._first;
+                       while (tween) {
+                               if (tween._paused || ((tween instanceof TimelineLite) && tween._hasPausedChild())) {
+                                       return true;
+                               }
+                               tween = tween._next;
+                       }
+                       return false;
+               };
+
+               p.getChildren = function(nested, tweens, timelines, ignoreBeforeTime) {
+                       ignoreBeforeTime = ignoreBeforeTime || -9999999999;
+                       var a = [],
+                               tween = this._first,
+                               cnt = 0;
+                       while (tween) {
+                               if (tween._startTime < ignoreBeforeTime) {
+                                       //do nothing
+                               } else if (tween instanceof TweenLite) {
+                                       if (tweens !== false) {
+                                               a[cnt++] = tween;
+                                       }
+                               } else {
+                                       if (timelines !== false) {
+                                               a[cnt++] = tween;
+                                       }
+                                       if (nested !== false) {
+                                               a = a.concat(tween.getChildren(true, tweens, timelines));
+                                               cnt = a.length;
+                                       }
+                               }
+                               tween = tween._next;
+                       }
+                       return a;
+               };
+
+               p.getTweensOf = function(target, nested) {
+                       var tweens = TweenLite.getTweensOf(target),
+                               i = tweens.length,
+                               a = [],
+                               cnt = 0;
+                       while (--i > -1) {
+                               if (tweens[i].timeline === this || (nested && this._contains(tweens[i]))) {
+                                       a[cnt++] = tweens[i];
+                               }
+                       }
+                       return a;
+               };
+
+               p._contains = function(tween) {
+                       var tl = tween.timeline;
+                       while (tl) {
+                               if (tl === this) {
+                                       return true;
+                               }
+                               tl = tl.timeline;
+                       }
+                       return false;
+               };
+
+               p.shiftChildren = function(amount, adjustLabels, ignoreBeforeTime) {
+                       ignoreBeforeTime = ignoreBeforeTime || 0;
+                       var tween = this._first;
+                       while (tween) {
+                               if (tween._startTime >= ignoreBeforeTime) {
+                                       tween._startTime += amount;
+                               }
+                               tween = tween._next;
+                       }
+                       if (adjustLabels) {
+                               for (var p in this._labels) {
+                                       if (this._labels[p] >= ignoreBeforeTime) {
+                                               this._labels[p] += amount;
+                                       }
+                               }
+                       }
+                       return this._uncache(true);
+               };
+
+               p._kill = function(vars, target) {
+                       if (vars == null) if (target == null) {
+                               return this._enabled(false, false);
+                       }
+                       var tweens = (target == null) ? this.getChildren(true, true, false) : this.getTweensOf(target),
+                               i = tweens.length,
+                               changed = false;
+                       while (--i > -1) {
+                               if (tweens[i]._kill(vars, target)) {
+                                       changed = true;
+                               }
+                       }
+                       return changed;
+               };
+
+               p.clear = function(labels) {
+                       var tweens = this.getChildren(false, true, true),
+                               i = tweens.length;
+                       this._time = this._totalTime = 0;
+                       while (--i > -1) {
+                               tweens[i]._enabled(false, false);
+                       }
+                       if (labels !== false) {
+                               this._labels = {};
+                       }
+                       return this._uncache(true);
+               };
+
+               p.invalidate = function() {
+                       var tween = this._first;
+                       while (tween) {
+                               tween.invalidate();
+                               tween = tween._next;
+                       }
+                       return this;
+               };
+
+               p._enabled = function(enabled, ignoreTimeline) {
+                       if (enabled === this._gc) {
+                               var tween = this._first;
+                               while (tween) {
+                                       tween._enabled(enabled, true);
+                                       tween = tween._next;
+                               }
+                       }
+                       return SimpleTimeline.prototype._enabled.call(this, enabled, ignoreTimeline);
+               };
+
+               p.progress = function(value) {
+                       return (!arguments.length) ? this._time / this.duration() : this.totalTime(this.duration() * value, false);
+               };
+
+               p.duration = function(value) {
+                       if (!arguments.length) {
+                               if (this._dirty) {
+                                       this.totalDuration(); //just triggers recalculation
+                               }
+                               return this._duration;
+                       }
+                       if (this.duration() !== 0) if (value !== 0) {
+                               this.timeScale(this._duration / value);
+                       }
+                       return this;
+               };
+
+               p.totalDuration = function(value) {
+                       if (!arguments.length) {
+                               if (this._dirty) {
+                                       var max = 0,
+                                               tween = this._first,
+                                               prevStart = -999999999999,
+                                               next, end;
+                                       while (tween) {
+                                               next = tween._next; //record it here in case the tween changes position in the sequence...
+
+                                               if (tween._startTime < prevStart && this._sortChildren) { //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence
+                                                       this.insert(tween, tween._startTime - tween._delay);
+                                               } else {
+                                                       prevStart = tween._startTime;
+                                               }
+                                               if (tween._startTime < 0) {//children aren't allowed to have negative startTimes, so adjust here if one is found.
+                                                       max -= tween._startTime;
+                                                       this.shiftChildren(-tween._startTime, false, -9999999999);
+                                               }
+                                               end = tween._startTime + ((!tween._dirty ? tween._totalDuration : tween.totalDuration()) / tween._timeScale);
+                                               if (end > max) {
+                                                       max = end;
+                                               }
+
+                                               tween = next;
+                                       }
+                                       this._duration = this._totalDuration = max;
+                                       this._dirty = false;
+                               }
+                               return this._totalDuration;
+                       }
+                       if (this.totalDuration() !== 0) if (value !== 0) {
+                               this.timeScale(this._totalDuration / value);
+                       }
+                       return this;
+               };
+
+               p.usesFrames = function() {
+                       var tl = this._timeline;
+                       while (tl._timeline) {
+                               tl = tl._timeline;
+                       }
+                       return (tl === Animation._rootFramesTimeline);
+               };
+
+               p.rawTime = function() {
+                       return (this._paused || (this._totalTime !== 0 && this._totalTime !== this._totalDuration)) ? this._totalTime : (this._timeline.rawTime() - this._startTime) * this._timeScale;
+               };
+
+               return TimelineLite;
+
+       }, true);
+
+}); if (window._gsDefine) { _gsQueue.pop()(); }
\ No newline at end of file
diff --git a/CubeIT/js/gsap/TweenLite.js b/CubeIT/js/gsap/TweenLite.js
new file mode 100644 (file)
index 0000000..995b3e4
--- /dev/null
@@ -0,0 +1,1444 @@
+/*!
+ * VERSION: beta 1.701
+ * DATE: 2013-01-16
+ * JavaScript (ActionScript 3 and 2 also available)
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ */
+(function(window) {
+       
+               "use strict";
+               var _globals = window.GreenSockGlobals || window,
+                       _namespace = function(ns) {
+                               var a = ns.split("."), 
+                                       p = _globals, i;
+                               for (i = 0; i < a.length; i++) {
+                                       p[a[i]] = p = p[a[i]] || {};
+                               }
+                               return p;
+                       },
+                       gs = _namespace("com.greensock"),
+                       a, i, p, _gsInit,
+                       _defLookup = {},
+
+                       /**
+                        * @constructor
+                        * Defines a GreenSock class, optionally with an array of dependencies that must be instantiated first and passed into the definition.
+                        * This allows users to load GreenSock JS files in any order even if they have interdependencies (like CSSPlugin extends TweenPlugin which is
+                        * inside TweenLite.js, but if CSSPlugin is loaded first, it should wait to run its code until TweenLite.js loads and instantiates TweenPlugin
+                        * and then pass TweenPlugin to CSSPlugin's definition). This is all done automatically and internally.
+                        *
+                        * Every definition will be added to a "com.greensock" global object (typically window, but if a window.GreenSockGlobals object is found,
+                        * it will go there as of v1.7). For example, TweenLite will be found at window.com.greensock.TweenLite and since it's a global class that should be available anywhere,
+                        * it is ALSO referenced at window.TweenLite. However some classes aren't considered global, like the base com.greensock.core.Animation class, so
+                        * those will only be at the package like window.com.greensock.core.Animation. Again, if you define a GreenSockGlobals object on the window, everything
+                        * gets tucked neatly inside there instead of on the window directly. This allows you to do advanced things like load multiple versions of GreenSock
+                        * files and put them into distinct objects (imagine a banner ad uses a newer version but the main site uses an older one). In that case, you could
+                        * sandbox the banner one like:
+                        *
+                        * <script type="text/javascript">
+                        *     var gs = window.GreenSockGlobals = {}; //the newer version we're about to load could now be referenced in a "gs" object, like gs.TweenLite.to(...). Use whatever alias you want as long as it's unique, "gs" or "banner" or whatever.
+                        * </script>
+                        * <script type="text/javascript" src="js/greensock/v1.7/TweenMax.js"></script>
+                        * <script type="text/javascript">
+                        *     window.GreenSockGlobals = null; //reset it back to null so that the next load of TweenMax affects the window and we can reference things directly like TweenLite.to(...)
+                        * </script>
+                        * <script type="text/javascript" src="js/greensock/v1.6/TweenMax.js"></script>
+                        * <script type="text/javascript">
+                        *     gs.TweenLite.to(...); //would use v1.7
+                        *     TweenLite.to(...); //would use v1.6
+                        * </script>
+                        *
+                        * @param {!string} ns The namespace of the class definition, leaving off "com.greensock." as that's assumed. For example, "TweenLite" or "plugins.CSSPlugin" or "easing.Back".
+                        * @param {!Array.<string>} dependencies An array of dependencies (described as their namespaces minus "com.greensock." prefix). For example ["TweenLite","plugins.TweenPlugin","core.Animation"]
+                        * @param {!function():Object} func The function that should be called and passed the resolved dependencies which will return the actual class for this definition.
+                        * @param {boolean=} global If true, the class will be added to the global scope (typically window unless you define a window.GreenSockGlobals object)
+                        */
+                       Definition = function(ns, dependencies, func, global) {
+                               this.sc = (_defLookup[ns]) ? _defLookup[ns].sc : []; //subclasses
+                               _defLookup[ns] = this;
+                               this.gsClass = null;
+                               this.func = func;
+                               var _classes = [];
+                               this.check = function(init) {
+                                       var i = dependencies.length,
+                                               missing = i,
+                                               cur, a, n, cl;
+                                       while (--i > -1) {
+                                               if ((cur = _defLookup[dependencies[i]] || new Definition(dependencies[i], [])).gsClass) {
+                                                       _classes[i] = cur.gsClass;
+                                                       missing--;
+                                               } else if (init) {
+                                                       cur.sc.push(this);
+                                               }
+                                       }
+                                       if (missing === 0 && func) {
+                                               a = ("com.greensock." + ns).split(".");
+                                               n = a.pop();
+                                               cl = _namespace(a.join("."))[n] = this.gsClass = func.apply(func, _classes);
+
+                                               //exports to multiple environments
+                                               if (global) {
+                                                       _globals[n] = cl; //provides a way to avoid global namespace pollution. By default, the main classes like TweenLite, Power1, Strong, etc. are added to window unless a GreenSockGlobals is defined. So if you want to have things added to a custom object instead, just do something like window.GreenSockGlobals = {} before loading any GreenSock files. You can even set up an alias like window.GreenSockGlobals = windows.gs = {} so that you can access everything like gs.TweenLite. Also remember that ALL classes are added to the window.com.greensock object (in their respective packages, like com.greensock.easing.Power1, com.greensock.TweenLite, etc.)
+                                                       if (typeof(define) === "function" && define.amd){ //AMD
+                                                               define((window.GreenSockAMDPath ? window.GreenSockAMDPath + "/" : "") + ns.split(".").join("/"), [], function() { return cl; });
+                                                       } else if (typeof(module) !== "undefined" && module.exports){ //node
+                                                               module.exports = cl;
+                                                       }
+                                               }
+                                               for (i = 0; i < this.sc.length; i++) {
+                                                       this.sc[i].check();
+                                               }
+                                       }
+                               };
+                               this.check(true);
+                       },
+
+                       //used to create Definition instances (which basically registers a class that has dependencies).
+                       _gsDefine = window._gsDefine = function(ns, dependencies, func, global) {
+                               return new Definition(ns, dependencies, func, global);
+                       },
+
+                       //a quick way to create a class that doesn't have any dependencies. Returns the class, but first registers it in the GreenSock namespace so that other classes can grab it (other classes might be dependent on the class).
+                       _class = gs._class = function(ns, func, global) {
+                               func = func || function() {};
+                               _gsDefine(ns, [], function(){ return func; }, global);
+                               return func;
+                       };
+
+               
+       
+
+/*
+ * ----------------------------------------------------------------
+ * Ease
+ * ----------------------------------------------------------------
+ */
+               var _baseParams = [0, 0, 1, 1],
+                       _blankArray = [],
+                       Ease = _class("easing.Ease", function(func, extraParams, type, power) {
+                               this._func = func;
+                               this._type = type || 0;
+                               this._power = power || 0;
+                               this._params = extraParams ? _baseParams.concat(extraParams) : _baseParams;
+                       }, true),
+                       _easeMap = Ease.map = {},
+                       _easeReg = Ease.register = function(ease, names, types, create) {
+                               var na = names.split(","),
+                                       i = na.length,
+                                       ta = (types || "easeIn,easeOut,easeInOut").split(","),
+                                       e, name, j, type;
+                               while (--i > -1) {
+                                       name = na[i];
+                                       e = create ? _class("easing."+name, null, true) : gs.easing[name] || {};
+                                       j = ta.length;
+                                       while (--j > -1) {
+                                               type = ta[j];
+                                               _easeMap[name + "." + type] = _easeMap[type + name] = e[type] = (ease.getRatio) ? ease : ease[type] || new ease();
+                                       }
+                               }
+                       };
+               
+               p = Ease.prototype;
+               p._calcEnd = false;
+               p.getRatio = function(p) {
+                       if (this._func) {
+                               this._params[0] = p;
+                               return this._func.apply(null, this._params);
+                       }
+                       var t = this._type,
+                               pw = this._power,
+                               r = (t === 1) ? 1 - p : (t === 2) ? p : (p < 0.5) ? p * 2 : (1 - p) * 2;
+                       if (pw === 1) {
+                               r *= r;
+                       } else if (pw === 2) {
+                               r *= r * r;
+                       } else if (pw === 3) {
+                               r *= r * r * r;
+                       } else if (pw === 4) {
+                               r *= r * r * r * r;
+                       }
+                       return (t === 1) ? 1 - r : (t === 2) ? r : (p < 0.5) ? r / 2 : 1 - (r / 2);
+               };
+
+               //create all the standard eases like Linear, Quad, Cubic, Quart, Quint, Strong, Power0, Power1, Power2, Power3, and Power4 (each with easeIn, easeOut, and easeInOut)
+               a = ["Linear","Quad","Cubic","Quart","Quint,Strong"];
+               i = a.length;
+               while (--i > -1) {
+                       p = a[i]+",Power"+i;
+                       _easeReg(new Ease(null,null,1,i), p, "easeOut", true);
+                       _easeReg(new Ease(null,null,2,i), p, "easeIn" + ((i === 0) ? ",easeNone" : ""));
+                       _easeReg(new Ease(null,null,3,i), p, "easeInOut");
+               }
+               _easeMap.linear = gs.easing.Linear.easeIn;
+               _easeMap.swing = gs.easing.Quad.easeOut; //for jQuery folks
+
+
+/*
+ * ----------------------------------------------------------------
+ * EventDispatcher
+ * ----------------------------------------------------------------
+ */
+               var EventDispatcher = _class("events.EventDispatcher", function(target) {
+                       this._listeners = {};
+                       this._eventTarget = target || this;
+               });
+               p = EventDispatcher.prototype;
+
+               p.addEventListener = function(type, callback, scope, useParam, priority) {
+                       priority = priority || 0;
+                       var list = this._listeners[type],
+                               index = 0,
+                               listener, i;
+                       if (list == null) {
+                               this._listeners[type] = list = [];
+                       }
+                       i = list.length;
+                       while (--i > -1) {
+                               listener = list[i];
+                               if (listener.c === callback) {
+                                       list.splice(i, 1);
+                               } else if (index === 0 && listener.pr < priority) {
+                                       index = i + 1;
+                               }
+                       }
+                       list.splice(index, 0, {c:callback, s:scope, up:useParam, pr:priority});
+               };
+               
+               p.removeEventListener = function(type, callback) {
+                       var list = this._listeners[type], i;
+                       if (list) {
+                               i = list.length;
+                               while (--i > -1) {
+                                       if (list[i].c === callback) {
+                                               list.splice(i, 1);
+                                               return;
+                                       }
+                               }
+                       }
+               };
+               
+               p.dispatchEvent = function(type) {
+                       var list = this._listeners[type];
+                       if (list) {
+                               var i = list.length,
+                                       t = this._eventTarget,
+                                       listener;
+                               while (--i > -1) {
+                                       listener = list[i];
+                                       if (listener.up) {
+                                               listener.c.call(listener.s || t, {type:type, target:t});
+                                       } else {
+                                               listener.c.call(listener.s || t);
+                                       }
+                               }
+                       }
+               };
+
+
+/*
+ * ----------------------------------------------------------------
+ * Ticker
+ * ----------------------------------------------------------------
+ */
+               var _reqAnimFrame = window.requestAnimationFrame, 
+                       _cancelAnimFrame = window.cancelAnimationFrame, 
+                       _getTime = Date.now || function() {return new Date().getTime();};
+               
+               //now try to determine the requestAnimationFrame and cancelAnimationFrame functions and if none are found, we'll use a setTimeout()/clearTimeout() polyfill.
+               a = ["ms","moz","webkit","o"];
+               i = a.length;
+               while (--i > -1 && !_reqAnimFrame) {
+                       _reqAnimFrame = window[a[i] + "RequestAnimationFrame"];
+                       _cancelAnimFrame = window[a[i] + "CancelAnimationFrame"] || window[a[i] + "CancelRequestAnimationFrame"];
+               }
+               
+               _class("Ticker", function(fps, useRAF) {
+                       var _self = this,
+                               _startTime = _getTime(),
+                               _useRAF = (useRAF !== false && _reqAnimFrame),
+                               _fps, _req, _id, _gap, _nextTime,
+                               _cancelReq = function() {
+                                       if (_id == null) {
+                                               return;
+                                       }
+                                       if (!_useRAF || !_cancelAnimFrame) {
+                                               window.clearTimeout(_id);
+                                       } else {
+                                               _cancelAnimFrame(_id);
+                                       }
+                                       _id = null;
+                               },
+                               _tick = function(manual) {
+                                       _self.time = (_getTime() - _startTime) / 1000;
+                                       if (!_fps || _self.time >= _nextTime || (manual === true)) {
+                                               _self.frame++;
+                                               _nextTime = (_self.time > _nextTime) ? _self.time + _gap - (_self.time - _nextTime) : _self.time + _gap - 0.001;
+                                               if (_nextTime < _self.time + 0.001) {
+                                                       _nextTime = _self.time + 0.001;
+                                               }
+                                               _self.dispatchEvent("tick");
+                                       }
+                                       if (manual !== true) {
+                                               _id = _req(_tick);
+                                       }
+                               };
+
+                       EventDispatcher.call(_self);
+                       this.time = this.frame = 0;
+                       this.tick = function() {
+                               _tick(true);
+                       };
+
+                       this.fps = function(value) {
+                               if (!arguments.length) {
+                                       return _fps;
+                               }
+                               _fps = value;
+                               _gap = 1 / (_fps || 60);
+                               _nextTime = this.time + _gap;
+                               _req = (_fps === 0) ? function(){} : (!_useRAF || !_reqAnimFrame) ? function(f) { return window.setTimeout( f, (((_nextTime - _self.time) * 1000 + 1) >> 0) || 1); } : _reqAnimFrame;
+                               _cancelReq();
+                               _id = _req(_tick);
+                       };
+
+                       this.useRAF = function(value) {
+                               if (!arguments.length) {
+                                       return _useRAF;
+                               }
+                               _cancelReq();
+                               _useRAF = value;
+                               _self.fps(_fps);
+                       };
+                       _self.fps(fps);
+
+                       //a bug in iOS 6 Safari occasionally prevents the requestAnimationFrame from working initially, so we use a 1-second timeout that automatically falls back to setTimeout() if it senses this condition.
+                       window.setTimeout(function() {
+                               if (_useRAF && !_id) {
+                                       _self.useRAF(false);
+                               }
+                       }, 1000);
+               });
+               
+               p = gs.Ticker.prototype = new gs.events.EventDispatcher();
+               p.constructor = gs.Ticker;
+
+
+/*
+ * ----------------------------------------------------------------
+ * Animation
+ * ----------------------------------------------------------------
+ */
+               var Animation = _class("core.Animation", function(duration, vars) {
+                               this.vars = vars || {};
+                               this._duration = this._totalDuration = duration || 0;
+                               this._delay = Number(this.vars.delay) || 0;
+                               this._timeScale = 1;
+                               this._active = (this.vars.immediateRender === true);
+                               this.data = this.vars.data;
+                               this._reversed = (this.vars.reversed === true);
+                               
+                               if (!_rootTimeline) {
+                                       return;
+                               }
+                               if (!_gsInit) {
+                                       _ticker.tick(); //the first time an animation (tween or timeline) is created, we should refresh the time in order to avoid a gap. The Ticker's initial time that it records might be very early in the load process and the user may have loaded several other large scripts in the mean time, but we want tweens to act as though they started when the page's onload was fired. Also remember that the requestAnimationFrame likely won't be called until the first screen redraw.
+                                       _gsInit = true;
+                               }
+
+                               var tl = this.vars.useFrames ? _rootFramesTimeline : _rootTimeline;
+                               tl.insert(this, tl._time);
+                               
+                               if (this.vars.paused) {
+                                       this.paused(true);
+                               }
+                       }),
+                       _ticker = Animation.ticker = new gs.Ticker();
+               
+               p = Animation.prototype;
+               p._dirty = p._gc = p._initted = p._paused = false;
+               p._totalTime = p._time = 0;
+               p._rawPrevTime = -1;
+               p._next = p._last = p._onUpdate = p._timeline = p.timeline = null;
+               p._paused = false;
+               
+               p.play = function(from, suppressEvents) {
+                       if (arguments.length) {
+                               this.seek(from, suppressEvents);
+                       }
+                       this.reversed(false);
+                       return this.paused(false);
+               };
+               
+               p.pause = function(atTime, suppressEvents) {
+                       if (arguments.length) {
+                               this.seek(atTime, suppressEvents);
+                       }
+                       return this.paused(true);
+               };
+               
+               p.resume = function(from, suppressEvents) {
+                       if (arguments.length) {
+                               this.seek(from, suppressEvents);
+                       }
+                       return this.paused(false);
+               };
+               
+               p.seek = function(time, suppressEvents) {
+                       return this.totalTime(Number(time), (suppressEvents !== false));
+               };
+               
+               p.restart = function(includeDelay, suppressEvents) {
+                       this.reversed(false);
+                       this.paused(false);
+                       return this.totalTime((includeDelay) ? -this._delay : 0, (suppressEvents !== false));
+               };
+               
+               p.reverse = function(from, suppressEvents) {
+                       if (arguments.length) {
+                               this.seek((from || this.totalDuration()), suppressEvents);
+                       }
+                       this.reversed(true);
+                       return this.paused(false);
+               };
+               
+               p.render = function() {
+                       
+               };
+               
+               p.invalidate = function() {
+                       return this;
+               };
+               
+               p._enabled = function (enabled, ignoreTimeline) {
+                       this._gc = !enabled; 
+                       this._active = (enabled && !this._paused && this._totalTime > 0 && this._totalTime < this._totalDuration);
+                       if (ignoreTimeline !== true) {
+                               if (enabled && this.timeline == null) {
+                                       this._timeline.insert(this, this._startTime - this._delay);
+                               } else if (!enabled && this.timeline != null) {
+                                       this._timeline._remove(this, true);
+                               }
+                       }
+                       return false;
+               };
+       
+               
+               p._kill = function(vars, target) {
+                       return this._enabled(false, false);
+               };
+               
+               p.kill = function(vars, target) {
+                       this._kill(vars, target);
+                       return this;
+               };
+               
+               p._uncache = function(includeSelf) {
+                       var tween = includeSelf ? this : this.timeline;
+                       while (tween) {
+                               tween._dirty = true;
+                               tween = tween.timeline;
+                       }
+                       return this;
+               };
+       
+//----Animation getters/setters --------------------------------------------------------
+               
+               p.eventCallback = function(type, callback, params, scope) {
+                       if (type == null) {
+                               return null;
+                       } else if (type.substr(0,2) === "on") {
+                               if (arguments.length === 1) {
+                                       return this.vars[type];
+                               }
+                               if (callback == null) {
+                                       delete this.vars[type];
+                               } else {
+                                       this.vars[type] = callback;
+                                       this.vars[type + "Params"] = params;
+                                       this.vars[type + "Scope"] = scope;
+                                       if (params) {
+                                               var i = params.length;
+                                               while (--i > -1) {
+                                                       if (params[i] === "{self}") {
+                                                               params = this.vars[type + "Params"] = params.concat(); //copying the array avoids situations where the same array is passed to multiple tweens/timelines and {self} doesn't correctly point to each individual instance.
+                                                               params[i] = this;
+                                                       }
+                                               }
+                                       }
+                               }
+                               if (type === "onUpdate") {
+                                       this._onUpdate = callback;
+                               }
+                       }
+                       return this;
+               };
+               
+               p.delay = function(value) {
+                       if (!arguments.length) {
+                               return this._delay;
+                       }
+                       if (this._timeline.smoothChildTiming) {
+                               this.startTime( this._startTime + value - this._delay );
+                       }
+                       this._delay = value;
+                       return this;
+               };
+               
+               p.duration = function(value) {
+                       if (!arguments.length) {
+                               this._dirty = false;
+                               return this._duration;
+                       }
+                       this._duration = this._totalDuration = value;
+                       this._uncache(true); //true in case it's a TweenMax or TimelineMax that has a repeat - we'll need to refresh the totalDuration. 
+                       if (this._timeline.smoothChildTiming) if (this._time > 0) if (this._time < this._duration) if (value !== 0) {
+                               this.totalTime(this._totalTime * (value / this._duration), true);
+                       }
+                       return this;
+               };
+               
+               p.totalDuration = function(value) {
+                       this._dirty = false;
+                       return (!arguments.length) ? this._totalDuration : this.duration(value);
+               };
+               
+               p.time = function(value, suppressEvents) {
+                       if (!arguments.length) {
+                               return this._time;
+                       }
+                       if (this._dirty) {
+                               this.totalDuration();
+                       }
+                       if (value > this._duration) {
+                               value = this._duration;
+                       }
+                       return this.totalTime(value, suppressEvents);
+               };
+               
+               p.totalTime = function(time, suppressEvents) {
+                       if (!arguments.length) {
+                               return this._totalTime;
+                       }
+                       if (this._timeline) {
+                               if (time < 0) {
+                                       time += this.totalDuration();
+                               }
+                               if (this._timeline.smoothChildTiming) {
+                                       if (this._dirty) {
+                                               this.totalDuration();
+                                       }
+                                       if (time > this._totalDuration) {
+                                               time = this._totalDuration;
+                                       }
+                                       this._startTime = (this._paused ? this._pauseTime : this._timeline._time) - ((!this._reversed ? time : this._totalDuration - time) / this._timeScale);
+                                       if (!this._timeline._dirty) { //for performance improvement. If the parent's cache is already dirty, it already took care of marking the anscestors as dirty too, so skip the function call here.
+                                               this._uncache(false);
+                                       }
+                                       if (!this._timeline._active) {
+                                               //in case any of the anscestors had completed but should now be enabled...
+                                               var tl = this._timeline;
+                                               while (tl._timeline) {
+                                                       tl.totalTime(tl._totalTime, true);
+                                                       tl = tl._timeline;
+                                               }
+                                       }
+                               }
+                               if (this._gc) {
+                                       this._enabled(true, false);
+                               }
+                               if (this._totalTime !== time) {
+                                       this.render(time, suppressEvents, false);
+                               }
+                       }
+                       return this;
+               };
+               
+               p.startTime = function(value) {
+                       if (!arguments.length) {
+                               return this._startTime;
+                       }
+                       if (value !== this._startTime) {
+                               this._startTime = value;
+                               if (this.timeline) if (this.timeline._sortChildren) {
+                                       this.timeline.insert(this, value - this._delay); //ensures that any necessary re-sequencing of Animations in the timeline occurs to make sure the rendering order is correct.
+                               }
+                       }
+                       return this;
+               };
+               
+               p.timeScale = function(value) {
+                       if (!arguments.length) {
+                               return this._timeScale;
+                       }
+                       value = value || 0.000001; //can't allow zero because it'll throw the math off
+                       if (this._timeline && this._timeline.smoothChildTiming) {
+                               var t = (this._pauseTime || this._pauseTime === 0) ? this._pauseTime : this._timeline._totalTime;
+                               this._startTime = t - ((t - this._startTime) * this._timeScale / value);
+                       }
+                       this._timeScale = value;
+                       return this._uncache(false);
+               };
+               
+               p.reversed = function(value) {
+                       if (!arguments.length) {
+                               return this._reversed;
+                       }
+                       if (value != this._reversed) {
+                               this._reversed = value;
+                               this.totalTime(this._totalTime, true);
+                       }
+                       return this;
+               };
+               
+               p.paused = function(value) {
+                       if (!arguments.length) {
+                               return this._paused;
+                       }
+                       if (value != this._paused) if (this._timeline) {
+                               if (!value && this._timeline.smoothChildTiming) {
+                                       this._startTime += this._timeline.rawTime() - this._pauseTime;
+                                       this._uncache(false);
+                               }
+                               this._pauseTime = (value) ? this._timeline.rawTime() : null;
+                               this._paused = value;
+                               this._active = (!this._paused && this._totalTime > 0 && this._totalTime < this._totalDuration);
+                       }
+                       if (this._gc) if (!value) {
+                               this._enabled(true, false);
+                       }
+                       return this;
+               };
+       
+
+/*
+ * ----------------------------------------------------------------
+ * SimpleTimeline
+ * ----------------------------------------------------------------
+ */
+               var SimpleTimeline = _class("core.SimpleTimeline", function(vars) {
+                       Animation.call(this, 0, vars);
+                       this.autoRemoveChildren = this.smoothChildTiming = true;
+               });
+               
+               p = SimpleTimeline.prototype = new Animation();
+               p.constructor = SimpleTimeline;
+               p.kill()._gc = false;
+               p._first = p._last = null;
+               p._sortChildren = false;
+               
+               p.insert = function(tween, time) {
+                       tween._startTime = Number(time || 0) + tween._delay;
+                       if (tween._paused) if (this !== tween._timeline) { //we only adjust the _pauseTime if it wasn't in this timeline already. Remember, sometimes a tween will be inserted again into the same timeline when its startTime is changed so that the tweens in the TimelineLite/Max are re-ordered properly in the linked list (so everything renders in the proper order). 
+                               tween._pauseTime = tween._startTime + ((this.rawTime() - tween._startTime) / tween._timeScale);
+                       }
+                       if (tween.timeline) {
+                               tween.timeline._remove(tween, true); //removes from existing timeline so that it can be properly added to this one.
+                       }
+                       tween.timeline = tween._timeline = this;
+                       if (tween._gc) {
+                               tween._enabled(true, true);
+                       }
+                       
+                       var prevTween = this._last;
+                       if (this._sortChildren) {
+                               var st = tween._startTime;
+                               while (prevTween && prevTween._startTime > st) {
+                                       prevTween = prevTween._prev;
+                               }
+                       }
+                       if (prevTween) {
+                               tween._next = prevTween._next;
+                               prevTween._next = tween;
+                       } else {
+                               tween._next = this._first;
+                               this._first = tween;
+                       }
+                       if (tween._next) {
+                               tween._next._prev = tween;
+                       } else {
+                               this._last = tween;
+                       }
+                       tween._prev = prevTween;
+                       
+                       if (this._timeline) {
+                               this._uncache(true);
+                       }
+                       return this;
+               };
+               
+               p._remove = function(tween, skipDisable) {
+                       if (tween.timeline === this) {
+                               if (!skipDisable) {
+                                       tween._enabled(false, true);
+                               }
+                               tween.timeline = null;
+                               
+                               if (tween._prev) {
+                                       tween._prev._next = tween._next;
+                               } else if (this._first === tween) {
+                                       this._first = tween._next;
+                               }
+                               if (tween._next) {
+                                       tween._next._prev = tween._prev;
+                               } else if (this._last === tween) {
+                                       this._last = tween._prev;
+                               }
+                               
+                               if (this._timeline) {
+                                       this._uncache(true);
+                               }
+                       }
+                       return this;
+               };
+               
+               p.render = function(time, suppressEvents, force) {
+                       var tween = this._first, 
+                               next;
+                       this._totalTime = this._time = this._rawPrevTime = time;
+                       while (tween) {
+                               next = tween._next; //record it here because the value could change after rendering...
+                               if (tween._active || (time >= tween._startTime && !tween._paused)) {
+                                       if (!tween._reversed) {
+                                               tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, false);
+                                       } else {
+                                               tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, false);
+                                       }
+                               }
+                               tween = next;
+                       }
+               };
+                               
+               p.rawTime = function() {
+                       return this._totalTime;                 
+               };
+       
+       
+/*
+ * ----------------------------------------------------------------
+ * TweenLite
+ * ----------------------------------------------------------------
+ */
+               var TweenLite = _class("TweenLite", function(target, duration, vars) {
+                               Animation.call(this, duration, vars);
+                               
+                               if (target == null) {
+                                       throw "Cannot tween an undefined reference.";
+                               }
+                               this.target = target;           
+                               
+                               this._overwrite = (this.vars.overwrite == null) ? _overwriteLookup[TweenLite.defaultOverwrite] : (typeof(this.vars.overwrite) === "number") ? this.vars.overwrite >> 0 : _overwriteLookup[this.vars.overwrite];
+                               
+                               var i, targ;
+                               if ((target instanceof Array || target.jquery) && typeof(target[0]) === "object") { 
+                                       this._targets = target.slice(0); //works for both jQuery and Array instances
+                                       this._propLookup = [];
+                                       this._siblings = [];
+                                       for (i = 0; i < this._targets.length; i++) {
+                                               targ = this._targets[i];
+                                               //in case the user is passing in an array of jQuery objects, for example, we need to check one more level and pull things out if necessary...
+                                               if (targ.jquery) { 
+                                                       this._targets.splice(i--, 1);
+                                                       this._targets = this._targets.concat(targ.constructor.makeArray(targ));
+                                                       continue;
+                                               }
+                                               this._siblings[i] = _register(targ, this, false);
+                                               if (this._overwrite === 1) if (this._siblings[i].length > 1) {
+                                                       _applyOverwrite(targ, this, null, 1, this._siblings[i]);
+                                               }
+                                       }
+                                       
+                               } else {
+                                       this._propLookup = {};
+                                       this._siblings = _register(target, this, false);
+                                       if (this._overwrite === 1) if (this._siblings.length > 1) {
+                                               _applyOverwrite(target, this, null, 1, this._siblings);
+                                       }
+                               }
+                               
+                               if (this.vars.immediateRender || (duration === 0 && this._delay === 0 && this.vars.immediateRender !== false)) {
+                                       this.render(-this._delay, false, true);
+                               }
+                       }, true);
+       
+               p = TweenLite.prototype = new Animation();
+               p.constructor = TweenLite;
+               p.kill()._gc = false;
+       
+//----TweenLite defaults, overwrite management, and root updates ----------------------------------------------------
+       
+               p.ratio = 0;
+               p._firstPT = p._targets = p._overwrittenProps = null;
+               p._notifyPluginsOfEnabled = false;
+               
+               TweenLite.version = 1.701;
+               TweenLite.defaultEase = p._ease = new Ease(null, null, 1, 1);
+               TweenLite.defaultOverwrite = "auto";
+               TweenLite.ticker = _ticker;
+               
+               var _plugins = TweenLite._plugins = {},
+                       _tweenLookup = TweenLite._tweenLookup = {}, 
+                       _tweenLookupNum = 0,
+                       _reservedProps = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, onCompleteScope:1, useFrames:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, onUpdateScope:1, onStart:1, onStartParams:1, onStartScope:1, onReverseComplete:1, onReverseCompleteParams:1, onReverseCompleteScope:1, onRepeat:1, onRepeatParams:1, onRepeatScope:1, easeParams:1, yoyo:1, orientToBezier:1, immediateRender:1, repeat:1, repeatDelay:1, data:1, paused:1, reversed:1},
+                       _overwriteLookup = {none:0, all:1, auto:2, concurrent:3, allOnStart:4, preexisting:5, "true":1, "false":0},
+                       _rootFramesTimeline = Animation._rootFramesTimeline = new SimpleTimeline(), 
+                       _rootTimeline = Animation._rootTimeline = new SimpleTimeline();
+                       
+               _rootTimeline._startTime = _ticker.time;
+               _rootFramesTimeline._startTime = _ticker.frame;
+               _rootTimeline._active = _rootFramesTimeline._active = true;
+               
+               Animation._updateRoot = function() {
+                               _rootTimeline.render((_ticker.time - _rootTimeline._startTime) * _rootTimeline._timeScale, false, false);
+                               _rootFramesTimeline.render((_ticker.frame - _rootFramesTimeline._startTime) * _rootFramesTimeline._timeScale, false, false);
+                               if (!(_ticker.frame % 120)) { //dump garbage every 120 frames...
+                                       var i, a, p;
+                                       for (p in _tweenLookup) {
+                                               a = _tweenLookup[p].tweens;
+                                               i = a.length;
+                                               while (--i > -1) {
+                                                       if (a[i]._gc) {
+                                                               a.splice(i, 1);
+                                                       }
+                                               }
+                                               if (a.length === 0) {
+                                                       delete _tweenLookup[p];
+                                               }
+                                       }
+                               }
+                       };
+               
+               _ticker.addEventListener("tick", Animation._updateRoot);
+               
+               var _register = function(target, tween, scrub) {
+                               var id = target._gsTweenID, a, i;
+                               if (!_tweenLookup[id || (target._gsTweenID = id = "t" + (_tweenLookupNum++))]) {
+                                       _tweenLookup[id] = {target:target, tweens:[]};
+                               }
+                               if (tween) {
+                                       a = _tweenLookup[id].tweens;
+                                       a[(i = a.length)] = tween;
+                                       if (scrub) {
+                                               while (--i > -1) {
+                                                       if (a[i] === tween) {
+                                                               a.splice(i, 1);
+                                                       }
+                                               }
+                                       }
+                               }
+                               return _tweenLookup[id].tweens;
+                       },
+                       
+                       _applyOverwrite = function(target, tween, props, mode, siblings) {
+                               var i, changed, curTween, l;
+                               if (mode === 1 || mode >= 4) {
+                                       l = siblings.length;
+                                       for (i = 0; i < l; i++) {
+                                               if ((curTween = siblings[i]) !== tween) {
+                                                       if (!curTween._gc) if (curTween._enabled(false, false)) {
+                                                               changed = true;
+                                                       }
+                                               } else if (mode === 5) {
+                                                       break;
+                                               }
+                                       }
+                                       return changed;
+                               }
+                               //NOTE: Add 0.0000000001 to overcome floating point errors that can cause the startTime to be VERY slightly off (when a tween's time() is set for example)
+                               var startTime = tween._startTime + 0.0000000001, 
+                                       overlaps = [], 
+                                       oCount = 0,
+                                       zeroDur = (tween._duration === 0),
+                                       globalStart;
+                               i = siblings.length;
+                               while (--i > -1) {
+                                       if ((curTween = siblings[i]) === tween || curTween._gc || curTween._paused) {
+                                               //ignore
+                                       } else if (curTween._timeline !== tween._timeline) {
+                                               globalStart = globalStart || _checkOverlap(tween, 0, zeroDur);
+                                               if (_checkOverlap(curTween, globalStart, zeroDur) === 0) {
+                                                       overlaps[oCount++] = curTween;
+                                               }
+                                       } else if (curTween._startTime <= startTime) if (curTween._startTime + curTween.totalDuration() / curTween._timeScale + 0.0000000001 > startTime) if (!((zeroDur || !curTween._initted) && startTime - curTween._startTime <= 0.0000000002)) {
+                                               overlaps[oCount++] = curTween;
+                                       }
+                               }
+                               
+                               i = oCount;
+                               while (--i > -1) {
+                                       curTween = overlaps[i];
+                                       if (mode === 2) if (curTween._kill(props, target)) {
+                                               changed = true;
+                                       }
+                                       if (mode !== 2 || (!curTween._firstPT && curTween._initted)) { 
+                                               if (curTween._enabled(false, false)) { //if all property tweens have been overwritten, kill the tween.
+                                                       changed = true;
+                                               }
+                                       }
+                               }
+                               return changed;
+                       },
+                       
+                       _checkOverlap = function(tween, reference, zeroDur) {
+                               var tl = tween._timeline, 
+                                       ts = tl._timeScale, 
+                                       t = tween._startTime;
+                               while (tl._timeline) {
+                                       t += tl._startTime;
+                                       ts *= tl._timeScale;
+                                       if (tl._paused) {
+                                               return -100;
+                                       }
+                                       tl = tl._timeline;
+                               }
+                               t /= ts;
+                               return (t > reference) ? t - reference : ((zeroDur && t === reference) || (!tween._initted && t - reference < 0.0000000002)) ? 0.0000000001 : ((t = t + tween.totalDuration() / tween._timeScale / ts) > reference) ? 0 : t - reference - 0.0000000001;
+                       };
+
+       
+//---- TweenLite instance methods -----------------------------------------------------------------------------
+
+               p._init = function() {
+                       var v = this.vars,
+                               ease = v.ease,
+                               i, initPlugins, pt;
+                       if (v.startAt) {
+                               v.startAt.overwrite = 0;
+                               v.startAt.immediateRender = true;
+                               TweenLite.to(this.target, 0, v.startAt);
+                       }
+                       if (!ease) {
+                               this._ease = TweenLite.defaultEase;
+                       } else if (ease instanceof Ease) {
+                               this._ease = (v.easeParams instanceof Array) ? ease.config.apply(ease, v.easeParams) : ease;
+                       } else if (typeof(ease) === "function") {
+                               this._ease = new Ease(ease, v.easeParams);
+                       } else {
+                               this._ease = _easeMap[ease] || TweenLite.defaultEase;
+                       }
+                       this._easeType = this._ease._type;
+                       this._easePower = this._ease._power;
+                       this._firstPT = null;
+                       
+                       if (this._targets) {
+                               i = this._targets.length;
+                               while (--i > -1) {
+                                       if ( this._initProps( this._targets[i], (this._propLookup[i] = {}), this._siblings[i], (this._overwrittenProps ? this._overwrittenProps[i] : null)) ) {
+                                               initPlugins = true;
+                                       }
+                               }
+                       } else {
+                               initPlugins = this._initProps(this.target, this._propLookup, this._siblings, this._overwrittenProps);
+                       }
+                       
+                       if (initPlugins) {
+                               TweenLite._onPluginEvent("_onInitAllProps", this); //reorders the array in order of priority. Uses a static TweenPlugin method in order to minimize file size in TweenLite
+                       }
+                       if (this._overwrittenProps) if (this._firstPT == null) if (typeof(this.target) !== "function") { //if all tweening properties have been overwritten, kill the tween. If the target is a function, it's probably a delayedCall so let it live.
+                               this._enabled(false, false);
+                       }
+                       if (v.runBackwards) {
+                               pt = this._firstPT;
+                               while (pt) {
+                                       pt.s += pt.c;
+                                       pt.c = -pt.c;
+                                       pt = pt._next;
+                               }
+                       }
+                       this._onUpdate = v.onUpdate;
+                       this._initted = true;
+               };
+               
+               p._initProps = function(target, propLookup, siblings, overwrittenProps) {
+                       var p, i, initPlugins, plugin, a, pt, v;
+                       if (target == null) {
+                               return false;
+                       }
+                       for (p in this.vars) {
+                               if (_reservedProps[p]) { 
+                                       if (p === "onStartParams" || p === "onUpdateParams" || p === "onCompleteParams" || p === "onReverseCompleteParams" || p === "onRepeatParams") if ((a = this.vars[p])) {
+                                               i = a.length;
+                                               while (--i > -1) {
+                                                       if (a[i] === "{self}") {
+                                                               a = this.vars[p] = a.concat(); //copy the array in case the user referenced the same array in multiple tweens/timelines (each {self} should be unique)
+                                                               a[i] = this;
+                                                       }
+                                               }
+                                       }
+                                       
+                               } else if (_plugins[p] && (plugin = new _plugins[p]())._onInitTween(target, this.vars[p], this)) {
+                                       
+                                       //t - target            [object]
+                                       //p - property          [string]
+                                       //s - start                     [number]
+                                       //c - change            [number]
+                                       //f - isFunction        [boolean]
+                                       //n - name                      [string]
+                                       //pg - isPlugin         [boolean]
+                                       //pr - priority         [number]
+                                       this._firstPT = pt = {_next:this._firstPT, t:plugin, p:"setRatio", s:0, c:1, f:true, n:p, pg:true, pr:plugin._priority};
+                                       i = plugin._overwriteProps.length;
+                                       while (--i > -1) {
+                                               propLookup[plugin._overwriteProps[i]] = this._firstPT;
+                                       }
+                                       if (plugin._priority || plugin._onInitAllProps) {
+                                               initPlugins = true;
+                                       }
+                                       if (plugin._onDisable || plugin._onEnable) {
+                                               this._notifyPluginsOfEnabled = true;
+                                       }
+                                       
+                               } else {
+                                       this._firstPT = propLookup[p] = pt = {_next:this._firstPT, t:target, p:p, f:(typeof(target[p]) === "function"), n:p, pg:false, pr:0};
+                                       pt.s = (!pt.f) ? parseFloat(target[p]) : target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ]();
+                                       v = this.vars[p];
+                                       pt.c = (typeof(v) === "string" && v.charAt(1) === "=") ? parseInt(v.charAt(0) + "1", 10) * Number(v.substr(2)) : (Number(v) - pt.s) || 0;
+                               }
+                               if (pt) if (pt._next) {
+                                       pt._next._prev = pt;
+                               }
+                       }
+                       
+                       if (overwrittenProps) if (this._kill(overwrittenProps, target)) { //another tween may have tried to overwrite properties of this tween before init() was called (like if two tweens start at the same time, the one created second will run first)
+                               return this._initProps(target, propLookup, siblings, overwrittenProps);
+                       }
+                       if (this._overwrite > 1) if (this._firstPT) if (siblings.length > 1) if (_applyOverwrite(target, this, propLookup, this._overwrite, siblings)) {
+                               this._kill(propLookup, target);
+                               return this._initProps(target, propLookup, siblings, overwrittenProps);
+                       }
+                       return initPlugins;
+               };
+               
+               p.render = function(time, suppressEvents, force) {
+                       var prevTime = this._time,
+                               isComplete, callback, pt;
+                       if (time >= this._duration) {
+                               this._totalTime = this._time = this._duration;
+                               this.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1;
+                               if (!this._reversed) {
+                                       isComplete = true;
+                                       callback = "onComplete";
+                               }
+                               if (this._duration === 0) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                                       if (time === 0 || this._rawPrevTime < 0) if (this._rawPrevTime !== time) {
+                                               force = true;
+                                       }
+                                       this._rawPrevTime = time;
+                               }
+                               
+                       } else if (time <= 0) {
+                               this._totalTime = this._time = 0;
+                               this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0;
+                               if (prevTime !== 0 || (this._duration === 0 && this._rawPrevTime > 0)) {
+                                       callback = "onReverseComplete";
+                                       isComplete = this._reversed;
+                               }
+                               if (time < 0) {
+                                       this._active = false;
+                                       if (this._duration === 0) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                                               if (this._rawPrevTime >= 0) {
+                                                       force = true;
+                                               }
+                                               this._rawPrevTime = time;
+                                       }
+                               } else if (!this._initted) { //if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.
+                                       force = true;
+                               }
+                               
+                       } else {
+                               this._totalTime = this._time = time;
+                               
+                               if (this._easeType) {
+                                       var r = time / this._duration, type = this._easeType, pow = this._easePower;
+                                       if (type === 1 || (type === 3 && r >= 0.5)) {
+                                               r = 1 - r;
+                                       }
+                                       if (type === 3) {
+                                               r *= 2;
+                                       }
+                                       if (pow === 1) {
+                                               r *= r;
+                                       } else if (pow === 2) {
+                                               r *= r * r;
+                                       } else if (pow === 3) {
+                                               r *= r * r * r;
+                                       } else if (pow === 4) {
+                                               r *= r * r * r * r;
+                                       }
+                                       
+                                       if (type === 1) {
+                                               this.ratio = 1 - r;
+                                       } else if (type === 2) {
+                                               this.ratio = r;
+                                       } else if (time / this._duration < 0.5) {
+                                               this.ratio = r / 2;
+                                       } else {
+                                               this.ratio = 1 - (r / 2);
+                                       }
+                                       
+                               } else {
+                                       this.ratio = this._ease.getRatio(time / this._duration);
+                               }
+                               
+                       }
+
+                       if (this._time === prevTime && !force) {
+                               return;
+                       } else if (!this._initted) {
+                               this._init();
+                               if (!isComplete && this._time) { //_ease is initially set to defaultEase, so now that init() has run, _ease is set properly and we need to recalculate the ratio. Overall this is faster than using conditional logic earlier in the method to avoid having to set ratio twice because we only init() once but renderTime() gets called VERY frequently.
+                                       this.ratio = this._ease.getRatio(this._time / this._duration);
+                               }
+                       }
+                       
+                       if (!this._active) if (!this._paused) {
+                               this._active = true;  //so that if the user renders a tween (as opposed to the timeline rendering it), the timeline is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the tween already finished but the user manually re-renders it as halfway done.
+                       }
+                       if (prevTime === 0) if (this.vars.onStart) if (this._time !== 0 || this._duration === 0) if (!suppressEvents) {
+                               this.vars.onStart.apply(this.vars.onStartScope || this, this.vars.onStartParams || _blankArray);
+                       }
+                       
+                       pt = this._firstPT;
+                       while (pt) {
+                               if (pt.f) {
+                                       pt.t[pt.p](pt.c * this.ratio + pt.s);
+                               } else {
+                                       pt.t[pt.p] = pt.c * this.ratio + pt.s;
+                               }
+                               pt = pt._next;
+                       }
+                       
+                       
+                       if (this._onUpdate) if (!suppressEvents) {
+                               this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                       }
+                       
+                       if (callback) if (!this._gc) { //check _gc because there's a chance that kill() could be called in an onUpdate
+                               if (isComplete) {
+                                       if (this._timeline.autoRemoveChildren) {
+                                               this._enabled(false, false);
+                                       }
+                                       this._active = false;
+                               }
+                               if (!suppressEvents) if (this.vars[callback]) {
+                                       this.vars[callback].apply(this.vars[callback + "Scope"] || this, this.vars[callback + "Params"] || _blankArray);
+                               }
+                       }
+                       
+               };
+               
+               p._kill = function(vars, target) {
+                       if (vars === "all") {
+                               vars = null;
+                       }
+                       if (vars == null) if (target == null || target === this.target) {
+                               return this._enabled(false, false);
+                       }
+                       target = target || this._targets || this.target;
+                       var i, overwrittenProps, p, pt, propLookup, changed, killProps, record;
+                       if ((target instanceof Array || target.jquery) && typeof(target[0]) === "object") { 
+                               i = target.length;
+                               while (--i > -1) {
+                                       if (this._kill(vars, target[i])) {
+                                               changed = true;
+                                       }
+                               }
+                       } else {
+                               if (this._targets) {
+                                       i = this._targets.length;
+                                       while (--i > -1) {
+                                               if (target === this._targets[i]) {
+                                                       propLookup = this._propLookup[i] || {};
+                                                       this._overwrittenProps = this._overwrittenProps || [];
+                                                       overwrittenProps = this._overwrittenProps[i] = vars ? this._overwrittenProps[i] || {} : "all";
+                                                       break;
+                                               }
+                                       }
+                               } else if (target !== this.target) {
+                                       return false;
+                               } else {
+                                       propLookup = this._propLookup;
+                                       overwrittenProps = this._overwrittenProps = vars ? this._overwrittenProps || {} : "all";
+                               }
+
+                               if (propLookup) {
+                                       killProps = vars || propLookup;
+                                       record = (vars !== overwrittenProps && overwrittenProps !== "all" && vars !== propLookup && (vars == null || vars._tempKill !== true)); //_tempKill is a super-secret way to delete a particular tweening property but NOT have it remembered as an official overwritten property (like in BezierPlugin)
+                                       for (p in killProps) {
+                                               if ((pt = propLookup[p])) {
+                                                       if (pt.pg && pt.t._kill(killProps)) {
+                                                               changed = true; //some plugins need to be notified so they can perform cleanup tasks first
+                                                       }
+                                                       if (!pt.pg || pt.t._overwriteProps.length === 0) {
+                                                               if (pt._prev) {
+                                                                       pt._prev._next = pt._next;
+                                                               } else if (pt === this._firstPT) {
+                                                                       this._firstPT = pt._next;
+                                                               }
+                                                               if (pt._next) {
+                                                                       pt._next._prev = pt._prev;
+                                                               }
+                                                               pt._next = pt._prev = null;
+                                                       }
+                                                       delete propLookup[p];
+                                               }
+                                               if (record) { 
+                                                       overwrittenProps[p] = 1;
+                                               }
+                                       }
+                               }
+                       }
+                       return changed;
+               };
+       
+               p.invalidate = function() {
+                       if (this._notifyPluginsOfEnabled) {
+                               TweenLite._onPluginEvent("_onDisable", this);
+                       }
+                       this._firstPT = null;
+                       this._overwrittenProps = null;
+                       this._onUpdate = null;
+                       this._initted = this._active = this._notifyPluginsOfEnabled = false;
+                       this._propLookup = (this._targets) ? {} : [];
+                       return this;
+               };
+               
+               p._enabled = function(enabled, ignoreTimeline) {
+                       if (enabled && this._gc) {
+                               if (this._targets) {
+                                       var i = this._targets.length;
+                                       while (--i > -1) {
+                                               this._siblings[i] = _register(this._targets[i], this, true);
+                                       }
+                               } else {
+                                       this._siblings = _register(this.target, this, true);
+                               }
+                       }
+                       Animation.prototype._enabled.call(this, enabled, ignoreTimeline);
+                       if (this._notifyPluginsOfEnabled) if (this._firstPT) {
+                               return TweenLite._onPluginEvent(((enabled) ? "_onEnable" : "_onDisable"), this);
+                       }
+                       return false;
+               };
+       
+       
+//----TweenLite static methods -----------------------------------------------------
+               
+               TweenLite.to = function(target, duration, vars) {
+                       return new TweenLite(target, duration, vars);
+               };
+               
+               TweenLite.from = function(target, duration, vars) {
+                       vars.runBackwards = true;
+                       if (vars.immediateRender !== false) {
+                               vars.immediateRender = true;
+                       }
+                       return new TweenLite(target, duration, vars);
+               };
+               
+               TweenLite.fromTo = function(target, duration, fromVars, toVars) {
+                       toVars.startAt = fromVars;
+                       if (fromVars.immediateRender) {
+                               toVars.immediateRender = true;
+                       }
+                       return new TweenLite(target, duration, toVars);
+               };
+               
+               TweenLite.delayedCall = function(delay, callback, params, scope, useFrames) {
+                       return new TweenLite(callback, 0, {delay:delay, onComplete:callback, onCompleteParams:params, onCompleteScope:scope, onReverseComplete:callback, onReverseCompleteParams:params, onReverseCompleteScope:scope, immediateRender:false, useFrames:useFrames, overwrite:0});
+               };
+               
+               TweenLite.set = function(target, vars) {
+                       return new TweenLite(target, 0, vars);
+               };
+               
+               TweenLite.killTweensOf = TweenLite.killDelayedCallsTo = function(target, vars) {
+                       var a = TweenLite.getTweensOf(target), 
+                               i = a.length;
+                       while (--i > -1) {
+                               a[i]._kill(vars, target);
+                       }
+               };
+               
+               TweenLite.getTweensOf = function(target) {
+                       if (target == null) { return; }
+                       var i, a, j, t;
+                       if ((target instanceof Array || target.jquery) && typeof(target[0]) === "object") { 
+                               i = target.length;
+                               a = [];
+                               while (--i > -1) {
+                                       a = a.concat(TweenLite.getTweensOf(target[i]));
+                               }
+                               i = a.length;
+                               //now get rid of any duplicates (tweens of arrays of objects could cause duplicates)
+                               while (--i > -1) {
+                                       t = a[i];
+                                       j = i;
+                                       while (--j > -1) {
+                                               if (t === a[j]) {
+                                                       a.splice(i, 1);
+                                               }
+                                       }
+                               }
+                       } else {
+                               a = _register(target).concat();
+                               i = a.length;
+                               while (--i > -1) {
+                                       if (a[i]._gc) {
+                                               a.splice(i, 1);
+                                       }
+                               }
+                       }
+                       return a;
+               };
+               
+               
+               
+/*
+ * ----------------------------------------------------------------
+ * TweenPlugin   (could easily be split out as a separate file/class, but included for ease of use (so that people don't need to include another <script> call before loading plugins which is easy to forget)
+ * ----------------------------------------------------------------
+ */
+               var TweenPlugin = _class("plugins.TweenPlugin", function(props, priority) {
+                                       this._overwriteProps = (props || "").split(",");
+                                       this._propName = this._overwriteProps[0];
+                                       this._priority = priority || 0;
+                               }, true);
+               
+               p = TweenPlugin.prototype;
+               TweenPlugin.version = 12;
+               TweenPlugin.API = 2;
+               p._firstPT = null;              
+                       
+               p._addTween = function(target, prop, start, end, overwriteProp, round) {
+                       var c, pt;
+                       if (end != null && (c = (typeof(end) === "number" || end.charAt(1) !== "=") ? Number(end) - start : parseInt(end.charAt(0)+"1", 10) * Number(end.substr(2)))) {
+                               this._firstPT = pt = {_next:this._firstPT, t:target, p:prop, s:start, c:c, f:(typeof(target[prop]) === "function"), n:overwriteProp || prop, r:round};
+                               if (pt._next) {
+                                       pt._next._prev = pt;
+                               }
+                       }
+               };
+                       
+               p.setRatio = function(v) {
+                       var pt = this._firstPT, 
+                               val;
+                       while (pt) {
+                               val = pt.c * v + pt.s;
+                               if (pt.r) {
+                                       val = (val + ((val > 0) ? 0.5 : -0.5)) >> 0; //about 4x faster than Math.round()
+                               }
+                               if (pt.f) {
+                                       pt.t[pt.p](val);
+                               } else {
+                                       pt.t[pt.p] = val;
+                               }
+                               pt = pt._next;
+                       }
+               };
+                       
+               p._kill = function(lookup) {
+                       if (lookup[this._propName] != null) {
+                               this._overwriteProps = [];
+                       } else {
+                               var i = this._overwriteProps.length;
+                               while (--i > -1) {
+                                       if (lookup[this._overwriteProps[i]] != null) {
+                                               this._overwriteProps.splice(i, 1);
+                                       }
+                               }
+                       }
+                       var pt = this._firstPT;
+                       while (pt) {
+                               if (lookup[pt.n] != null) {
+                                       if (pt._next) {
+                                               pt._next._prev = pt._prev;
+                                       }
+                                       if (pt._prev) {
+                                               pt._prev._next = pt._next;
+                                               pt._prev = null;
+                                       } else if (this._firstPT === pt) {
+                                               this._firstPT = pt._next;
+                                       }
+                               }
+                               pt = pt._next;
+                       }
+                       return false;
+               };
+                       
+               p._roundProps = function(lookup, value) {
+                       var pt = this._firstPT;
+                       while (pt) {
+                               if (lookup[this._propName] || (pt.n != null && lookup[ pt.n.split(this._propName + "_").join("") ])) { //some properties that are very plugin-specific add a prefix named after the _propName plus an underscore, so we need to ignore that extra stuff here.
+                                       pt.r = value;
+                               }
+                               pt = pt._next;
+                       }
+               };
+               
+               TweenLite._onPluginEvent = function(type, tween) {
+                       var pt = tween._firstPT, 
+                               changed;
+                       if (type === "_onInitAllProps") {
+                               //sorts the PropTween linked list in order of priority because some plugins need to render earlier/later than others, like MotionBlurPlugin applies its effects after all x/y/alpha tweens have rendered on each frame.
+                               var pt2, first, last, next;
+                               while (pt) {
+                                       next = pt._next;
+                                       pt2 = first;
+                                       while (pt2 && pt2.pr > pt.pr) {
+                                               pt2 = pt2._next;
+                                       }
+                                       if ((pt._prev = pt2 ? pt2._prev : last)) {
+                                               pt._prev._next = pt;
+                                       } else {
+                                               first = pt;
+                                       }
+                                       if ((pt._next = pt2)) {
+                                               pt2._prev = pt;
+                                       } else {
+                                               last = pt;
+                                       }
+                                       pt = next;
+                               }
+                               pt = tween._firstPT = first;
+                       }
+                       while (pt) {
+                               if (pt.pg) if (typeof(pt.t[type]) === "function") if (pt.t[type]()) {
+                                       changed = true;
+                               }
+                               pt = pt._next;
+                       }
+                       return changed;
+               };
+               
+               TweenPlugin.activate = function(plugins) {
+                       var i = plugins.length;
+                       while (--i > -1) {
+                               if (plugins[i].API === TweenPlugin.API) {
+                                       TweenLite._plugins[(new plugins[i]())._propName] = plugins[i];
+                               }
+                       }
+                       return true;
+               };
+               
+               
+               
+               //now run through all the dependencies discovered and if any are missing, log that to the console as a warning. This is why it's best to have TweenLite load last - it can check all the dependencies for you. 
+               if ((a = window._gsQueue)) {
+                       for (i = 0; i < a.length; i++) {
+                               a[i]();
+                       }
+                       for (p in _defLookup) {
+                               if (!_defLookup[p].func) {
+                                       window.console.log("Warning: TweenLite encountered missing dependency: com.greensock."+p);
+                               }
+                       }
+               }
+               
+       
+})(window);
\ No newline at end of file
diff --git a/CubeIT/js/gsap/TweenMax.js b/CubeIT/js/gsap/TweenMax.js
new file mode 100644 (file)
index 0000000..5851e01
--- /dev/null
@@ -0,0 +1,5800 @@
+/**
+ * VERSION: beta 1.701
+ * DATE: 2013-01-16
+ * JavaScript (ActionScript 3 and 2 also available)
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ * 
+ * Includes all of the following: TweenLite, TweenMax, TimelineLite, TimelineMax, easing.EasePack, plugins.CSSPlugin, plugins.RoundPropsPlugin, plugins.BezierPlugin
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ **/
+
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+
+/*
+ * ----------------------------------------------------------------
+ * TweenMax
+ * ----------------------------------------------------------------
+ */
+       _gsDefine("TweenMax", ["core.Animation","core.SimpleTimeline","TweenLite"], function(Animation, SimpleTimeline, TweenLite) {
+               
+               var TweenMax = function(target, duration, vars) {
+                               TweenLite.call(this, target, duration, vars);
+                               this._cycle = 0;
+                               this._yoyo = (this.vars.yoyo === true);
+                               this._repeat = this.vars.repeat || 0;
+                               this._repeatDelay = this.vars.repeatDelay || 0;
+                               this._dirty = true; //ensures that if there is any repeat, the totalDuration will get recalculated to accurately report it.
+                       },
+                       p = TweenMax.prototype = TweenLite.to({}, 0.1, {}),
+                       _blankArray = [];
+
+               TweenMax.version = 1.701;
+               p.constructor = TweenMax;
+               p.kill()._gc = false;
+               TweenMax.killTweensOf = TweenMax.killDelayedCallsTo = TweenLite.killTweensOf;
+               TweenMax.getTweensOf = TweenLite.getTweensOf;
+               TweenMax.ticker = TweenLite.ticker;
+       
+               p.invalidate = function() {
+                       this._yoyo = (this.vars.yoyo === true);
+                       this._repeat = this.vars.repeat || 0;
+                       this._repeatDelay = this.vars.repeatDelay || 0;
+                       this._uncache(true);
+                       return TweenLite.prototype.invalidate.call(this);
+               };
+               
+               p.updateTo = function(vars, resetDuration) {
+                       var curRatio = this.ratio, p;
+                       if (resetDuration && this.timeline != null && this._startTime < this._timeline._time) {
+                               this._startTime = this._timeline._time;
+                               this._uncache(false);
+                               if (this._gc) {
+                                       this._enabled(true, false);
+                               } else {
+                                       this._timeline.insert(this, this._startTime - this._delay); //ensures that any necessary re-sequencing of Animations in the timeline occurs to make sure the rendering order is correct.
+                               }
+                       }
+                       for (p in vars) {
+                               this.vars[p] = vars[p];
+                       }
+                       if (this._initted) {
+                               if (resetDuration) {
+                                       this._initted = false;
+                               } else {
+                                       if (this._notifyPluginsOfEnabled && this._firstPT) {
+                                               TweenLite._onPluginEvent("_onDisable", this); //in case a plugin like MotionBlur must perform some cleanup tasks
+                                       }
+                                       if (this._time / this._duration > 0.998) { //if the tween has finished (or come extremely close to finishing), we just need to rewind it to 0 and then render it again at the end which forces it to re-initialize (parsing the new vars). We allow tweens that are close to finishing (but haven't quite finished) to work this way too because otherwise, the values are so small when determining where to project the starting values that binary math issues creep in and can make the tween appear to render incorrectly when run backwards. 
+                                               var prevTime = this._time;
+                                               this.render(0, true, false);
+                                               this._initted = false;
+                                               this.render(prevTime, true, false);
+                                       } else if (this._time > 0) {
+                                               this._initted = false;
+                                               this._init();
+                                               var inv = 1 / (1 - curRatio),
+                                                       pt = this._firstPT, endValue;
+                                               while (pt) {
+                                                       endValue = pt.s + pt.c; 
+                                                       pt.c *= inv;
+                                                       pt.s = endValue - pt.c;
+                                                       pt = pt._next;
+                                               }
+                                       }
+                               }
+                       }
+                       return this;
+               };
+                               
+               p.render = function(time, suppressEvents, force) {
+                       var totalDur = (!this._dirty) ? this._totalDuration : this.totalDuration(), 
+                               prevTime = this._time,
+                               prevTotalTime = this._totalTime, 
+                               prevCycle = this._cycle, 
+                               isComplete, callback, pt;
+                       if (time >= totalDur) {
+                               this._totalTime = totalDur;
+                               this._cycle = this._repeat;
+                               if (this._yoyo && (this._cycle & 1) !== 0) {
+                                       this._time = 0;
+                                       this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0;
+                               } else {
+                                       this._time = this._duration;
+                                       this.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1;
+                               }
+                               if (!this._reversed) {
+                                       isComplete = true;
+                                       callback = "onComplete";
+                               }
+                               if (this._duration === 0) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                                       if (time === 0 || this._rawPrevTime < 0) if (this._rawPrevTime !== time) {
+                                               force = true;
+                                       }
+                                       this._rawPrevTime = time;
+                               }
+                               
+                       } else if (time <= 0) {
+                               this._totalTime = this._time = this._cycle = 0;
+                               this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0;
+                               if (prevTotalTime !== 0 || (this._duration === 0 && this._rawPrevTime > 0)) {
+                                       callback = "onReverseComplete";
+                                       isComplete = this._reversed;
+                               }
+                               if (time < 0) {
+                                       this._active = false;
+                                       if (this._duration === 0) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                                               if (this._rawPrevTime >= 0) {
+                                                       force = true;
+                                               }
+                                               this._rawPrevTime = time;
+                                       }
+                               } else if (!this._initted) { //if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.
+                                       force = true;
+                               }
+                       } else {
+                               this._totalTime = this._time = time;
+                               
+                               if (this._repeat !== 0) {
+                                       var cycleDuration = this._duration + this._repeatDelay;
+                                       this._cycle = (this._totalTime / cycleDuration) >> 0; //originally _totalTime % cycleDuration but floating point errors caused problems, so I normalized it. (4 % 0.8 should be 0 but Flash reports it as 0.79999999!)
+                                       if (this._cycle !== 0) if (this._cycle === this._totalTime / cycleDuration) {
+                                               this._cycle--; //otherwise when rendered exactly at the end time, it will act as though it is repeating (at the beginning)
+                                       }
+                                       this._time = this._totalTime - (this._cycle * cycleDuration);
+                                       if (this._yoyo) if ((this._cycle & 1) !== 0) {
+                                               this._time = this._duration - this._time;
+                                       }
+                                       if (this._time > this._duration) {
+                                               this._time = this._duration;
+                                       } else if (this._time < 0) {
+                                               this._time = 0;
+                                       }
+                               }
+                               
+                               if (this._easeType) {
+                                       var r = this._time / this._duration, 
+                                               type = this._easeType, 
+                                               pow = this._easePower;
+                                       if (type === 1 || (type === 3 && r >= 0.5)) {
+                                               r = 1 - r;
+                                       }
+                                       if (type === 3) {
+                                               r *= 2;
+                                       }
+                                       if (pow === 1) {
+                                               r *= r;
+                                       } else if (pow === 2) {
+                                               r *= r * r;
+                                       } else if (pow === 3) {
+                                               r *= r * r * r;
+                                       } else if (pow === 4) {
+                                               r *= r * r * r * r;
+                                       }
+                                       
+                                       if (type === 1) {
+                                               this.ratio = 1 - r;
+                                       } else if (type === 2) {
+                                               this.ratio = r;
+                                       } else if (this._time / this._duration < 0.5) {
+                                               this.ratio = r / 2;
+                                       } else {
+                                               this.ratio = 1 - (r / 2);
+                                       }
+                                       
+                               } else {
+                                       this.ratio = this._ease.getRatio(this._time / this._duration);
+                               }
+                               
+                       }
+                               
+                       if (prevTime === this._time && !force) {
+                               if (prevTotalTime !== this._totalTime) if (this._onUpdate) if (!suppressEvents) { //so that onUpdate fires even during the repeatDelay - as long as the totalTime changed, we should trigger onUpdate.
+                                       this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                               }
+                               return;
+                       } else if (!this._initted) {
+                               this._init();
+                               if (!isComplete && this._time) { //_ease is initially set to defaultEase, so now that init() has run, _ease is set properly and we need to recalculate the ratio. Overall this is faster than using conditional logic earlier in the method to avoid having to set ratio twice because we only init() once but renderTime() gets called VERY frequently.
+                                       this.ratio = this._ease.getRatio(this._time / this._duration);
+                               }
+                       }
+                       
+                       if (!this._active) if (!this._paused) {
+                               this._active = true; //so that if the user renders a tween (as opposed to the timeline rendering it), the timeline is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the tween already finished but the user manually re-renders it as halfway done.
+                       }
+                       if (prevTotalTime === 0) if (this.vars.onStart) if (this._totalTime !== 0 || this._duration === 0) if (!suppressEvents) {
+                               this.vars.onStart.apply(this.vars.onStartScope || this, this.vars.onStartParams || _blankArray);
+                       }
+                       
+                       pt = this._firstPT;
+                       while (pt) {
+                               if (pt.f) {
+                                       pt.t[pt.p](pt.c * this.ratio + pt.s);
+                               } else {
+                                       pt.t[pt.p] = pt.c * this.ratio + pt.s;
+                               }
+                               pt = pt._next;
+                       }
+                       
+                       if (this._onUpdate) if (!suppressEvents) {
+                               this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                       }
+                       if (this._cycle !== prevCycle) if (!suppressEvents) if (!this._gc) if (this.vars.onRepeat) {
+                               this.vars.onRepeat.apply(this.vars.onRepeatScope || this, this.vars.onRepeatParams || _blankArray);
+                       }
+                       if (callback) if (!this._gc) { //check gc because there's a chance that kill() could be called in an onUpdate
+                               if (isComplete) {
+                                       if (this._timeline.autoRemoveChildren) {
+                                               this._enabled(false, false);
+                                       }
+                                       this._active = false;
+                               }
+                               if (!suppressEvents) if (this.vars[callback]) {
+                                       this.vars[callback].apply(this.vars[callback + "Scope"] || this, this.vars[callback + "Params"] || _blankArray);
+                               }
+                       }
+               };
+               
+//---- STATIC FUNCTIONS -----------------------------------------------------------------------------------------------------------
+               
+               TweenMax.to = function(target, duration, vars) {
+                       return new TweenMax(target, duration, vars);
+               };
+               
+               TweenMax.from = function(target, duration, vars) {
+                       vars.runBackwards = true;
+                       if (vars.immediateRender !== false) {
+                               vars.immediateRender = true;
+                       }
+                       return new TweenMax(target, duration, vars);
+               };
+               
+               TweenMax.fromTo = function(target, duration, fromVars, toVars) {
+                       toVars.startAt = fromVars;
+                       if (fromVars.immediateRender) {
+                               toVars.immediateRender = true;
+                       }
+                       return new TweenMax(target, duration, toVars);
+               };
+               
+               TweenMax.staggerTo = TweenMax.allTo = function(targets, duration, vars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+                       stagger = stagger || 0;
+                       var a = [],
+                               l = targets.length,
+                               delay = vars.delay || 0,
+                               copy, i, p;
+                       for (i = 0; i < l; i++) {
+                               copy = {};
+                               for (p in vars) {
+                                       copy[p] = vars[p];
+                               }
+                               copy.delay = delay;
+                               if (i === l - 1 && onCompleteAll) {
+                                       copy.onComplete = function() {
+                                               if (vars.onComplete) {
+                                                       vars.onComplete.apply(vars.onCompleteScope, vars.onCompleteParams);
+                                               }
+                                               onCompleteAll.apply(onCompleteAllScope, onCompleteAllParams);
+                                       };
+                               }
+                               a[i] = new TweenMax(targets[i], duration, copy);
+                               delay += stagger;
+                       }
+                       return a;
+               };
+               
+               TweenMax.staggerFrom = TweenMax.allFrom = function(targets, duration, vars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+                       vars.runBackwards = true;
+                       if (vars.immediateRender !== false) {
+                               vars.immediateRender = true;
+                       }
+                       return TweenMax.staggerTo(targets, duration, vars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope);
+               };
+               
+               TweenMax.staggerFromTo = TweenMax.allFromTo = function(targets, duration, fromVars, toVars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+                       toVars.startAt = fromVars;
+                       if (fromVars.immediateRender) {
+                               toVars.immediateRender = true;
+                       }
+                       return TweenMax.staggerTo(targets, duration, toVars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope);
+               };
+                               
+               TweenMax.delayedCall = function(delay, callback, params, scope, useFrames) {
+                       return new TweenMax(callback, 0, {delay:delay, onComplete:callback, onCompleteParams:params, onCompleteScope:scope, onReverseComplete:callback, onReverseCompleteParams:params, onReverseCompleteScope:scope, immediateRender:false, useFrames:useFrames, overwrite:0});
+               };
+               
+               TweenMax.set = function(target, vars) {
+                       return new TweenMax(target, 0, vars);
+               };
+               
+               TweenMax.isTweening = function(target) {
+                       var a = TweenLite.getTweensOf(target),
+                               i = a.length,
+                               tween;
+                       while (--i > -1) {
+                               if (((tween = a[i])._active || (tween._startTime === tween.timeline._time && tween.timeline._active))) {
+                                       return true;
+                               }
+                       }
+                       return false;
+               };
+               
+               var _getChildrenOf = function(timeline, includeTimelines) {
+                               var a = [],
+                                       cnt = 0,
+                                       tween = timeline._first;
+                               while (tween) {
+                                       if (tween instanceof TweenLite) {
+                                               a[cnt++] = tween;
+                                       } else {
+                                               if (includeTimelines) {
+                                                       a[cnt++] = tween;
+                                               }
+                                               a = a.concat(_getChildrenOf(tween, includeTimelines));
+                                               cnt = a.length;
+                                       }
+                                       tween = tween._next;
+                               }
+                               return a;
+                       }, 
+                       getAllTweens = TweenMax.getAllTweens = function(includeTimelines) {
+                               var a = _getChildrenOf(Animation._rootTimeline, includeTimelines);
+                               return a.concat( _getChildrenOf(Animation._rootFramesTimeline, includeTimelines) );
+                       };
+               
+               TweenMax.killAll = function(complete, tweens, delayedCalls, timelines) {
+                       if (tweens == null) {
+                               tweens = true;
+                       }
+                       if (delayedCalls == null) {
+                               delayedCalls = true;
+                       }
+                       var a = getAllTweens((timelines != false)),
+                               l = a.length,
+                               allTrue = (tweens && delayedCalls && timelines),
+                               isDC, tween, i;
+                       for (i = 0; i < l; i++) {
+                               tween = a[i];
+                               if (allTrue || (tween instanceof SimpleTimeline) || ((isDC = (tween.target === tween.vars.onComplete)) && delayedCalls) || (tweens && !isDC)) {
+                                       if (complete) {
+                                               tween.totalTime(tween.totalDuration());
+                                       } else {
+                                               tween._enabled(false, false);
+                                       }
+                               }
+                       }
+               };
+               
+               TweenMax.killChildTweensOf = function(parent, complete) {
+                       if (parent == null) {
+                               return;
+                       }
+                       if (parent.jquery) {
+                               parent.each( function(i, e) {
+                                       TweenMax.killChildTweensOf(e, complete);
+                               });
+                               return;
+                       }
+                       var tl = TweenLite._tweenLookup,
+                               a = [],
+                               curParent, p, i, l;
+                       for (p in tl) {
+                               curParent = tl[p].target.parentNode;
+                               while (curParent) {
+                                       if (curParent === parent) {
+                                               a = a.concat(tl[p].tweens);
+                                       }
+                                       curParent = curParent.parentNode;
+                               }
+                       }
+                       l = a.length;
+                       for (i = 0; i < l; i++) {
+                               if (complete) {
+                                       a[i].totalTime(a[i].totalDuration());
+                               }
+                               a[i]._enabled(false, false);
+                       }
+               };
+               
+               TweenMax.pauseAll = function(tweens, delayedCalls, timelines) {
+                       _changePause(true, tweens, delayedCalls, timelines);
+               };
+               
+               TweenMax.resumeAll = function(tweens, delayedCalls, timelines) {
+                       _changePause(false, tweens, delayedCalls, timelines);
+               };
+               
+               var _changePause = function(pause, tweens, delayedCalls, timelines) {
+                       if (tweens === undefined) {
+                               tweens = true;
+                       }
+                       if (delayedCalls === undefined) {
+                               delayedCalls = true;
+                       }
+                       var a = getAllTweens(timelines),
+                               allTrue = (tweens && delayedCalls && timelines),
+                               i = a.length,
+                               isDC, tween;
+                       while (--i > -1) {
+                               tween = a[i];
+                               if (allTrue || (tween instanceof SimpleTimeline) || ((isDC = (tween.target === tween.vars.onComplete)) && delayedCalls) || (tweens && !isDC)) {
+                                       tween.paused(pause);
+                               }
+                       }
+               };
+               
+       
+//---- GETTERS / SETTERS ----------------------------------------------------------------------------------------------------------
+               
+               p.progress = function(value) {
+                       return (!arguments.length) ? this._time / this.duration() : this.totalTime( this.duration() * ((this._yoyo && (this._cycle & 1) !== 0) ? 1 - value : value) + (this._cycle * (this._duration + this._repeatDelay)), false);
+               };
+               
+               p.totalProgress = function(value) {
+                       return (!arguments.length) ? this._totalTime / this.totalDuration() : this.totalTime( this.totalDuration() * value, false);
+               };
+               
+               p.time = function(value, suppressEvents) {
+                       if (!arguments.length) {
+                               return this._time;
+                       }
+                       if (this._dirty) {
+                               this.totalDuration();
+                       }
+                       if (value > this._duration) {
+                               value = this._duration;
+                       }
+                       if (this._yoyo && (this._cycle & 1) !== 0) {
+                               value = (this._duration - value) + (this._cycle * (this._duration + this._repeatDelay));
+                       } else if (this._repeat !== 0) {
+                               value += this._cycle * (this._duration + this._repeatDelay);
+                       }
+                       return this.totalTime(value, suppressEvents);
+               };
+               
+               p.totalDuration = function(value) {
+                       if (!arguments.length) {
+                               if (this._dirty) {
+                                       //instead of Infinity, we use 999999999999 so that we can accommodate reverses
+                                       this._totalDuration = (this._repeat === -1) ? 999999999999 : this._duration * (this._repeat + 1) + (this._repeatDelay * this._repeat);
+                                       this._dirty = false;
+                               }
+                               return this._totalDuration;
+                       }
+                       return (this._repeat === -1) ? this : this.duration( (value - (this._repeat * this._repeatDelay)) / (this._repeat + 1) );
+               };
+               
+               p.repeat = function(value) {
+                       if (!arguments.length) {
+                               return this._repeat;
+                       }
+                       this._repeat = value;
+                       return this._uncache(true);
+               };
+               
+               p.repeatDelay = function(value) {
+                       if (!arguments.length) {
+                               return this._repeatDelay;
+                       }
+                       this._repeatDelay = value;
+                       return this._uncache(true);
+               };
+               
+               p.yoyo = function(value) {
+                       if (!arguments.length) {
+                               return this._yoyo;
+                       }
+                       this._yoyo = value;
+                       return this;
+               };
+               
+               
+               return TweenMax;
+               
+       }, true);
+
+
+
+
+
+
+
+
+/*
+ * ----------------------------------------------------------------
+ * TimelineLite
+ * ----------------------------------------------------------------
+ */
+       _gsDefine("TimelineLite", ["core.Animation","core.SimpleTimeline","TweenLite"], function(Animation, SimpleTimeline, TweenLite) {
+
+               "use strict";
+
+               var TimelineLite = function(vars) {
+                               SimpleTimeline.call(this, vars);
+                               this._labels = {};
+                               this.autoRemoveChildren = (this.vars.autoRemoveChildren == true);
+                               this.smoothChildTiming = (this.vars.smoothChildTiming == true);
+                               this._sortChildren = true;
+                               this._onUpdate = this.vars.onUpdate;
+                               var i = _paramProps.length,
+                                       j, a;
+                               while (--i > -1) {
+                                       if ((a = this.vars[_paramProps[i]])) {
+                                               j = a.length;
+                                               while (--j > -1) {
+                                                       if (a[j] === "{self}") {
+                                                               a = this.vars[_paramProps[i]] = a.concat(); //copy the array in case the user referenced the same array in multiple timelines/tweens (each {self} should be unique)
+                                                               a[j] = this;
+                                                       }
+                                               }
+                                       }
+                               }
+                               if (this.vars.tweens instanceof Array) {
+                                       this.insertMultiple(this.vars.tweens, 0, this.vars.align || "normal", this.vars.stagger || 0);
+                               }
+                       },
+                       _paramProps = ["onStartParams","onUpdateParams","onCompleteParams","onReverseCompleteParams","onRepeatParams"],
+                       _blankArray = [],
+                       _copy = function(vars) {
+                               var copy = {}, p;
+                               for (p in vars) {
+                                       copy[p] = vars[p];
+                               }
+                               return copy;
+                       },
+                       p = TimelineLite.prototype = new SimpleTimeline();
+
+               TimelineLite.version = 1.701;
+               p.constructor = TimelineLite;
+               p.kill()._gc = false;
+
+               p.to = function(target, duration, vars, offsetOrLabel, baseTimeOrLabel) {
+                       return this.insert( new TweenLite(target, duration, vars), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+
+               p.from = function(target, duration, vars, offsetOrLabel, baseTimeOrLabel) {
+                       return this.insert( TweenLite.from(target, duration, vars), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+
+               p.fromTo = function(target, duration, fromVars, toVars, offsetOrLabel, baseTimeOrLabel) {
+                       return this.insert( TweenLite.fromTo(target, duration, fromVars, toVars), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+
+               p.staggerTo = function(targets, duration, vars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+                       var tl = new TimelineLite({onComplete:onCompleteAll, onCompleteParams:onCompleteAllParams, onCompleteScope:onCompleteAllScope});
+                       stagger = stagger || 0;
+                       for (var i = 0; i < targets.length; i++) {
+                               if (vars.startAt != null) {
+                                       vars.startAt = _copy(vars.startAt);
+                               }
+                               tl.insert( new TweenLite(targets[i], duration, _copy(vars)), i * stagger);
+                       }
+                       return this.insert(tl, this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+
+               p.staggerFrom = function(targets, duration, vars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+                       if (vars.immediateRender == null) {
+                               vars.immediateRender = true;
+                       }
+                       vars.runBackwards = true;
+                       return this.staggerTo(targets, duration, vars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope);
+               };
+
+               p.staggerFromTo = function(targets, duration, fromVars, toVars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {
+                       toVars.startAt = fromVars;
+                       if (fromVars.immediateRender) {
+                               toVars.immediateRender = true;
+                       }
+                       return this.staggerTo(targets, duration, toVars, stagger, offsetOrLabel, baseTimeOrLabel, onCompleteAll, onCompleteAllParams, onCompleteAllScope);
+               };
+
+               p.call = function(callback, params, scope, offsetOrLabel, baseTimeOrLabel) {
+                       return this.insert( TweenLite.delayedCall(0, callback, params, scope), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+
+               p.set = function(target, vars, offsetOrLabel, baseTimeOrLabel) {
+                       vars.immediateRender = false;
+                       return this.insert( new TweenLite(target, 0, vars), this._parseTimeOrLabel(baseTimeOrLabel, offsetOrLabel, true));
+               };
+
+               TimelineLite.exportRoot = function(vars, ignoreDelayedCalls) {
+                       vars = vars || {};
+                       if (vars.smoothChildTiming == null) {
+                               vars.smoothChildTiming = true;
+                       }
+                       var tl = new TimelineLite(vars),
+                               root = tl._timeline;
+                       if (ignoreDelayedCalls == null) {
+                               ignoreDelayedCalls = true;
+                       }
+                       root._remove(tl, true);
+                       tl._startTime = 0;
+                       tl._rawPrevTime = tl._time = tl._totalTime = root._time;
+                       var tween = root._first, next;
+                       while (tween) {
+                               next = tween._next;
+                               if (!ignoreDelayedCalls || !(tween instanceof TweenLite && tween.target === tween.vars.onComplete)) {
+                                       tl.insert(tween, tween._startTime - tween._delay);
+                               }
+                               tween = next;
+                       }
+                       root.insert(tl, 0);
+                       return tl;
+               };
+
+               p.insert = function(value, timeOrLabel) {
+                       if (value instanceof Animation) {
+                               //continue...
+                       } else if (value instanceof Array) {
+                               return this.insertMultiple(value, timeOrLabel);
+                       } else if (typeof(value) === "string") {
+                               return this.addLabel(value, this._parseTimeOrLabel(timeOrLabel || 0, 0, true));
+                       } else if (typeof(value) === "function") {
+                               value = TweenLite.delayedCall(0, value);
+                       } else {
+                               throw ("ERROR: Cannot insert() " + value + " into the TimelineLite/Max because it is neither a tween, timeline, function, nor a String.");
+                               return this;
+                       }
+
+                       SimpleTimeline.prototype.insert.call(this, value, this._parseTimeOrLabel(timeOrLabel || 0, 0, true, value));
+
+                       //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly.
+                       if (this._gc) if (!this._paused) if (this._time === this._duration) if (this._time < this.duration()) {
+                               //in case any of the anscestors had completed but should now be enabled...
+                               var tl = this;
+                               while (tl._gc && tl._timeline) {
+                                       if (tl._timeline.smoothChildTiming) {
+                                               tl.totalTime(tl._totalTime, true); //also enables them
+                                       } else {
+                                               tl._enabled(true, false);
+                                       }
+                                       tl = tl._timeline;
+                               }
+                       }
+                       return this;
+               };
+
+               p.remove = function(value) {
+                       if (value instanceof Animation) {
+                               return this._remove(value, false);
+                       } else if (value instanceof Array) {
+                               var i = value.length;
+                               while (--i > -1) {
+                                       this.remove(value[i]);
+                               }
+                               return this;
+                       } else if (typeof(value) === "string") {
+                               return this.removeLabel(value);
+                       }
+                       return this.kill(null, value);
+               };
+
+               p.append = function(value, offsetOrLabel) {
+                       return this.insert(value, this._parseTimeOrLabel(null, offsetOrLabel, true, value));
+               };
+
+               p.insertMultiple = function(tweens, timeOrLabel, align, stagger) {
+                       align = align || "normal";
+                       stagger = stagger || 0;
+                       var i, tween, curTime = this._parseTimeOrLabel(timeOrLabel || 0, 0, true, tweens), l = tweens.length;
+                       for (i = 0; i < l; i++) {
+                               if ((tween = tweens[i]) instanceof Array) {
+                                       tween = new TimelineLite({tweens:tween});
+                               }
+                               this.insert(tween, curTime);
+                               if (typeof(tween) === "string" || typeof(tween) === "function") {
+                                       //do nothing
+                               } else if (align === "sequence") {
+                                       curTime = tween._startTime + (tween.totalDuration() / tween._timeScale);
+                               } else if (align === "start") {
+                                       tween._startTime -= tween.delay();
+                               }
+                               curTime += stagger;
+                       }
+                       return this._uncache(true);
+               };
+
+               p.appendMultiple = function(tweens, offsetOrLabel, align, stagger) {
+                       return this.insertMultiple(tweens, this._parseTimeOrLabel(null, offsetOrLabel, true, tweens), align, stagger);
+               };
+
+               p.addLabel = function(label, time) {
+                       this._labels[label] = time;
+                       return this;
+               };
+
+               p.removeLabel = function(label) {
+                       delete this._labels[label];
+                       return this;
+               };
+
+               p.getLabelTime = function(label) {
+                       return (this._labels[label] != null) ? this._labels[label] : -1;
+               };
+
+               p._parseTimeOrLabel = function(timeOrLabel, offsetOrLabel, appendIfAbsent, ignore) {
+                       //if we're about to add a tween/timeline (or an array of them) that's already a child of this timeline, we should remove it first so that it doesn't contaminate the duration().
+                       if (ignore instanceof Animation && ignore.timeline === this) {
+                               this.remove(ignore);
+                       } else if (ignore instanceof Array) {
+                               var i = ignore.length;
+                               while (--i > -1) {
+                                       if (ignore[i] instanceof Animation && ignore[i].timeline === this) {
+                                               this.remove(ignore[i]);
+                                       }
+                               }
+                       }
+                       if (typeof(offsetOrLabel) === "string") {
+                               return this._parseTimeOrLabel(offsetOrLabel, ((appendIfAbsent && typeof(timeOrLabel) === "number" && this._labels[offsetOrLabel] == null) ? timeOrLabel - this.duration() : 0), appendIfAbsent);
+                       }
+                       offsetOrLabel = offsetOrLabel || 0;
+                       if (timeOrLabel == null) {
+                               return this.duration() + offsetOrLabel;
+                       } else if (typeof(timeOrLabel) === "string" && isNaN(timeOrLabel)) {
+                               if (this._labels[timeOrLabel] == null) {
+                                       return (appendIfAbsent) ? (this._labels[timeOrLabel] = this.duration() + offsetOrLabel) : offsetOrLabel;
+                               }
+                               return this._labels[timeOrLabel] + offsetOrLabel;
+                       }
+                       return Number(timeOrLabel) + offsetOrLabel;
+               };
+
+               p.seek = function(timeOrLabel, suppressEvents) {
+                       return this.totalTime(this._parseTimeOrLabel(timeOrLabel), (suppressEvents != false));
+               };
+
+               p.stop = function() {
+                       return this.paused(true);
+               };
+
+               p.gotoAndPlay = function(timeOrLabel, suppressEvents) {
+                       return SimpleTimeline.prototype.play.call(this, timeOrLabel, suppressEvents);
+               };
+
+               p.gotoAndStop = function(timeOrLabel, suppressEvents) {
+                       return this.pause(timeOrLabel, suppressEvents);
+               };
+
+               p.render = function(time, suppressEvents, force) {
+                       if (this._gc) {
+                               this._enabled(true, false);
+                       }
+                       this._active = !this._paused;
+                       var totalDur = (!this._dirty) ? this._totalDuration : this.totalDuration(),
+                               prevTime = this._time,
+                               prevStart = this._startTime,
+                               prevTimeScale = this._timeScale,
+                               prevPaused = this._paused,
+                               tween, isComplete, next, callback;
+                       if (time >= totalDur) {
+                               this._totalTime = this._time = totalDur;
+                               if (!this._reversed) if (!this._hasPausedChild()) {
+                                       isComplete = true;
+                                       callback = "onComplete";
+                                       if (this._duration === 0) if (time === 0 || this._rawPrevTime < 0) if (this._rawPrevTime !== time) { //In order to accommodate zero-duration timelines, we must discern the momentum/direction of time in order to render values properly when the "playhead" goes past 0 in the forward direction or lands directly on it, and also when it moves past it in the backward direction (from a postitive time to a negative time).
+                                               force = true;
+                                       }
+                               }
+                               this._rawPrevTime = time;
+                               time = totalDur + 0.000001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when _time - tween._startTime is performed, floating point errors would return a value that was SLIGHTLY off)
+
+                       } else if (time <= 0) {
+                               this._totalTime = this._time = 0;
+                               if (prevTime !== 0 || (this._duration === 0 && this._rawPrevTime > 0)) {
+                                       callback = "onReverseComplete";
+                                       isComplete = this._reversed;
+                               }
+                               if (time < 0) {
+                                       this._active = false;
+                                       if (this._duration === 0) if (this._rawPrevTime >= 0) { //zero-duration timelines are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                                               force = true;
+                                       }
+                               } else if (!this._initted) {
+                                       force = true;
+                               }
+                               this._rawPrevTime = time;
+                               time = -0.000001; //to avoid occasional floating point rounding errors in Flash - sometimes child tweens/timelines were not being rendered at the very beginning (their progress might be 0.000000000001 instead of 0 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off)
+
+                       } else {
+                               this._totalTime = this._time = this._rawPrevTime = time;
+                       }
+
+                       if (this._time === prevTime && !force) {
+                               return;
+                       } else if (!this._initted) {
+                               this._initted = true;
+                       }
+                       if (prevTime === 0) if (this.vars.onStart) if (this._time !== 0) if (!suppressEvents) {
+                               this.vars.onStart.apply(this.vars.onStartScope || this, this.vars.onStartParams || _blankArray);
+                       }
+
+                       if (this._time > prevTime) {
+                               tween = this._first;
+                               while (tween) {
+                                       next = tween._next; //record it here because the value could change after rendering...
+                                       if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                                               break;
+                                       } else if (tween._active || (tween._startTime <= this._time && !tween._paused && !tween._gc)) {
+
+                                               if (!tween._reversed) {
+                                                       tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, false);
+                                               } else {
+                                                       tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, false);
+                                               }
+
+                                       }
+                                       tween = next;
+                               }
+                       } else {
+                               tween = this._last;
+                               while (tween) {
+                                       next = tween._prev; //record it here because the value could change after rendering...
+                                       if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                                               break;
+                                       } else if (tween._active || (tween._startTime <= prevTime && !tween._paused && !tween._gc)) {
+
+                                               if (!tween._reversed) {
+                                                       tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, false);
+                                               } else {
+                                                       tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, false);
+                                               }
+
+                                       }
+                                       tween = next;
+                               }
+                       }
+
+                       if (this._onUpdate) if (!suppressEvents) {
+                               this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                       }
+
+                       if (callback) if (!this._gc) if (prevStart === this._startTime || prevTimeScale != this._timeScale) if (this._time === 0 || totalDur >= this.totalDuration()) { //if one of the tweens that was rendered altered this timeline's startTime (like if an onComplete reversed the timeline), it probably isn't complete. If it is, don't worry, because whatever call altered the startTime would complete if it was necessary at the new time. The only exception is the timeScale property. Also check _gc because there's a chance that kill() could be called in an onUpdate
+                               if (isComplete) {
+                                       if (this._timeline.autoRemoveChildren) {
+                                               this._enabled(false, false);
+                                       }
+                                       this._active = false;
+                               }
+                               if (!suppressEvents) if (this.vars[callback]) {
+                                       this.vars[callback].apply(this.vars[callback + "Scope"] || this, this.vars[callback + "Params"] || _blankArray);
+                               }
+                       }
+               };
+
+               p._hasPausedChild = function() {
+                       var tween = this._first;
+                       while (tween) {
+                               if (tween._paused || ((tween instanceof TimelineLite) && tween._hasPausedChild())) {
+                                       return true;
+                               }
+                               tween = tween._next;
+                       }
+                       return false;
+               };
+
+               p.getChildren = function(nested, tweens, timelines, ignoreBeforeTime) {
+                       ignoreBeforeTime = ignoreBeforeTime || -9999999999;
+                       var a = [],
+                               tween = this._first,
+                               cnt = 0;
+                       while (tween) {
+                               if (tween._startTime < ignoreBeforeTime) {
+                                       //do nothing
+                               } else if (tween instanceof TweenLite) {
+                                       if (tweens !== false) {
+                                               a[cnt++] = tween;
+                                       }
+                               } else {
+                                       if (timelines !== false) {
+                                               a[cnt++] = tween;
+                                       }
+                                       if (nested !== false) {
+                                               a = a.concat(tween.getChildren(true, tweens, timelines));
+                                               cnt = a.length;
+                                       }
+                               }
+                               tween = tween._next;
+                       }
+                       return a;
+               };
+
+               p.getTweensOf = function(target, nested) {
+                       var tweens = TweenLite.getTweensOf(target),
+                               i = tweens.length,
+                               a = [],
+                               cnt = 0;
+                       while (--i > -1) {
+                               if (tweens[i].timeline === this || (nested && this._contains(tweens[i]))) {
+                                       a[cnt++] = tweens[i];
+                               }
+                       }
+                       return a;
+               };
+
+               p._contains = function(tween) {
+                       var tl = tween.timeline;
+                       while (tl) {
+                               if (tl === this) {
+                                       return true;
+                               }
+                               tl = tl.timeline;
+                       }
+                       return false;
+               };
+
+               p.shiftChildren = function(amount, adjustLabels, ignoreBeforeTime) {
+                       ignoreBeforeTime = ignoreBeforeTime || 0;
+                       var tween = this._first;
+                       while (tween) {
+                               if (tween._startTime >= ignoreBeforeTime) {
+                                       tween._startTime += amount;
+                               }
+                               tween = tween._next;
+                       }
+                       if (adjustLabels) {
+                               for (var p in this._labels) {
+                                       if (this._labels[p] >= ignoreBeforeTime) {
+                                               this._labels[p] += amount;
+                                       }
+                               }
+                       }
+                       return this._uncache(true);
+               };
+
+               p._kill = function(vars, target) {
+                       if (vars == null) if (target == null) {
+                               return this._enabled(false, false);
+                       }
+                       var tweens = (target == null) ? this.getChildren(true, true, false) : this.getTweensOf(target),
+                               i = tweens.length,
+                               changed = false;
+                       while (--i > -1) {
+                               if (tweens[i]._kill(vars, target)) {
+                                       changed = true;
+                               }
+                       }
+                       return changed;
+               };
+
+               p.clear = function(labels) {
+                       var tweens = this.getChildren(false, true, true),
+                               i = tweens.length;
+                       this._time = this._totalTime = 0;
+                       while (--i > -1) {
+                               tweens[i]._enabled(false, false);
+                       }
+                       if (labels !== false) {
+                               this._labels = {};
+                       }
+                       return this._uncache(true);
+               };
+
+               p.invalidate = function() {
+                       var tween = this._first;
+                       while (tween) {
+                               tween.invalidate();
+                               tween = tween._next;
+                       }
+                       return this;
+               };
+
+               p._enabled = function(enabled, ignoreTimeline) {
+                       if (enabled === this._gc) {
+                               var tween = this._first;
+                               while (tween) {
+                                       tween._enabled(enabled, true);
+                                       tween = tween._next;
+                               }
+                       }
+                       return SimpleTimeline.prototype._enabled.call(this, enabled, ignoreTimeline);
+               };
+
+               p.progress = function(value) {
+                       return (!arguments.length) ? this._time / this.duration() : this.totalTime(this.duration() * value, false);
+               };
+
+               p.duration = function(value) {
+                       if (!arguments.length) {
+                               if (this._dirty) {
+                                       this.totalDuration(); //just triggers recalculation
+                               }
+                               return this._duration;
+                       }
+                       if (this.duration() !== 0) if (value !== 0) {
+                               this.timeScale(this._duration / value);
+                       }
+                       return this;
+               };
+
+               p.totalDuration = function(value) {
+                       if (!arguments.length) {
+                               if (this._dirty) {
+                                       var max = 0,
+                                               tween = this._first,
+                                               prevStart = -999999999999,
+                                               next, end;
+                                       while (tween) {
+                                               next = tween._next; //record it here in case the tween changes position in the sequence...
+
+                                               if (tween._startTime < prevStart && this._sortChildren) { //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence
+                                                       this.insert(tween, tween._startTime - tween._delay);
+                                               } else {
+                                                       prevStart = tween._startTime;
+                                               }
+                                               if (tween._startTime < 0) {//children aren't allowed to have negative startTimes, so adjust here if one is found.
+                                                       max -= tween._startTime;
+                                                       this.shiftChildren(-tween._startTime, false, -9999999999);
+                                               }
+                                               end = tween._startTime + ((!tween._dirty ? tween._totalDuration : tween.totalDuration()) / tween._timeScale);
+                                               if (end > max) {
+                                                       max = end;
+                                               }
+
+                                               tween = next;
+                                       }
+                                       this._duration = this._totalDuration = max;
+                                       this._dirty = false;
+                               }
+                               return this._totalDuration;
+                       }
+                       if (this.totalDuration() !== 0) if (value !== 0) {
+                               this.timeScale(this._totalDuration / value);
+                       }
+                       return this;
+               };
+
+               p.usesFrames = function() {
+                       var tl = this._timeline;
+                       while (tl._timeline) {
+                               tl = tl._timeline;
+                       }
+                       return (tl === Animation._rootFramesTimeline);
+               };
+
+               p.rawTime = function() {
+                       return (this._paused || (this._totalTime !== 0 && this._totalTime !== this._totalDuration)) ? this._totalTime : (this._timeline.rawTime() - this._startTime) * this._timeScale;
+               };
+
+               return TimelineLite;
+
+       }, true);
+       
+
+
+
+
+
+
+
+       
+       
+       
+       
+       
+/*
+ * ----------------------------------------------------------------
+ * TimelineMax
+ * ----------------------------------------------------------------
+ */
+       _gsDefine("TimelineMax", ["TimelineLite","TweenLite","easing.Ease"], function(TimelineLite, TweenLite, Ease) {
+
+               var TimelineMax = function(vars) {
+                               TimelineLite.call(this, vars);
+                               this._repeat = this.vars.repeat || 0;
+                               this._repeatDelay = this.vars.repeatDelay || 0;
+                               this._cycle = 0;
+                               this._yoyo = (this.vars.yoyo === true);
+                               this._dirty = true;
+                       },
+                       _blankArray = [],
+                       _easeNone = new Ease(null, null, 1, 0),
+                       _getGlobalPaused = function(tween) {
+                               while (tween) {
+                                       if (tween._paused) {
+                                               return true;
+                                       }
+                                       tween = tween._timeline;
+                               }
+                               return false;
+                       },
+                       p = TimelineMax.prototype = new TimelineLite();
+
+               p.constructor = TimelineMax;
+               p.kill()._gc = false;
+               TimelineMax.version = 1.675;
+
+               p.invalidate = function() {
+                       this._yoyo = (this.vars.yoyo === true);
+                       this._repeat = this.vars.repeat || 0;
+                       this._repeatDelay = this.vars.repeatDelay || 0;
+                       this._uncache(true);
+                       return TimelineLite.prototype.invalidate.call(this);
+               };
+
+               p.addCallback = function(callback, timeOrLabel, params, scope) {
+                       return this.insert( TweenLite.delayedCall(0, callback, params, scope), timeOrLabel);
+               };
+
+               p.removeCallback = function(callback, timeOrLabel) {
+                       if (timeOrLabel == null) {
+                               this._kill(null, callback);
+                       } else {
+                               var a = this.getTweensOf(callback, false),
+                                       i = a.length,
+                                       time = this._parseTimeOrLabel(timeOrLabel);
+                               while (--i > -1) {
+                                       if (a[i]._startTime === time) {
+                                               a[i]._enabled(false, false);
+                                       }
+                               }
+                       }
+                       return this;
+               };
+
+               p.tweenTo = function(timeOrLabel, vars) {
+                       vars = vars || {};
+                       var copy = {ease:_easeNone, overwrite:2, useFrames:this.usesFrames(), immediateRender:false}, p, t;
+                       for (p in vars) {
+                               copy[p] = vars[p];
+                       }
+                       copy.time = this._parseTimeOrLabel(timeOrLabel);
+                       t = new TweenLite(this, (Math.abs(Number(copy.time) - this._time) / this._timeScale) || 0.001, copy);
+                       copy.onStart = function() {
+                               t.target.paused(true);
+                               if (t.vars.time !== t.target.time()) { //don't make the duration zero - if it's supposed to be zero, don't worry because it's already initting the tween and will complete immediately, effectively making the duration zero anyway. If we make duration zero, the tween won't run at all.
+                                       t.duration( Math.abs( t.vars.time - t.target.time()) / t.target._timeScale );
+                               }
+                               if (vars.onStart) { //in case the user had an onStart in the vars - we don't want to overwrite it.
+                                       vars.onStart.apply(vars.onStartScope || t, vars.onStartParams || _blankArray);
+                               }
+                       }
+                       return t;
+               };
+
+               p.tweenFromTo = function(fromTimeOrLabel, toTimeOrLabel, vars) {
+                       vars = vars || {};
+                       vars.startAt = {time:this._parseTimeOrLabel(fromTimeOrLabel)};
+                       var t = this.tweenTo(toTimeOrLabel, vars);
+                       return t.duration((Math.abs( t.vars.time - t.vars.startAt.time) / this._timeScale) || 0.001);
+               };
+
+               p.render = function(time, suppressEvents, force) {
+                       if (this._gc) {
+                               this._enabled(true, false);
+                       }
+                       this._active = !this._paused;
+                       var totalDur = (!this._dirty) ? this._totalDuration : this.totalDuration(),
+                               prevTime = this._time,
+                               prevTotalTime = this._totalTime,
+                               prevStart = this._startTime,
+                               prevTimeScale = this._timeScale,
+                               prevRawPrevTime = this._rawPrevTime,
+                               prevPaused = this._paused,
+                               prevCycle = this._cycle,
+                               tween, isComplete, next, dur, callback;
+                       if (time >= totalDur) {
+                               if (!this._locked) {
+                                       this._totalTime = totalDur;
+                                       this._cycle = this._repeat;
+                               }
+                               if (!this._reversed) if (!this._hasPausedChild()) {
+                                       isComplete = true;
+                                       callback = "onComplete";
+                                       if (this._duration === 0) if (time === 0 || this._rawPrevTime < 0) if (this._rawPrevTime !== time) { //In order to accommodate zero-duration timelines, we must discern the momentum/direction of time in order to render values properly when the "playhead" goes past 0 in the forward direction or lands directly on it, and also when it moves past it in the backward direction (from a postitive time to a negative time).
+                                               force = true;
+                                       }
+                               }
+                               this._rawPrevTime = time;
+                               if (this._yoyo && (this._cycle & 1) !== 0) {
+                                       this._time = 0;
+                                       time = -0.000001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being rendered at the very beginning (their progress might be 0.000000000001 instead of 0 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off)
+                               } else {
+                                       this._time = this._duration;
+                                       time = this._duration + 0.000001; //to avoid occasional floating point rounding errors in Flash - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off)
+                               }
+
+                       } else if (time <= 0) {
+                               if (!this._locked) {
+                                       this._totalTime = this._cycle = 0;
+                               }
+                               this._time = 0;
+                               if (prevTime !== 0 || (this._duration === 0 && this._rawPrevTime > 0 && !this._locked)) {
+                                       callback = "onReverseComplete";
+                                       isComplete = this._reversed;
+                               }
+                               if (time < 0) {
+                                       this._active = false;
+                                       if (this._duration === 0) if (this._rawPrevTime >= 0) { //zero-duration timelines are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                                               force = true;
+                                       }
+                               } else if (!this._initted) {
+                                       force = true;
+                               }
+                               this._rawPrevTime = time;
+                               time = (this._duration === 0) ? 0 : -0.000001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being rendered at the very beginning (their progress might be 0.000000000001 instead of 0 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off)
+
+                       } else {
+                               this._time = this._rawPrevTime = time;
+                               if (!this._locked) {
+                                       this._totalTime = time;
+                                       if (this._repeat !== 0) {
+                                               var cycleDuration = this._duration + this._repeatDelay;
+                                               this._cycle = (this._totalTime / cycleDuration) >> 0; //originally _totalTime % cycleDuration but floating point errors caused problems, so I normalized it. (4 % 0.8 should be 0 but Flash reports it as 0.79999999!)
+                                               if (this._cycle !== 0) if (this._cycle === this._totalTime / cycleDuration) {
+                                                       this._cycle--; //otherwise when rendered exactly at the end time, it will act as though it is repeating (at the beginning)
+                                               }
+                                               this._time = this._totalTime - (this._cycle * cycleDuration);
+                                               if (this._yoyo) if ((this._cycle & 1) !== 0) {
+                                                       this._time = this._duration - this._time;
+                                               }
+                                               if (this._time > this._duration) {
+                                                       this._time = this._duration;
+                                                       time = this._duration + 0.000001; //to avoid occasional floating point rounding errors in Flash - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off)
+                                               } else if (this._time < 0) {
+                                                       this._time = time = 0;
+                                               } else {
+                                                       time = this._time;
+                                               }
+                                       }
+                               }
+                       }
+
+                       if (this._cycle !== prevCycle) if (!this._locked) {
+                               /*
+                                make sure children at the end/beginning of the timeline are rendered properly. If, for example,
+                                a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which
+                                would get transated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there
+                                could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So
+                                we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must
+                                ensure that zero-duration tweens at the very beginning or end of the TimelineMax work.
+                                */
+                               var backwards = (this._yoyo && (prevCycle & 1) !== 0),
+                                       wrap = (backwards === (this._yoyo && (this._cycle & 1) !== 0)),
+                                       recTotalTime = this._totalTime,
+                                       recCycle = this._cycle,
+                                       recRawPrevTime = this._rawPrevTime,
+                                       recTime = this._time;
+
+                               this._totalTime = prevCycle * this._duration;
+                               if (this._cycle < prevCycle) {
+                                       backwards = !backwards;
+                               } else {
+                                       this._totalTime += this._duration;
+                               }
+                               this._time = prevTime; //temporarily revert _time so that render() renders the children in the correct order. Without this, tweens won't rewind correctly. We could arhictect things in a "cleaner" way by splitting out the rendering queue into a separate method but for performance reasons, we kept it all inside this method.
+
+                               this._rawPrevTime = (this._duration === 0) ? prevRawPrevTime - 0.00001 : prevRawPrevTime;
+                               this._cycle = prevCycle;
+                               this._locked = true; //prevents changes to totalTime and skips repeat/yoyo behavior when we recursively call render()
+                               prevTime = (backwards) ? 0 : this._duration;
+                               this.render(prevTime, suppressEvents, (this._duration === 0));
+                               if (!suppressEvents) if (!this._gc) {
+                                       if (this.vars.onRepeat) {
+                                               this.vars.onRepeat.apply(this.vars.onRepeatScope || this, this.vars.onRepeatParams || _blankArray);
+                                       }
+                               }
+                               if (wrap) {
+                                       prevTime = (backwards) ? this._duration + 0.000001 : -0.000001;
+                                       this.render(prevTime, true, false);
+                               }
+                               this._time = recTime;
+                               this._totalTime = recTotalTime;
+                               this._cycle = recCycle;
+                               this._rawPrevTime = recRawPrevTime;
+                               this._locked = false;
+                       }
+
+                       if (this._time === prevTime && !force) {
+                               if (prevTotalTime !== this._totalTime) if (this._onUpdate) if (!suppressEvents) { //so that onUpdate fires even during the repeatDelay - as long as the totalTime changed, we should trigger onUpdate.
+                                       this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                               }
+                               return;
+                       } else if (!this._initted) {
+                               this._initted = true;
+                       }
+
+                       if (prevTotalTime === 0) if (this.vars.onStart) if (this._totalTime !== 0) if (!suppressEvents) {
+                               this.vars.onStart.apply(this.vars.onStartScope || this, this.vars.onStartParams || _blankArray);
+                       }
+
+                       if (this._time > prevTime) {
+                               tween = this._first;
+                               while (tween) {
+                                       next = tween._next; //record it here because the value could change after rendering...
+                                       if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                                               break;
+                                       } else if (tween._active || (tween._startTime <= this._time && !tween._paused && !tween._gc)) {
+                                               if (!tween._reversed) {
+                                                       tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, false);
+                                               } else {
+                                                       tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, false);
+                                               }
+
+                                       }
+                                       tween = next;
+                               }
+                       } else {
+                               tween = this._last;
+                               while (tween) {
+                                       next = tween._prev; //record it here because the value could change after rendering...
+                                       if (this._paused && !prevPaused) { //in case a tween pauses the timeline when rendering
+                                               break;
+                                       } else if (tween._active || (tween._startTime <= prevTime && !tween._paused && !tween._gc)) {
+                                               if (!tween._reversed) {
+                                                       tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, false);
+                                               } else {
+                                                       tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, false);
+                                               }
+
+                                       }
+                                       tween = next;
+                               }
+                       }
+
+                       if (this._onUpdate) if (!suppressEvents) {
+                               this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                       }
+                       if (callback) if (!this._locked) if (!this._gc) if (prevStart === this._startTime || prevTimeScale !== this._timeScale) if (this._time === 0 || totalDur >= this.totalDuration()) { //if one of the tweens that was rendered altered this timeline's startTime (like if an onComplete reversed the timeline), it probably isn't complete. If it is, don't worry, because whatever call altered the startTime would complete if it was necessary at the new time. The only exception is the timeScale property. Also check _gc because there's a chance that kill() could be called in an onUpdate
+                               if (isComplete) {
+                                       if (this._timeline.autoRemoveChildren) {
+                                               this._enabled(false, false);
+                                       }
+                                       this._active = false;
+                               }
+                               if (!suppressEvents) if (this.vars[callback]) {
+                                       this.vars[callback].apply(this.vars[callback + "Scope"] || this, this.vars[callback + "Params"] || _blankArray);
+                               }
+                       }
+               };
+
+               p.getActive = function(nested, tweens, timelines) {
+                       if (nested == null) {
+                               nested = true;
+                       }
+                       if (tweens == null) {
+                               tweens = true;
+                       }
+                       if (timelines == null) {
+                               timelines = false;
+                       }
+                       var a = [],
+                               all = this.getChildren(nested, tweens, timelines),
+                               cnt = 0,
+                               l = all.length,
+                               i, tween;
+                       for (i = 0; i < l; i++) {
+                               tween = all[i];
+                               //note: we cannot just check tween.active because timelines that contain paused children will continue to have "active" set to true even after the playhead passes their end point (technically a timeline can only be considered complete after all of its children have completed too, but paused tweens are...well...just waiting and until they're unpaused we don't know where their end point will be).
+                               if (!tween._paused) if (tween._timeline._time >= tween._startTime) if (tween._timeline._time < tween._startTime + tween._totalDuration / tween._timeScale) if (!_getGlobalPaused(tween._timeline)) {
+                                       a[cnt++] = tween;
+                               }
+                       }
+                       return a;
+               };
+
+
+               p.getLabelAfter = function(time) {
+                       if (!time) if (time !== 0) { //faster than isNan()
+                               time = this._time;
+                       }
+                       var labels = this.getLabelsArray(),
+                               l = labels.length,
+                               i;
+                       for (i = 0; i < l; i++) {
+                               if (labels[i].time > time) {
+                                       return labels[i].name;
+                               }
+                       }
+                       return null;
+               };
+
+               p.getLabelBefore = function(time) {
+                       if (time == null) {
+                               time = this._time;
+                       }
+                       var labels = this.getLabelsArray(),
+                               i = labels.length;
+                       while (--i > -1) {
+                               if (labels[i].time < time) {
+                                       return labels[i].name;
+                               }
+                       }
+                       return null;
+               };
+
+               p.getLabelsArray = function() {
+                       var a = [],
+                               cnt = 0,
+                               p;
+                       for (p in this._labels) {
+                               a[cnt++] = {time:this._labels[p], name:p};
+                       }
+                       a.sort(function(a,b) {
+                               return a.time - b.time;
+                       });
+                       return a;
+               };
+
+
+//---- GETTERS / SETTERS -------------------------------------------------------------------------------------------------------
+
+               p.progress = function(value) {
+                       return (!arguments.length) ? this._time / this.duration() : this.totalTime( this.duration() * ((this._yoyo && (this._cycle & 1) !== 0) ? 1 - value : value) + (this._cycle * (this._duration + this._repeatDelay)), false);
+               };
+
+               p.totalProgress = function(value) {
+                       return (!arguments.length) ? this._totalTime / this.totalDuration() : this.totalTime( this.totalDuration() * value, false);
+               };
+
+               p.totalDuration = function(value) {
+                       if (!arguments.length) {
+                               if (this._dirty) {
+                                       TimelineLite.prototype.totalDuration.call(this); //just forces refresh
+                                       //Instead of Infinity, we use 999999999999 so that we can accommodate reverses.
+                                       this._totalDuration = (this._repeat === -1) ? 999999999999 : this._duration * (this._repeat + 1) + (this._repeatDelay * this._repeat);
+                               }
+                               return this._totalDuration;
+                       }
+                       return (this._repeat === -1) ? this : this.duration( (value - (this._repeat * this._repeatDelay)) / (this._repeat + 1) );
+               };
+
+               p.time = function(value, suppressEvents) {
+                       if (!arguments.length) {
+                               return this._time;
+                       }
+                       if (this._dirty) {
+                               this.totalDuration();
+                       }
+                       if (value > this._duration) {
+                               value = this._duration;
+                       }
+                       if (this._yoyo && (this._cycle & 1) !== 0) {
+                               value = (this._duration - value) + (this._cycle * (this._duration + this._repeatDelay));
+                       } else if (this._repeat !== 0) {
+                               value += this._cycle * (this._duration + this._repeatDelay);
+                       }
+                       return this.totalTime(value, suppressEvents);
+               };
+
+               p.repeat = function(value) {
+                       if (!arguments.length) {
+                               return this._repeat;
+                       }
+                       this._repeat = value;
+                       return this._uncache(true);
+               };
+
+               p.repeatDelay = function(value) {
+                       if (!arguments.length) {
+                               return this._repeatDelay;
+                       }
+                       this._repeatDelay = value;
+                       return this._uncache(true);
+               };
+
+               p.yoyo = function(value) {
+                       if (!arguments.length) {
+                               return this._yoyo;
+                       }
+                       this._yoyo = value;
+                       return this;
+               };
+
+               p.currentLabel = function(value) {
+                       if (!arguments.length) {
+                               return this.getLabelBefore(this._time + 0.00000001);
+                       }
+                       return this.seek(value, true);
+               };
+
+               return TimelineMax;
+
+       }, true);
+       
+
+
+
+
+       
+       
+       
+       
+       
+       
+       
+/*
+ * ----------------------------------------------------------------
+ * BezierPlugin                                                (!BezierPlugin)
+ * ----------------------------------------------------------------
+ */
+       _gsDefine("plugins.BezierPlugin", ["plugins.TweenPlugin"], function(TweenPlugin) {
+
+               var BezierPlugin = function(props, priority) {
+                               TweenPlugin.call(this, "bezier", -1);
+                               this._overwriteProps.pop();
+                               this._func = {};
+                               this._round = {};
+                       },
+                       p = BezierPlugin.prototype = new TweenPlugin("bezier", 1),
+                       _RAD2DEG = 180 / Math.PI,
+                       _DEG2RAD = Math.PI / 180,
+                       _r1 = [],
+                       _r2 = [],
+                       _r3 = [],
+                       _corProps = {},
+                       Segment = function Segment(a, b, c, d) {
+                               this.a = a;
+                               this.b = b;
+                               this.c = c;
+                               this.d = d;
+                               this.da = d - a;
+                               this.ca = c - a;
+                               this.ba = b - a;
+                       },
+                       _correlate = ",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,",
+                       bezierThrough = BezierPlugin.bezierThrough = function(values, curviness, quadratic, basic, correlate, prepend) {
+                               var obj = {},
+                                       props = [],
+                                       first = prepend || values[0],
+                                       i, p, a, j, r, l, seamless, last;
+                               correlate = (typeof(correlate) === "string") ? ","+correlate+"," : _correlate;
+                               if (curviness == null) {
+                                       curviness = 1;
+                               }
+                               for (p in values[0]) {
+                                       props.push(p);
+                               }
+                               //check to see if the last and first values are identical (well, within 0.05). If so, make seamless by appending the second element to the very end of the values array and the 2nd-to-last element to the very beginning (we'll remove those segments later)
+                               if (values.length > 1) {
+                                       last = values[values.length - 1];
+                                       seamless = true;
+                                       i = props.length;
+                                       while (--i > -1) {
+                                               p = props[i];
+                                               if (Math.abs(first[p] - last[p]) > 0.05) { //build in a tolerance of +/-0.05 to accommodate rounding errors. For example, if you set an object's position to 4.945, Flash will make it 4.9
+                                                       seamless = false;
+                                                       break;
+                                               }
+                                       }
+                                       if (seamless) {
+                                               values = values.concat(); //duplicate the array to avoid contaminating the original which the user may be reusing for other tweens
+                                               if (prepend) {
+                                                       values.unshift(prepend);
+                                               }
+                                               values.push(values[1]);
+                                               prepend = values[values.length - 3];
+                                       }
+                               }
+                               _r1.length = _r2.length = _r3.length = 0;
+                               i = props.length;
+                               while (--i > -1) {
+                                       p = props[i];
+                                       _corProps[p] = (correlate.indexOf(","+p+",") !== -1);
+                                       obj[p] = _parseAnchors(values, p, _corProps[p], prepend);
+                               }
+                               i = _r1.length;
+                               while (--i > -1) {
+                                       _r1[i] = Math.sqrt(_r1[i]);
+                                       _r2[i] = Math.sqrt(_r2[i]);
+                               }
+                               if (!basic) {
+                                       i = props.length;
+                                       while (--i > -1) {
+                                               if (_corProps[p]) {
+                                                       a = obj[props[i]];
+                                                       l = a.length - 1;
+                                                       for (j = 0; j < l; j++) {
+                                                               r = a[j+1].da / _r2[j] + a[j].da / _r1[j];
+                                                               _r3[j] = (_r3[j] || 0) + r * r;
+                                                       }
+                                               }
+                                       }
+                                       i = _r3.length;
+                                       while (--i > -1) {
+                                               _r3[i] = Math.sqrt(_r3[i]);
+                                       }
+                               }
+                               i = props.length;
+                               j = quadratic ? 4 : 1;
+                               while (--i > -1) {
+                                       p = props[i];
+                                       a = obj[p];
+                                       _calculateControlPoints(a, curviness, quadratic, basic, _corProps[p]); //this method requires that _parseAnchors() and _setSegmentRatios() ran first so that _r1, _r2, and _r3 values are populated for all properties
+                                       if (seamless) {
+                                               a.splice(0, j);
+                                               a.splice(a.length - j, j);
+                                       }
+                               }
+                               return obj;
+                       },
+                       _parseBezierData = function(values, type, prepend) {
+                               type = type || "soft";
+                               var obj = {},
+                                       inc = (type === "cubic") ? 3 : 2,
+                                       soft = (type === "soft"),
+                                       props = [],
+                                       a, b, c, d, cur, i, j, l, p, cnt, tmp;
+                               if (soft && prepend) {
+                                       values = [prepend].concat(values);
+                               }
+                               if (values == null || values.length < inc + 1) { throw "invalid Bezier data"; }
+                               for (p in values[0]) {
+                                       props.push(p);
+                               }
+                               i = props.length;
+                               while (--i > -1) {
+                                       p = props[i];
+                                       obj[p] = cur = [];
+                                       cnt = 0;
+                                       l = values.length;
+                                       for (j = 0; j < l; j++) {
+                                               a = (prepend == null) ? values[j][p] : (typeof( (tmp = values[j][p]) ) === "string" && tmp.charAt(1) === "=") ? prepend[p] + Number(tmp.charAt(0) + tmp.substr(2)) : Number(tmp);
+                                               if (soft) if (j > 1) if (j < l - 1) {
+                                                       cur[cnt++] = (a + cur[cnt-2]) / 2;
+                                               }
+                                               cur[cnt++] = a;
+                                       }
+                                       l = cnt - inc + 1;
+                                       cnt = 0;
+                                       for (j = 0; j < l; j += inc) {
+                                               a = cur[j];
+                                               b = cur[j+1];
+                                               c = cur[j+2];
+                                               d = (inc === 2) ? 0 : cur[j+3];
+                                               cur[cnt++] = tmp = (inc === 3) ? new Segment(a, b, c, d) : new Segment(a, (2 * b + a) / 3, (2 * b + c) / 3, c);
+                                       }
+                                       cur.length = cnt;
+                               }
+                               return obj;
+                       },
+                       _parseAnchors = function(values, p, correlate, prepend) {
+                               var a = [],
+                                       l, i, p1, p2, p3, tmp;
+                               if (prepend) {
+                                       values = [prepend].concat(values);
+                                       i = values.length;
+                                       while (--i > -1) {
+                                               if (typeof( (tmp = values[i][p]) ) === "string") if (tmp.charAt(1) === "=") {
+                                                       values[i][p] = prepend[p] + Number(tmp.charAt(0) + tmp.substr(2)); //accommodate relative values. Do it inline instead of breaking it out into a function for speed reasons
+                                               }
+                                       }
+                               }
+                               l = values.length - 2;
+                               if (l < 0) {
+                                       a[0] = new Segment(values[0][p], 0, 0, values[(l < -1) ? 0 : 1][p]);
+                                       return a;
+                               }
+                               for (i = 0; i < l; i++) {
+                                       p1 = values[i][p];
+                                       p2 = values[i+1][p];
+                                       a[i] = new Segment(p1, 0, 0, p2);
+                                       if (correlate) {
+                                               p3 = values[i+2][p];
+                                               _r1[i] = (_r1[i] || 0) + (p2 - p1) * (p2 - p1);
+                                               _r2[i] = (_r2[i] || 0) + (p3 - p2) * (p3 - p2);
+                                       }
+                               }
+                               a[i] = new Segment(values[i][p], 0, 0, values[i+1][p]);
+                               return a;
+                       },
+                       _calculateControlPoints = function(a, curviness, quad, basic, correlate) {
+                               var l = a.length - 1,
+                                       ii = 0,
+                                       cp1 = a[0].a,
+                                       i, p1, p2, p3, seg, m1, m2, mm, cp2, qb, r1, r2, tl;
+                               for (i = 0; i < l; i++) {
+                                       seg = a[ii];
+                                       p1 = seg.a;
+                                       p2 = seg.d;
+                                       p3 = a[ii+1].d;
+
+                                       if (correlate) {
+                                               r1 = _r1[i];
+                                               r2 = _r2[i];
+                                               tl = ((r2 + r1) * curviness * 0.25) / (basic ? 0.5 : _r3[i] || 0.5);
+                                               m1 = p2 - (p2 - p1) * (basic ? curviness * 0.5 : tl / r1);
+                                               m2 = p2 + (p3 - p2) * (basic ? curviness * 0.5 : tl / r2);
+                                               mm = p2 - (m1 + (m2 - m1) * ((r1 * 3 / (r1 + r2)) + 0.5) / 4);
+                                       } else {
+                                               m1 = p2 - (p2 - p1) * curviness * 0.5;
+                                               m2 = p2 + (p3 - p2) * curviness * 0.5;
+                                               mm = p2 - (m1 + m2) / 2;
+                                       }
+                                       m1 += mm;
+                                       m2 += mm;
+
+                                       seg.c = cp2 = m1;
+                                       if (i !== 0) {
+                                               seg.b = cp1;
+                                       } else {
+                                               seg.b = cp1 = seg.a + (seg.c - seg.a) * 0.6; //instead of placing b on a exactly, we move it inline with c so that if the user specifies an ease like Back.easeIn or Elastic.easeIn which goes BEYOND the beginning, it will do so smoothly.
+                                       }
+
+                                       seg.da = p2 - p1;
+                                       seg.ca = cp2 - p1;
+                                       seg.ba = cp1 - p1;
+
+                                       if (quad) {
+                                               qb = cubicToQuadratic(p1, cp1, cp2, p2);
+                                               a.splice(ii, 1, qb[0], qb[1], qb[2], qb[3]);
+                                               ii += 4;
+                                       } else {
+                                               ii++;
+                                       }
+
+                                       cp1 = m2;
+                               }
+                               seg = a[ii];
+                               seg.b = cp1;
+                               seg.c = cp1 + (seg.d - cp1) * 0.4; //instead of placing c on d exactly, we move it inline with b so that if the user specifies an ease like Back.easeOut or Elastic.easeOut which goes BEYOND the end, it will do so smoothly.
+                               seg.da = seg.d - seg.a;
+                               seg.ca = seg.c - seg.a;
+                               seg.ba = cp1 - seg.a;
+                               if (quad) {
+                                       qb = cubicToQuadratic(seg.a, cp1, seg.c, seg.d);
+                                       a.splice(ii, 1, qb[0], qb[1], qb[2], qb[3]);
+                               }
+                       },
+                       cubicToQuadratic = BezierPlugin.cubicToQuadratic = function(a, b, c, d) {
+                               var q1 = {a:a},
+                                       q2 = {},
+                                       q3 = {},
+                                       q4 = {c:d},
+                                       mab = (a + b) / 2,
+                                       mbc = (b + c) / 2,
+                                       mcd = (c + d) / 2,
+                                       mabc = (mab + mbc) / 2,
+                                       mbcd = (mbc + mcd) / 2,
+                                       m8 = (mbcd - mabc) / 8;
+                               q1.b = mab + (a - mab) / 4;
+                               q2.b = mabc + m8;
+                               q1.c = q2.a = (q1.b + q2.b) / 2;
+                               q2.c = q3.a = (mabc + mbcd) / 2;
+                               q3.b = mbcd - m8;
+                               q4.b = mcd + (d - mcd) / 4;
+                               q3.c = q4.a = (q3.b + q4.b) / 2;
+                               return [q1, q2, q3, q4];
+                       },
+                       quadraticToCubic = BezierPlugin.quadraticToCubic = function(a, b, c) {
+                               return new Segment(a, (2 * b + a) / 3, (2 * b + c) / 3, c);
+                       },
+                       _parseLengthData = function(obj, resolution) {
+                               resolution = resolution >> 0 || 6;
+                               var a = [],
+                                       lengths = [],
+                                       d = 0,
+                                       total = 0,
+                                       threshold = resolution - 1,
+                                       segments = [],
+                                       curLS = [], //current length segments array
+                                       p, i, l, index;
+                               for (p in obj) {
+                                       _addCubicLengths(obj[p], a, resolution);
+                               }
+                               l = a.length;
+                               for (i = 0; i < l; i++) {
+                                       d += Math.sqrt(a[i]);
+                                       index = i % resolution;
+                                       curLS[index] = d;
+                                       if (index === threshold) {
+                                               total += d;
+                                               index = (i / resolution) >> 0;
+                                               segments[index] = curLS;
+                                               lengths[index] = total;
+                                               d = 0;
+                                               curLS = [];
+                                       }
+                               }
+                               return {length:total, lengths:lengths, segments:segments};
+                       },
+                       _addCubicLengths = function(a, steps, resolution) {
+                               var inc = 1 / resolution,
+                                       j = a.length,
+                                       d, d1, s, da, ca, ba, p, i, inv, bez, index;
+                               while (--j > -1) {
+                                       bez = a[j];
+                                       s = bez.a;
+                                       da = bez.d - s;
+                                       ca = bez.c - s;
+                                       ba = bez.b - s;
+                                       d = d1 = 0;
+                                       for (i = 1; i <= resolution; i++) {
+                                               p = inc * i;
+                                               inv = 1 - p;
+                                               d = d1 - (d1 = (p * p * da + 3 * inv * (p * ca + inv * ba)) * p);
+                                               index = j * resolution + i - 1;
+                                               steps[index] = (steps[index] || 0) + d * d;
+                                       }
+                               }
+                       };
+
+
+               p.constructor = BezierPlugin;
+               BezierPlugin.API = 2;
+
+               BezierPlugin._cssRegister = function() {
+                       var CSSPlugin = window.com.greensock.plugins.CSSPlugin;
+                       if (!CSSPlugin) {
+                               return;
+                       }
+                       var _internals = CSSPlugin._internals,
+                               _parseToProxy = _internals._parseToProxy,
+                               _setPluginRatio = _internals._setPluginRatio,
+                               CSSPropTween = _internals.CSSPropTween;
+                       _internals._registerComplexSpecialProp("bezier", null, function(t, e, prop, cssp, pt, plugin) {
+                               if (e instanceof Array) {
+                                       e = {values:e};
+                               }
+                               plugin = new BezierPlugin();
+                               var values = e.values,
+                                       l = values.length - 1,
+                                       pluginValues = [],
+                                       v = {},
+                                       i, p, data, transPT;
+                               if (l < 0) {
+                                       return pt;
+                               }
+                               for (i = 0; i <= l; i++) {
+                                       data = _parseToProxy(t, values[i], cssp, pt, plugin, (l !== i));
+                                       pluginValues[i] = data.end;
+                               }
+                               for (p in e) {
+                                       v[p] = e[p]; //duplicate the vars object because we need to alter some things which would cause problems if the user plans to reuse the same vars object for another tween.
+                               }
+                               v.values = pluginValues;
+                               pt = new CSSPropTween(t, "bezier", 0, 0, data.pt, 2);
+                               pt.data = data;
+                               pt.plugin = plugin;
+                               pt.setRatio = _setPluginRatio;
+                               if (v.autoRotate === 0) {
+                                       v.autoRotate = true;
+                               }
+                               if (v.autoRotate) if (!(v.autoRotate instanceof Array)) {
+                                       i = (v.autoRotate === true) ? 0 : Number(v.autoRotate) * _DEG2RAD;
+                                       v.autoRotate = (data.end.left != null) ? [["left","top","rotation",i,true]] : (data.end.x != null) ? [["x","y","rotation",i,true]] : false;
+                               }
+                               if (v.autoRotate) {
+                                       if (!cssp._transform) {
+                                               cssp._enableTransforms(false);
+                                       }
+                                       data.autoRotate = cssp._target._gsTransform;
+                               }
+                               plugin._onInitTween(data.proxy, v, cssp._tween);
+                               return pt;
+                       });
+               };
+
+
+               p._onInitTween = function(target, vars, tween) {
+                       this._target = target;
+                       if (vars instanceof Array) {
+                               vars = {values:vars};
+                       }
+                       this._props = [];
+                       this._timeRes = (vars.timeResolution == null) ? 6 : parseInt(vars.timeResolution, 10);
+                       var values = vars.values || [],
+                               first = {},
+                               second = values[0],
+                               autoRotate = vars.autoRotate || tween.vars.orientToBezier,
+                               p, isFunc, i, j, prepend;
+
+                       this._autoRotate = autoRotate ? (autoRotate instanceof Array) ? autoRotate : [["x","y","rotation",((autoRotate === true) ? 0 : Number(autoRotate) || 0)]] : null;
+                       for (p in second) {
+                               this._props.push(p);
+                       }
+
+                       i = this._props.length;
+                       while (--i > -1) {
+                               p = this._props[i];
+
+                               this._overwriteProps.push(p);
+                               isFunc = this._func[p] = (typeof(target[p]) === "function");
+                               first[p] = (!isFunc) ? parseFloat(target[p]) : target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ]();
+                               if (!prepend) if (first[p] !== values[0][p]) {
+                                       prepend = first;
+                               }
+                       }
+                       this._beziers = (vars.type !== "cubic" && vars.type !== "quadratic" && vars.type !== "soft") ? bezierThrough(values, isNaN(vars.curviness) ? 1 : vars.curviness, false, (vars.type === "thruBasic"), vars.correlate, prepend) : _parseBezierData(values, vars.type, first);
+                       this._segCount = this._beziers[p].length;
+
+                       if (this._timeRes) {
+                               var ld = _parseLengthData(this._beziers, this._timeRes);
+                               this._length = ld.length;
+                               this._lengths = ld.lengths;
+                               this._segments = ld.segments;
+                               this._l1 = this._li = this._s1 = this._si = 0;
+                               this._l2 = this._lengths[0];
+                               this._curSeg = this._segments[0];
+                               this._s2 = this._curSeg[0];
+                               this._prec = 1 / this._curSeg.length;
+                       }
+
+                       if ((autoRotate = this._autoRotate)) {
+                               if (!(autoRotate[0] instanceof Array)) {
+                                       this._autoRotate = autoRotate = [autoRotate];
+                               }
+                               i = autoRotate.length;
+                               while (--i > -1) {
+                                       for (j = 0; j < 3; j++) {
+                                               p = autoRotate[i][j];
+                                               this._func[p] = (typeof(target[p]) === "function") ? target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ] : false;
+                                       }
+                               }
+                       }
+                       return true;
+               };
+
+               //gets called every time the tween updates, passing the new ratio (typically a value between 0 and 1, but not always (for example, if an Elastic.easeOut is used, the value can jump above 1 mid-tween). It will always start and 0 and end at 1.
+               p.setRatio = function(v) {
+                       var segments = this._segCount,
+                               func = this._func,
+                               target = this._target,
+                               curIndex, inv, i, p, b, t, val, l, lengths, curSeg;
+                       if (!this._timeRes) {
+                               curIndex = (v < 0) ? 0 : (v >= 1) ? segments - 1 : (segments * v) >> 0;
+                               t = (v - (curIndex * (1 / segments))) * segments;
+                       } else {
+                               lengths = this._lengths;
+                               curSeg = this._curSeg;
+                               v *= this._length;
+                               i = this._li;
+                               //find the appropriate segment (if the currently cached one isn't correct)
+                               if (v > this._l2 && i < segments - 1) {
+                                       l = segments - 1;
+                                       while (i < l && (this._l2 = lengths[++i]) <= v) {       }
+                                       this._l1 = lengths[i-1];
+                                       this._li = i;
+                                       this._curSeg = curSeg = this._segments[i];
+                                       this._s2 = curSeg[(this._s1 = this._si = 0)];
+                               } else if (v < this._l1 && i > 0) {
+                                       while (i > 0 && (this._l1 = lengths[--i]) >= v) {       }
+                                       if (i === 0 && v < this._l1) {
+                                               this._l1 = 0;
+                                       } else {
+                                               i++;
+                                       }
+                                       this._l2 = lengths[i];
+                                       this._li = i;
+                                       this._curSeg = curSeg = this._segments[i];
+                                       this._s1 = curSeg[(this._si = curSeg.length - 1) - 1] || 0;
+                                       this._s2 = curSeg[this._si];
+                               }
+                               curIndex = i;
+                               //now find the appropriate sub-segment (we split it into the number of pieces that was defined by "precision" and measured each one)
+                               v -= this._l1;
+                               i = this._si;
+                               if (v > this._s2 && i < curSeg.length - 1) {
+                                       l = curSeg.length - 1;
+                                       while (i < l && (this._s2 = curSeg[++i]) <= v) {        }
+                                       this._s1 = curSeg[i-1];
+                                       this._si = i;
+                               } else if (v < this._s1 && i > 0) {
+                                       while (i > 0 && (this._s1 = curSeg[--i]) >= v) {        }
+                                       if (i === 0 && v < this._s1) {
+                                               this._s1 = 0;
+                                       } else {
+                                               i++;
+                                       }
+                                       this._s2 = curSeg[i];
+                                       this._si = i;
+                               }
+                               t = (i + (v - this._s1) / (this._s2 - this._s1)) * this._prec;
+                       }
+                       inv = 1 - t;
+
+                       i = this._props.length;
+                       while (--i > -1) {
+                               p = this._props[i];
+                               b = this._beziers[p][curIndex];
+                               val = (t * t * b.da + 3 * inv * (t * b.ca + inv * b.ba)) * t + b.a;
+                               if (this._round[p]) {
+                                       val = (val + ((val > 0) ? 0.5 : -0.5)) >> 0;
+                               }
+                               if (func[p]) {
+                                       target[p](val);
+                               } else {
+                                       target[p] = val;
+                               }
+                       }
+
+                       if (this._autoRotate) {
+                               var ar = this._autoRotate,
+                                       b2, x1, y1, x2, y2, add, conv;
+                               i = ar.length;
+                               while (--i > -1) {
+                                       p = ar[i][2];
+                                       add = ar[i][3] || 0;
+                                       conv = (ar[i][4] === true) ? 1 : _RAD2DEG;
+                                       b = this._beziers[ar[i][0]][curIndex];
+                                       b2 = this._beziers[ar[i][1]][curIndex];
+
+                                       x1 = b.a + (b.b - b.a) * t;
+                                       x2 = b.b + (b.c - b.b) * t;
+                                       x1 += (x2 - x1) * t;
+                                       x2 += ((b.c + (b.d - b.c) * t) - x2) * t;
+
+                                       y1 = b2.a + (b2.b - b2.a) * t;
+                                       y2 = b2.b + (b2.c - b2.b) * t;
+                                       y1 += (y2 - y1) * t;
+                                       y2 += ((b2.c + (b2.d - b2.c) * t) - y2) * t;
+
+                                       val = Math.atan2(y2 - y1, x2 - x1) * conv + add;
+
+                                       if (func[p]) {
+                                               func[p].call(target, val);
+                                       } else {
+                                               target[p] = val;
+                                       }
+                               }
+                       }
+               };
+
+               p._roundProps = function(lookup, value) {
+                       var op = this._overwriteProps,
+                               i = op.length;
+                       while (--i > -1) {
+                               if (lookup[op[i]] || lookup.bezier || lookup.bezierThrough) {
+                                       this._round[op[i]] = value;
+                               }
+                       }
+               };
+
+               p._kill = function(lookup) {
+                       var a = this._props,
+                               p, i;
+                       for (p in this._beziers) {
+                               if (p in lookup) {
+                                       delete this._beziers[p];
+                                       delete this._func[p];
+                                       i = a.length;
+                                       while (--i > -1) {
+                                               if (a[i] === p) {
+                                                       a.splice(i, 1);
+                                               }
+                                       }
+                               }
+                       }
+                       return TweenPlugin.prototype._kill.call(this, lookup);
+               };
+
+               TweenPlugin.activate([BezierPlugin]);
+               return BezierPlugin;
+
+       }, true);
+
+
+
+
+
+
+       
+       
+       
+       
+       
+       
+       
+       
+/*
+ * ----------------------------------------------------------------
+ * CSSPlugin
+ * ----------------------------------------------------------------
+ */
+       _gsDefine("plugins.CSSPlugin", ["plugins.TweenPlugin","TweenLite"], function(TweenPlugin, TweenLite) {
+
+               "use strict";
+
+               /** @constructor **/
+               var CSSPlugin = function() {
+                               TweenPlugin.call(this, "css");
+                               this._overwriteProps.length = 0;
+                       },
+                       _hasPriority, //turns true whenever a CSSPropTween instance is created that has a priority other than 0. This helps us discern whether or not we should spend the time organizing the linked list or not after a CSSPlugin's _onInitTween() method is called.
+                       _suffixMap, //we set this in _onInitTween() each time as a way to have a persistent variable we can use in other methods like _parse() without having to pass it around as a parameter and we keep _parse() decoupled from a particular CSSPlugin instance
+                       _cs, //computed style (we store this in a shared variable to conserve memory and make minification tighter
+                       _overwriteProps, //alias to the currently instantiating CSSPlugin's _overwriteProps array. We use this closure in order to avoid having to pass a reference around from method to method and aid in minification.
+                       _specialProps = {},
+                       p = CSSPlugin.prototype = new TweenPlugin("css");
+
+               p.constructor = CSSPlugin;
+               CSSPlugin.version = 1.673;
+               CSSPlugin.API = 2;
+               CSSPlugin.defaultTransformPerspective = 0;
+               p = "px"; //we'll reuse the "p" variable to keep file size down
+               CSSPlugin.suffixMap = {top:p, right:p, bottom:p, left:p, width:p, height:p, fontSize:p, padding:p, margin:p, perspective:p};
+
+
+               var _numExp = /(?:\d|\-\d|\.\d|\-\.\d)+/g,
+                       _relNumExp = /(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,
+                       _valuesExp = /(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi, //finds all the values that begin with numbers or += or -= and then a number. Includes suffixes. We use this to split complex values apart like "1px 5px 20px rgb(255,102,51)"
+                       //_clrNumExp = /(?:\b(?:(?:rgb|rgba)\(.+?\))|\B#.+?\b)/, //only finds rgb(), rgba(), and # (hexadecimal) values but NOT color names like red, blue, etc.
+                       _NaNExp = /[^\d\-\.]/g,
+                       _suffixExp = /(?:\d|\-|\+|=|#|\.)*/g,
+                       _opacityExp = /opacity *= *([^)]*)/,
+                       _opacityValExp = /opacity:([^;]*)/,
+                       _alphaFilterExp = /alpha\(opacity *=.+?\)/i,
+                       _capsExp = /([A-Z])/g,
+                       _camelExp = /-([a-z])/gi,
+                       _urlExp = /(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi, //for pulling out urls from url(...) or url("...") strings (some browsers wrap urls in quotes, some don't when reporting things like backgroundImage)
+                       _camelFunc = function(s, g) { return g.toUpperCase(); },
+                       _horizExp = /(?:Left|Right|Width)/i,
+                       _ieGetMatrixExp = /(M11|M12|M21|M22)=[\d\-\.e]+/gi,
+                       _ieSetMatrixExp = /progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,
+                       _DEG2RAD = Math.PI / 180,
+                       _RAD2DEG = 180 / Math.PI,
+                       _forcePT = {},
+                       _doc = document,
+                       _tempDiv = _doc.createElement("div"),
+                       _tempImg = _doc.createElement("img"),
+                       _internals = CSSPlugin._internals = {_specialProps:_specialProps}, //provides a hook to a few internal methods that we need to access from inside other plugins
+                       _agent = navigator.userAgent,
+                       _autoRound,
+                       _reqSafariFix, //we won't apply the Safari transform fix until we actually come across a tween that affects a transform property (to maintain best performance).
+
+                       _isSafari,
+                       _isFirefox, //Firefox has a bug that causes 3D transformed elements to randomly disappear unless a repaint is forced after each update on each element.
+                       _isSafariLT6, //Safari (and Android 4 which uses a flavor of Safari) has a bug that prevents changes to "top" and "left" properties from rendering properly if changed on the same frame as a transform UNLESS we set the element's WebkitBackfaceVisibility to hidden (weird, I know). Doing this for Android 3 and earlier seems to actually cause other problems, though (fun!)
+                       _ieVers,
+                       _supportsOpacity = (function() { //we set _isSafari, _ieVers, _isFirefox, and _supportsOpacity all in one function here to reduce file size slightly, especially in the minified version.
+                               var i = _agent.indexOf("Android"),
+                                       d = _doc.createElement("div"), a;
+
+                               _isSafari = (_agent.indexOf("Safari") !== -1 && _agent.indexOf("Chrome") === -1 && (i === -1 || Number(_agent.substr(i+8, 1)) > 3));
+                               _isSafariLT6 = (_isSafari && (Number(_agent.substr(_agent.indexOf("Version/")+8, 1)) < 6));
+                               _isFirefox = (_agent.indexOf("Firefox") !== -1);
+
+                               (/MSIE ([0-9]{1,}[\.0-9]{0,})/).exec(_agent);
+                               _ieVers = parseFloat( RegExp.$1 );
+
+                               d.innerHTML = "<a style='top:1px;opacity:.55;'>a</a>";
+                               a = d.getElementsByTagName("a")[0];
+                               return a ? /^0.55/.test(a.style.opacity) : false;
+                       }()),
+                       _getIEOpacity = function(v) {
+                               return (_opacityExp.test( ((typeof(v) === "string") ? v : (v.currentStyle ? v.currentStyle.filter : v.style.filter) || "") ) ? ( parseFloat( RegExp.$1 ) / 100 ) : 1);
+                       },
+                       _log = function(s) {//for logging messages, but in a way that won't throw errors in old versions of IE.
+                               if (window.console) {
+                                       console.log(s);
+                               }
+                       },
+                       _prefixCSS = "", //the non-camelCase vendor prefix like "-o-", "-moz-", "-ms-", or "-webkit-"
+                       _prefix = "", //camelCase vendor prefix like "O", "ms", "Webkit", or "Moz".
+
+                       //@private feed in a camelCase property name like "transform" and it will check to see if it is valid as-is or if it needs a vendor prefix. It returns the corrected camelCase property name (i.e. "WebkitTransform" or "MozTransform" or "transform" or null if no such property is found, like if the browser is IE8 or before, "transform" won't be found at all)
+                       _checkPropPrefix = function(p, e) {
+                               e = e || _tempDiv;
+                               var s = e.style,
+                                       a, i;
+                               if (s[p] !== undefined) {
+                                       return p;
+                               }
+                               p = p.charAt(0).toUpperCase() + p.substr(1);
+                               a = ["O","Moz","ms","Ms","Webkit"];
+                               i = 5;
+                               while (--i > -1 && s[a[i]+p] === undefined) { }
+                               if (i >= 0) {
+                                       _prefix = (i === 3) ? "ms" : a[i];
+                                       _prefixCSS = "-" + _prefix.toLowerCase() + "-";
+                                       return _prefix + p;
+                               }
+                               return null;
+                       },
+
+                       _getComputedStyle = _doc.defaultView ? _doc.defaultView.getComputedStyle : function() {},
+
+                       /**
+                        * @private Returns the css style for a particular property of an element. For example, to get whatever the current "left" css value for an element with an ID of "myElement", you could do:
+                        * var currentLeft = CSSPlugin.getStyle( document.getElementById("myElement"), "left");
+                        *
+                        * @param {!Object} t Target element whose style property you want to query
+                        * @param {!string} p Property name (like "left" or "top" or "marginTop", etc.)
+                        * @param {Object=} cs Computed style object. This just provides a way to speed processing if you're going to get several properties on the same element in quick succession - you can reuse the result of the getComputedStyle() call.
+                        * @param {boolean=} calc If true, the value will not be read directly from the element's "style" property (if it exists there), but instead the getComputedStyle() result will be used. This can be useful when you want to ensure that the browser itself is interpreting the value.
+                        * @param {string=} dflt Default value that should be returned in the place of null, "none", "auto" or "auto auto".
+                        * @return {?string} The current property value
+                        */
+                       _getStyle = CSSPlugin.getStyle = function(t, p, cs, calc, dflt) {
+                               var rv;
+                               if (!_supportsOpacity) if (p === "opacity") { //several versions of IE don't use the standard "opacity" property - they use things like filter:alpha(opacity=50), so we parse that here.
+                                       return _getIEOpacity(t);
+                               }
+                               if (!calc && t.style[p]) {
+                                       rv = t.style[p];
+                               } else if ((cs = cs || _getComputedStyle(t, null))) {
+                                       t = cs.getPropertyValue(p.replace(_capsExp, "-$1").toLowerCase());
+                                       rv = (t || cs.length) ? t : cs[p]; //Opera behaves VERY strangely - length is usually 0 and cs[p] is the only way to get accurate results EXCEPT when checking for -o-transform which only works with cs.getPropertyValue()!
+                               } else if (t.currentStyle) {
+                                       cs = t.currentStyle;
+                                       rv = cs[p];
+                               }
+                               return (dflt != null && (!rv || rv === "none" || rv === "auto" || rv === "auto auto")) ? dflt : rv;
+                       },
+
+                       //@private returns at object containing ALL of the style properties in camelCase and their associated values.
+                       _getAllStyles = function(t, cs, keepOverwritten) {
+                               var s = {},
+                                       pt = t._gsOverwrittenClassNamePT,
+                                       i, tr;
+
+                               if (pt && !keepOverwritten) {
+                                       while (pt) {
+                                               pt.setRatio(0);
+                                               pt = pt._next;
+                                       }
+                                       t._gsOverwrittenClassNamePT = null;
+                               }
+
+                               if ((cs = cs || _getComputedStyle(t, null))) {
+                                       if ((i = cs.length)) {
+                                               while (--i > -1) {
+                                                       s[cs[i].replace(_camelExp, _camelFunc)] = cs.getPropertyValue(cs[i]);
+                                               }
+                                       } else { //Opera behaves differently - cs.length is always 0, so we must do a for...in loop.
+                                               for (i in cs) {
+                                                       s[i] = cs[i];
+                                               }
+                                       }
+                               } else if ((cs = t.currentStyle || t.style)) {
+                                       for (i in cs) {
+                                               s[i.replace(_camelExp, _camelFunc)] = cs[i];
+                                       }
+                               }
+                               if (!_supportsOpacity) {
+                                       s.opacity = _getIEOpacity(t);
+                               }
+                               tr = _getTransform(t, cs, false);
+                               s.rotation = tr.rotation * _RAD2DEG;
+                               s.skewX = tr.skewX * _RAD2DEG;
+                               s.scaleX = tr.scaleX;
+                               s.scaleY = tr.scaleY;
+                               s.x = tr.x;
+                               s.y = tr.y;
+                               if (_supports3D) {
+                                       s.z = tr.z;
+                                       s.rotationX = tr.rotationX * _RAD2DEG;
+                                       s.rotationY = tr.rotationY * _RAD2DEG;
+                                       s.scaleZ = tr.scaleZ;
+                               }
+                               if (s.filters) {
+                                       delete s.filters;
+                               }
+                               return s;
+                       },
+
+                       //@private analyzes two style objects (as returned by _getAllStyles()) and only looks for differences between them that contain tweenable values (like a number or color). It returns an object a "difs" property which refers to an object containing only those isolated properties and values for tweening, and a "firstMPT" property which refers to the first MiniPropTween instance in a linked list that recorded all the starting values of the different properties so that we can revert to them at the end or beginning of the tween - we don't want the cascading to get messed up
+                       _cssDif = function(t, s1, s2, vars) {
+                               var difs = {},
+                                       style = t.style,
+                                       val, p, mpt;
+                               for (p in s2) {
+                                       if (p !== "cssText") if (p !== "length") if (isNaN(p)) if (s1[p] !== (val = s2[p])) if (p.indexOf("Origin") === -1) if (typeof(val) === "number" || typeof(val) === "string") {
+                                               difs[p] = ((val === "" || val === "auto" || val === "none") && typeof(s1[p]) === "string" && s1[p].replace(_NaNExp, "") !== "") ? 0 : val; //if the ending value is defaulting ("" or "auto"), we check the starting value and if it can be parsed into a number (a string which could have a suffix too, like 700px), then we swap in 0 for "" or "auto" so that things actually tween.
+                                               if (style[p] !== undefined) {
+                                                       mpt = new MiniPropTween(style, p, style[p], mpt);
+                                               }
+                                       }
+                               }
+                               if (vars) {
+                                       for (p in vars) { //copy properties (except className)
+                                               if (p !== "className") {
+                                                       difs[p] = vars[p];
+                                               }
+                                       }
+                               }
+                               return {difs:difs, firstMPT:mpt};
+                       },
+                       _dimensions = {width:["Left","Right"], height:["Top","Bottom"]},
+                       _margins = ["marginLeft","marginRight","marginTop","marginBottom"],
+
+                       /**
+                        * @private Gets the width or height of an element
+                        * @param {!Object} t Target element
+                        * @param {!string} p Property name ("width" or "height")
+                        * @param {Object=} cs Computed style object (if one exists). Just a speed optimization.
+                        * @return {number} Dimension (in pixels)
+                        */
+                       _getDimension = function(t, p, cs) {
+                               var v = parseFloat((p === "width") ? t.offsetWidth : t.offsetHeight),
+                                       a = _dimensions[p],
+                                       i = a.length;
+                               cs = cs || _getComputedStyle(t, null);
+                               while (--i > -1) {
+                                       v -= parseFloat( _getStyle(t, "padding" + a[i], cs, true) ) || 0;
+                                       v -= parseFloat( _getStyle(t, "border" + a[i] + "Width", cs, true) ) || 0;
+                               }
+                               return v;
+                       },
+
+                       /**
+                        * @private Pass the target element, the property name, the numeric value, and the suffix (like "%", "em", "px", etc.) and it will spit back the equivalent pixel number.
+                        * @param {!Object} t Target element
+                        * @param {!string} p Property name (like "left", "top", "marginLeft", etc.)
+                        * @param {!number} v Value
+                        * @param {string=} sfx Suffix (like "px" or "%" or "em")
+                        * @param {boolean=} recurse If true, the call is a recursive one. In some browsers (like IE7/8), occasionally the value isn't accurately reported initially, but if we run the function again it will take effect.
+                        * @return {number} value in pixels
+                        */
+                       _convertToPixels = function(t, p, v, sfx, recurse) {
+                               if (sfx === "px" || !sfx) { return v; }
+                               if (sfx === "auto" || !v) { return 0; }
+                               var horiz = _horizExp.test(p),
+                                       node = t,
+                                       style = _tempDiv.style,
+                                       neg = (v < 0),
+                                       pix;
+                               if (neg) {
+                                       v = -v;
+                               }
+                               if (sfx === "%" && p.indexOf("border") !== -1) {
+                                       pix = (v / 100) * (horiz ? t.clientWidth : t.clientHeight);
+                               } else {
+                                       style.cssText = "border-style:solid; border-width:0; position:absolute; line-height:0;";
+                                       if (sfx === "%" || sfx === "em" || !node.appendChild) {
+                                               node = t.parentNode || _doc.body;
+                                               style[(horiz ? "width" : "height")] = v + sfx;
+                                       } else {
+                                               style[(horiz ? "borderLeftWidth" : "borderTopWidth")] = v + sfx;
+                                       }
+                                       node.appendChild(_tempDiv);
+                                       pix = parseFloat(_tempDiv[(horiz ? "offsetWidth" : "offsetHeight")]);
+                                       node.removeChild(_tempDiv);
+                                       if (pix === 0 && !recurse) {
+                                               pix = _convertToPixels(t, p, v, sfx, true);
+                                       }
+                               }
+                               return neg ? -pix : pix;
+                       },
+
+                       //@private Parses position-related complex strings like "top left" or "50px 10px" or "70% 20%", etc. which are used for things like transformOrigin or backgroundPosition. Optionally decorates a supplied object (recObj) with the following properties: "ox" (offsetX), "oy" (offsetY), "oxp" (if true, "ox" is a percentage not a pixel value), and "oxy" (if true, "oy" is a percentage not a pixel value)
+                       _parsePosition = function(v, recObj) {
+                               if (v == null || v === "" || v === "auto" || v === "auto auto") { //note: Firefox uses "auto auto" as default whereas Chrome uses "auto".
+                                       v = "0 0";
+                               }
+                               var a = v.split(" "),
+                                       x = (v.indexOf("left") !== -1) ? "0%" : (v.indexOf("right") !== -1) ? "100%" : a[0],
+                                       y = (v.indexOf("top") !== -1) ? "0%" : (v.indexOf("bottom") !== -1) ? "100%" : a[1];
+                               if (y == null) {
+                                       y = "0";
+                               } else if (y === "center") {
+                                       y = "50%";
+                               }
+                               if (x === "center" || isNaN(parseFloat(x))) { //remember, the user could flip-flop the values and say "bottom center" or "center bottom", etc. "center" is ambiguous because it could be used to describe horizontal or vertical, hence the isNaN().
+                                       x = "50%";
+                               }
+                               if (recObj) {
+                                       recObj.oxp = (x.indexOf("%") !== -1);
+                                       recObj.oyp = (y.indexOf("%") !== -1);
+                                       recObj.oxr = (x.charAt(1) === "=");
+                                       recObj.oyr = (y.charAt(1) === "=");
+                                       recObj.ox = parseFloat(x.replace(_NaNExp, ""));
+                                       recObj.oy = parseFloat(y.replace(_NaNExp, ""));
+                               }
+                               return x + " " + y + ((a.length > 2) ? " " + a[2] : "");
+                       },
+
+                       /**
+                        * @private Takes an ending value (typically a string, but can be a number) and a starting value and returns the change between the two, looking for relative value indicators like += and -= and it also ignores suffixes (but make sure the ending value starts with a number or +=/-= and that the starting value is a NUMBER!)
+                        * @param {(number|string)} e End value which is typically a string, but could be a number
+                        * @param {(number|string)} b Beginning value which is typically a string but could be a number
+                        * @return {number} Amount of change between the beginning and ending values (relative values that have a "+=" or "-=" are recognized)
+                        */
+                       _parseChange = function(e, b) {
+                               return (typeof(e) === "string" && e.charAt(1) === "=") ? parseInt(e.charAt(0) + "1", 10) * parseFloat(e.substr(2)) : parseFloat(e) - parseFloat(b);
+                       },
+
+                       /**
+                        * @private Takes a value and a default number, checks if the value is relative, null, or numeric and spits back a normalized number accordingly. Primarily used in the _parseTransform() function.
+                        * @param {Object} v Value to be parsed
+                        * @param {!number} d Default value (which is also used for relative calculations if "+=" or "-=" is found in the first parameter)
+                        * @return {number} Parsed value
+                        */
+                       _parseVal = function(v, d) {
+                               return (v == null) ? d : (typeof(v) === "string" && v.charAt(1) === "=") ? parseInt(v.charAt(0) + "1", 10) * Number(v.substr(2)) + d : parseFloat(v);
+                       },
+
+                       /**
+                        * @private Translates strings like "40deg" or "40" or 40rad" or "+=40deg" to a numeric radian angle, optionally relative to a default value (if "+=" or "-=" prefix is found)
+                        * @param {Object} v Value to be parsed
+                        * @param {!number} d Default value (which is also used for relative calculations if "+=" or "-=" is found in the first parameter)
+                        * @return {number} parsed angle in radians
+                        */
+                       _parseAngle = function(v, d) {
+                               if (v == null) {
+                                       return d;
+                               }
+                               var m = (v.indexOf("rad") === -1) ? _DEG2RAD : 1,
+                                       r = (v.charAt(1) === "=");
+                               v = Number(v.replace(_NaNExp, "")) * m;
+                               return r ? v + d : v;
+                       },
+
+                       /**
+                        * @private Translates an ending rotation value (could be a string or number, relative or not) into a radian number representing the shortest direction (no more than 180 degrees away from the beginning, or Math.PI radians). For example, if b is 0 and e is "270deg", this method would return -Math.PI/2 (-90 degrees).
+                        * @param {(number|string)} e ending/destination rotation value (can be a number or string. If a string, it can be relative or not)
+                        * @param {number} b beginning value
+                        * @return {number} rotation value in radians
+                        */
+                       _parseShortRotation = function(e, b) {
+                               var r = (typeof(e) === "number") ? e * _DEG2RAD : _parseAngle(e, b),
+                                       dif = (r - b) % (Math.PI * 2);
+                               if (dif !== dif % Math.PI) {
+                                       dif += Math.PI * ((dif < 0) ? 2 : -2);
+                               }
+                               return b + dif;
+                       },
+
+                       _colorLookup = {aqua:[0,255,255],
+                               lime:[0,255,0],
+                               silver:[192,192,192],
+                               black:[0,0,0],
+                               maroon:[128,0,0],
+                               teal:[0,128,128],
+                               blue:[0,0,255],
+                               navy:[0,0,128],
+                               white:[255,255,255],
+                               fuchsia:[255,0,255],
+                               olive:[128,128,0],
+                               yellow:[255,255,0],
+                               orange:[255,165,0],
+                               gray:[128,128,128],
+                               purple:[128,0,128],
+                               green:[0,128,0],
+                               red:[255,0,0],
+                               pink:[255,192,203],
+                               cyan:[0,255,255],
+                               transparent:[255,255,255,0]},
+
+                       /**
+                        * @private Parses a color (like #9F0, #FF9900, or rgb(255,51,153)) into an array with 3 elements for red, green, and blue. Also handles rgba() values (splits into array of 4 elements of course)
+                        * @param {(string|number)} v The value the should be parsed which could be a string like #9F0 or rgb(255,102,51) or rgba(255,0,0,0.5) or it could be a number like 0xFF00CC or even a named color like red, blue, purple, etc.
+                        * @return {Array.<number>} An array containing red, green, and blue (and optionally alpha) in that order.
+                        */
+                       _parseColor = function(v) {
+                               if (!v || v === "") {
+                                       return _colorLookup.black;
+                               } else if (_colorLookup[v]) {
+                                       return _colorLookup[v];
+                               } else if (typeof(v) === "number") {
+                                       return [v >> 16, (v >> 8) & 255, v & 255];
+                               } else if (v.charAt(0) === "#") {
+                                       if (v.length === 4) { //for shorthand like #9F0
+                                               var c1 = v.charAt(1),
+                                                       c2 = v.charAt(2),
+                                                       c3 = v.charAt(3);
+                                               v = "#" + c1 + c1 + c2 + c2 + c3 + c3;
+                                       }
+                                       v = parseInt(v.substr(1), 16);
+                                       return [v >> 16, (v >> 8) & 255, v & 255];
+                               }
+                               v = v.match(_numExp)  || _colorLookup.transparent;
+                               v[0] = Number(v[0]);
+                               v[1] = Number(v[1]);
+                               v[2] = Number(v[2]);
+                               if (v.length > 3) {
+                                       v[3] = Number(v[3]);
+                               }
+                               return v;
+                       },
+                       _colorExp = "(?:\\b(?:(?:rgb|rgba)\\(.+?\\))|\\B#.+?\\b"; //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.
+
+               for (p in _colorLookup) {
+                       _colorExp += "|" + p + "\\b";
+               }
+               _colorExp = new RegExp(_colorExp+")", "gi");
+
+               /**
+                * @private Returns a formatter function that handles taking a string (or number in some cases) and returning a consistently formatted one in terms of delimiters, quantity of values, etc. For example, we may get boxShadow values defined as "0px red" or "0px 0px 10px rgb(255,0,0)" or "0px 0px 20px 20px #F00" and we need to ensure that what we get back is described with 4 numbers and a color. This allows us to feed it into the _parseComplex() method and split the values up appropriately. The neat thing about this _getFormatter() function is that the dflt defines a pattern as well as a default, so for example, _getFormatter("0px 0px 0px 0px #777", true) not only sets the default as 0px for all distances and #777 for the color, but also sets the pattern such that 4 numbers and a color will always get returned.
+                * @param {!string} dflt The default value and pattern to follow. So "0px 0px 0px 0px #777" will ensure that 4 numbers and a color will always get returned.
+                * @param {boolean=} clr If true, the values should be searched for color-related data. For example, boxShadow values typically contain a color whereas borderRadius don't.
+                * @param {boolean=} collapsible If true, the value is a top/left/right/bottom style one that acts like margin or padding, where if only one value is received, it's used for all 4; if 2 are received, the first is duplicated for 3rd (bottom) and the 2nd is duplicated for the 4th spot (left), etc.
+                * @return {Function} formatter function
+                */
+               var _getFormatter = function(dflt, clr, collapsible) {
+                               if (dflt == null) {
+                                       return function(v) {return v;};
+                               }
+                               var dColor = clr ? (dflt.match(_colorExp) || [""])[0] : "",
+                                       dVals = dflt.split(dColor).join("").match(_valuesExp) || [],
+                                       pfx = dflt.substr(0, dflt.indexOf(dVals[0])),
+                                       sfx = (dflt.charAt(dflt.length - 1) === ")") ? ")" : "",
+                                       delim = (dflt.indexOf(" ") !== -1) ? " " : ",",
+                                       numVals = dVals.length,
+                                       dSfx = (numVals > 0) ? dVals[0].replace(_numExp, "") : "";
+                               if (clr) {
+                                       return function(v) {
+                                               if (typeof(v) === "number") {
+                                                       v += dSfx;
+                                               }
+                                               var color = (v.match(_colorExp) || [dColor])[0],
+                                                       vals = v.split(color).join("").match(_valuesExp) || [],
+                                                       i = vals.length;
+                                               if (numVals > i--) {
+                                                       while (++i < numVals) {
+                                                               vals[i] = collapsible ? vals[(((i - 1) / 2) >> 0)] : dVals[i];
+                                                       }
+                                               }
+                                               return pfx + vals.join(delim) + delim + color + sfx;
+                                       };
+
+                               }
+                               return function(v) {
+                                       if (typeof(v) === "number") {
+                                               v += dSfx;
+                                       }
+                                       var vals = v.match(_valuesExp) || [],
+                                               i = vals.length;
+                                       if (numVals > i--) {
+                                               while (++i < numVals) {
+                                                       vals[i] = collapsible ? vals[(((i - 1) / 2) >> 0)] : dVals[i];
+                                               }
+                                       }
+                                       return pfx + vals.join(delim) + sfx;
+                               };
+                       },
+
+                       /**
+                        * @private returns a formatter function that's used for edge-related values like marginTop, marginLeft, paddingBottom, paddingRight, etc. Just pass a comma-delimited list of property names related to the edges.
+                        * @param {!string} props a comma-delimited list of property names in order from top to left, like "marginTop,marginRight,marginBottom,marginLeft"
+                        * @return {Function} a formatter function
+                        */
+                       _getEdgeParser = function(props) {
+                               props = props.split(",");
+                               return function(t, e, p, cssp, pt, plugin, vars) {
+                                       var a = (e + "").split(" "),
+                                               i;
+                                       vars = {};
+                                       for (i = 0; i < 4; i++) {
+                                               vars[props[i]] = a[i] = a[i] || a[(((i - 1) / 2) >> 0)];
+                                       }
+                                       return cssp.parse(t, vars, pt, plugin);
+                               };
+                       },
+
+                       //@private used when other plugins must tween values first, like BezierPlugin or ThrowPropsPlugin, etc. That plugin's setRatio() gets called first so that the values are updated, and then we loop through the MiniPropTweens  which handle copying the values into their appropriate slots so that they can then be applied correctly in the main CSSPlugin setRatio() method. Remember, we typically create a proxy object that has a bunch of uniquely-named properties that we feed to the sub-plugin and it does its magic normally, and then we must interpret those values and apply them to the css because often numbers must get combined/concatenated, suffixes added, etc. to work with css, like boxShadow could have 4 values plus a color.
+                       _setPluginRatio = _internals._setPluginRatio = function(v) {
+                               this.plugin.setRatio(v);
+                               var d = this.data,
+                                       proxy = d.proxy,
+                                       mpt = d.firstMPT,
+                                       min = 0.000001,
+                                       val, pt, i, str;
+                               while (mpt) {
+                                       val = proxy[mpt.v];
+                                       if (mpt.r) {
+                                               val = (val > 0) ? (val + 0.5) >> 0 : (val - 0.5) >> 0;
+                                       } else if (val < min && val > -min) {
+                                               val = 0;
+                                       }
+                                       mpt.t[mpt.p] = val;
+                                       mpt = mpt._next;
+                               }
+                               if (d.autoRotate) {
+                                       d.autoRotate.rotation = proxy.rotation;
+                               }
+                               //at the end, we must set the CSSPropTween's "e" (end) value dynamically here because that's what is used in the final setRatio() method.
+                               if (v === 1) {
+                                       mpt = d.firstMPT;
+                                       while (mpt) {
+                                               pt = mpt.t;
+                                               if (!pt.type) {
+                                                       pt.e = pt.s + pt.xs0;
+                                               } else if (pt.type === 1) {
+                                                       str = pt.xs0 + pt.s + pt.xs1;
+                                                       for (i = 1; i < pt.l; i++) {
+                                                               str += pt["xn"+i] + pt["xs"+(i+1)];
+                                                       }
+                                                       pt.e = str;
+                                               }
+                                               mpt = mpt._next;
+                                       }
+                               }
+                       },
+
+                       /**
+                        * @private @constructor Used by a few SpecialProps to hold important values for proxies. For example, _parseToProxy() creates a MiniPropTween instance for each property that must get tweened on the proxy, and we record the original property name as well as the unique one we create for the proxy, plus whether or not the value needs to be rounded plus the original value.
+                        * @param {!Object} t target object whose property we're tweening (often a CSSPropTween)
+                        * @param {!string} p property name
+                        * @param {(number|string|object)} v value
+                        * @param {MiniPropTween=} next next MiniPropTween in the linked list
+                        * @param {boolean=} r if true, the tweened value should be rounded to the nearest integer
+                        */
+                       MiniPropTween = function(t, p, v, next, r) {
+                               this.t = t;
+                               this.p = p;
+                               this.v = v;
+                               this.r = r;
+                               if (next) {
+                                       next._prev = this;
+                                       this._next = next;
+                               }
+                       },
+
+                       /**
+                        * @private Most other plugins (like BezierPlugin and ThrowPropsPlugin and others) can only tween numeric values, but CSSPlugin must accommodate special values that have a bunch of extra data (like a suffix or strings between numeric values, etc.). For example, boxShadow has values like "10px 10px 20px 30px rgb(255,0,0)" which would utterly confuse other plugins. This method allows us to split that data apart and grab only the numeric data and attach it to uniquely-named properties of a generic proxy object ({}) so that we can feed that to virtually any plugin to have the numbers tweened. However, we must also keep track of which properties from the proxy go with which CSSPropTween values and instances. So we create a linked list of MiniPropTweens. Each one records a target (the original CSSPropTween), property (like "s" or "xn1" or "xn2") that we're tweening and the unique property name that was used for the proxy (like "boxShadow_xn1" and "boxShadow_xn2") and whether or not they need to be rounded. That way, in the _setPluginRatio() method we can simply copy the values over from the proxy to the CSSPropTween instance(s). Then, when the main CSSPlugin setRatio() method runs and applies the CSSPropTween values accordingly, they're updated nicely. So the external plugin tweens the numbers, _setPluginRatio() copies them over, and setRatio() acts normally, applying css-specific values to the element.
+                        * This method returns an object that has the following properties:
+                        *  - proxy: a generic object containing the starting values for all the properties that will be tweened by the external plugin.  This is what we feed to the external _onInitTween() as the target
+                        *  - end: a generic object containing the ending values for all the properties that will be tweened by the external plugin. This is what we feed to the external plugin's _onInitTween() as the destination values
+                        *  - firstMPT: the first MiniPropTween in the linked list
+                        *  - pt: the first CSSPropTween in the linked list that was created when parsing. If shallow is true, this linked list will NOT attach to the one passed into the _parseToProxy() as the "pt" (4th) parameter.
+                        * @param {!Object} t target object to be tweened
+                        * @param {!(Object|string)} vars the object containing the information about the tweening values (typically the end/destination values) that should be parsed
+                        * @param {!CSSPlugin} cssp The CSSPlugin instance
+                        * @param {CSSPropTween=} pt the next CSSPropTween in the linked list
+                        * @param {TweenPlugin=} plugin the external TweenPlugin instance that will be handling tweening the numeric values
+                        * @param {boolean=} shallow if true, the resulting linked list from the parse will NOT be attached to the CSSPropTween that was passed in as the "pt" (4th) parameter.
+                        * @return An object containing the following properties: proxy, end, firstMPT, and pt (see above for descriptions)
+                        */
+                       _parseToProxy = _internals._parseToProxy = function(t, vars, cssp, pt, plugin, shallow) {
+                               var bpt = pt,
+                                       start = {},
+                                       end = {},
+                                       transform = cssp._transform,
+                                       oldForce = _forcePT,
+                                       i, p, xp, mpt, firstPT;
+                               cssp._transform = null;
+                               _forcePT = vars;
+                               pt = firstPT = cssp.parse(t, vars, pt, plugin);
+                               _forcePT = oldForce;
+                               //break off from the linked list so the new ones are isolated.
+                               if (shallow) {
+                                       cssp._transform = transform;
+                                       if (bpt) {
+                                               bpt._prev = null;
+                                               if (bpt._prev) {
+                                                       bpt._prev._next = null;
+                                               }
+                                       }
+                               }
+                               while (pt && pt !== bpt) {
+                                       if (pt.type <= 1) {
+                                               p = pt.p;
+                                               end[p] = pt.s + pt.c;
+                                               start[p] = pt.s;
+                                               if (!shallow) {
+                                                       mpt = new MiniPropTween(pt, "s", p, mpt, pt.r);
+                                                       pt.c = 0;
+                                               }
+                                               if (pt.type === 1) {
+                                                       i = pt.l;
+                                                       while (--i > 0) {
+                                                               xp = "xn" + i;
+                                                               p = pt.p + "_" + xp;
+                                                               end[p] = pt.data[xp];
+                                                               start[p] = pt[xp];
+                                                               if (!shallow) {
+                                                                       mpt = new MiniPropTween(pt, xp, p, mpt, pt.rxp[xp]);
+                                                               }
+                                                       }
+                                               }
+                                       }
+                                       pt = pt._next;
+                               }
+                               return {proxy:start, end:end, firstMPT:mpt, pt:firstPT};
+                       },
+
+
+
+                       /**
+                        * @constructor Each property that is tweened has at least one CSSPropTween associated with it. These instances store important information like the target, property, starting value, amount of change, etc. They can also optionally have a number of "extra" strings and numeric values named xs1, xn1, xs2, xn2, xs3, xn3, etc. where "s" indicates string and "n" indicates number. These can be pieced together in a complex-value tween (type:1) that has alternating types of data like a string, number, string, number, etc. For example, boxShadow could be "5px 5px 8px rgb(102, 102, 51)". In that value, there are 6 numbers that may need to tween and then pieced back together into a string again with spaces, suffixes, etc. xs0 is special in that it stores the suffix for standard (type:0) tweens, -OR- the first string (prefix) in a complex-value (type:1) CSSPropTween -OR- it can be the non-tweening value in a type:-1 CSSPropTween. We do this to conserve memory.
+                        * CSSPropTweens have the following optional properties as well (not defined through the constructor):
+                        *  - l: Length in terms of the number of extra properties that the CSSPropTween has (default: 0). For example, for a boxShadow we may need to tween 5 numbers in which case l would be 5; Keep in mind that the start/end values for the first number that's tweened are always stored in the s and c properties to conserve memory. All additional values thereafter are stored in xn1, xn2, etc.
+                        *  - xfirst: The first instance of any sub-CSSPropTweens that are tweening properties of this instance. For example, we may split up a boxShadow tween so that there's a main CSSPropTween of type:1 that has various xs* and xn* values associated with the h-shadow, v-shadow, blur, color, etc. Then we spawn a CSSPropTween for each of those that has a higher priority and runs BEFORE the main CSSPropTween so that the values are all set by the time it needs to re-assemble them. The xfirst gives us an easy way to identify the first one in that chain which typically ends at the main one (because they're all prepende to the linked list)
+                        *  - plugin: The TweenPlugin instance that will handle the tweening of any complex values. For example, sometimes we don't want to use normal subtweens (like xfirst refers to) to tween the values - we might want ThrowPropsPlugin or BezierPlugin some other plugin to do the actual tweening, so we create a plugin instance and store a reference here. We need this reference so that if we get a request to round values or disable a tween, we can pass along that request.
+                        *  - data: Arbitrary data that needs to be stored with the CSSPropTween. Typically if we're going to have a plugin handle the tweening of a complex-value tween, we create a generic object that stores the END values that we're tweening to and the CSSPropTween's xs1, xs2, etc. have the starting values. We store that object as data. That way, we can simply pass that object to the plugin and use the CSSPropTween as the target.
+                        *  - setRatio: Only used for type:2 tweens that require custom functionality. In this case, we call the CSSPropTween's setRatio() method and pass the ratio each time the tween updates. This isn't quite as efficient as doing things directly in the CSSPlugin's setRatio() method, but it's very convenient and flexible.
+                        * @param {!Object} t Target object whose property will be tweened. Often a DOM element, but not always. It could be anything.
+                        * @param {string} p Property to tween (name). For example, to tween element.width, p would be "width".
+                        * @param {number} s Starting numeric value
+                        * @param {number} c Change in numeric value over the course of the entire tween. For example, if element.width starts at 5 and should end at 100, c would be 95.
+                        * @param {CSSPropTween=} next The next CSSPropTween in the linked list. If one is defined, we will define its _prev as the new instance, and the new instance's _next will be pointed at it.
+                        * @param {number=} type The type of CSSPropTween where -1 = a non-tweening value, 0 = a standard simple tween, 1 = a complex value (like one that has multiple numbers in a comma- or space-delimited string like border:"1px solid red"), and 2 = one that uses a custom setRatio function that does all of the work of applying the values on each update.
+                        * @param {string=} n Name of the property that should be used for overwriting purposes which is typically the same as p but not always. For example, we may need to create a subtween for the 2nd part of a "clip:rect(...)" tween in which case "p" might be xs1 but "n" is still "clip"
+                        * @param {boolean=} r If true, the value(s) should be rounded
+                        * @param {number=} pr Priority in the linked list order. Higher priority CSSPropTweens will be updated before lower priority ones. The default priority is 0.
+                        * @param {string=} b Beginning value. We store this to ensure that it is EXACTLY what it was when the tween began without any risk of interpretation issues.
+                        * @param {string=} e Ending value. We store this to ensure that it is EXACTLY what the user defined at the end of the tween without any risk of interpretation issues.
+                        */
+                       CSSPropTween = _internals.CSSPropTween = function(t, p, s, c, next, type, n, r, pr, b, e) {
+                               this.t = t; //target
+                               this.p = p; //property
+                               this.s = s; //starting value
+                               this.c = c; //change value
+                               this.n = n || "css_" + p; //name that this CSSPropTween should be associated to (usually the same as p, but not always - n is what overwriting looks at)
+                               if (!(t instanceof CSSPropTween)) {
+                                       _overwriteProps.push(this.n);
+                               }
+                               this.r = r; //round (boolean)
+                               this.type = type || 0; //0 = normal tween, -1 = non-tweening (in which case xs0 will be applied to the target's property, like tp.t[tp.p] = tp.xs0), 1 = complex-value SpecialProp, 2 = custom setRatio() that does all the work
+                               if (pr) {
+                                       this.pr = pr;
+                                       _hasPriority = true;
+                               }
+                               this.b = (b === undefined) ? s : b;
+                               this.e = (e === undefined) ? s + c : e;
+                               if (next) {
+                                       this._next = next;
+                                       next._prev = this;
+                               }
+                       },
+
+                       /**
+                        * Takes a target, the beginning value and ending value (as strings) and parses them into a CSSPropTween (possibly with child CSSPropTweens) that accommodates multiple numbers, colors, comma-delimited values, etc. For example:
+                        * sp.parseComplex(element, "boxShadow", "5px 10px 20px rgb(255,102,51)", "0px 0px 0px red", true, "0px 0px 0px rgb(0,0,0,0)", pt);
+                        * It will walk through the beginning and ending values (which should be in the same format with the same number and type of values) and figure out which parts are numbers, what strings separate the numeric/tweenable values, and then create the CSSPropTweens accordingly. If a plugin is defined, no child CSSPropTweens will be created. Instead, the ending values will be stored in the "data" property of the returned CSSPropTween like: {s:-5, xn1:-10, xn2:-20, xn3:255, xn4:0, xn5:0} so that it can be fed to any other plugin and it'll be plain numeric tweens but the recomposition of the complex value will be handled inside CSSPlugin's setRatio().
+                        * If a setRatio is defined, the type of the CSSPropTween will be set to 2 and recomposition of the values will be the responsibility of that method.
+                        *
+                        * @param {!Object} t Target whose property will be tweened
+                        * @param {!string} p Property that will be tweened (its name, like "left" or "backgroundColor" or "boxShadow")
+                        * @param {string} b Beginning value
+                        * @param {string} e Ending value
+                        * @param {boolean} clrs If true, the value could contain a color value like "rgb(255,0,0)" or "#F00" or "red". The default is false, so no colors will be recognized (a performance optimization)
+                        * @param {(string|number|Object)} dflt The default beginning value that should be used if no valid beginning value is defined or if the number of values inside the complex beginning and ending values don't match
+                        * @param {?CSSPropTween} pt CSSPropTween instance that is the current head of the linked list (we'll prepend to this).
+                        * @param {number=} pr Priority in the linked list order. Higher priority properties will be updated before lower priority ones. The default priority is 0.
+                        * @param {TweenPlugin=} plugin If a plugin should handle the tweening of extra properties, pass the plugin instance here. If one is defined, then NO subtweens will be created for any extra properties (the properties will be created - just not additional CSSPropTween instances to tween them) because the plugin is expected to do so. However, the end values WILL be populated in the "data" property, like {s:100, xn1:50, xn2:300}
+                        * @param {function(number)=} setRatio If values should be set in a custom function instead of being pieced together in a type:1 (complex-value) CSSPropTween, define that custom function here.
+                        * @return {CSSPropTween} The first CSSPropTween in the linked list which includes the new one(s) added by the parseComplex() call.
+                        */
+                       _parseComplex = CSSPlugin.parseComplex = function(t, p, b, e, clrs, dflt, pt, pr, plugin, setRatio) {
+                               //DEBUG: _log("parseComplex: "+p+", b: "+b+", e: "+e);
+                               pt = new CSSPropTween(t, p, 0, 0, pt, (setRatio ? 2 : 1), null, false, pr, b, e);
+                               var ba = b.split(", ").join(",").split(" "), //beginning array
+                                       ea = (e + "").split(", ").join(",").split(" "), //ending array
+                                       l = ba.length,
+                                       autoRound = (_autoRound !== false),
+                                       i, xi, ni, bv, ev, bnums, enums, bn, rgba, temp, cv, str;
+                               if (l !== ea.length) {
+                                       //DEBUG: _log("mismatched formatting detected on " + p + " (" + b + " vs " + e + ")");
+                                       ba = (dflt || "").split(" ");
+                                       l = ba.length;
+                               }
+                               pt.plugin = plugin;
+                               pt.setRatio = setRatio;
+                               for (i = 0; i < l; i++) {
+                                       bv = ba[i];
+                                       ev = ea[i];
+                                       bn = parseFloat(bv);
+
+                                       //if the value begins with a number (most common). It's fine if it has a suffix like px
+                                       if (bn || bn === 0) {
+                                               pt.appendXtra("", bn, _parseChange(ev, bn), ev.replace(_relNumExp, ""), (autoRound && ev.indexOf("px") !== -1), true);
+
+                                       //if the value is a color
+                                       } else if (clrs && (bv.charAt(0) === "#" || bv.indexOf("rgb") === 0 || _colorLookup[bv])) {
+                                               bv = _parseColor(bv);
+                                               ev = _parseColor(ev);
+                                               rgba = (bv.length + ev.length > 6);
+
+                                               if (rgba && !_supportsOpacity && ev[3] === 0) { //older versions of IE don't support rgba(), so if the destination alpha is 0, just use "transparent" for the end color
+                                                       pt["xs" + pt.l] += pt.l ? " transparent" : "transparent";
+                                                       pt.e = pt.e.split(ea[i]).join("transparent");
+                                               } else {
+                                                       if (!_supportsOpacity) { //old versions of IE don't support rgba().
+                                                               rgba = false;
+                                                       }
+                                                       pt.appendXtra((rgba ? "rgba(" : "rgb("), bv[0], ev[0] - bv[0], ",", true, true)
+                                                               .appendXtra("", bv[1], ev[1] - bv[1], ",", true)
+                                                               .appendXtra("", bv[2], ev[2] - bv[2], (rgba ? "," : ")"), true);
+                                                       if (rgba) {
+                                                               bv = (bv.length < 4) ? 1 : bv[3];
+                                                               pt.appendXtra("", bv, ((ev.length < 4) ? 1 : ev[3]) - bv, ")", false);
+                                                       }
+                                               }
+
+                                       } else {
+                                               bnums = bv.match(_numExp); //gets each group of numbers in the beginning value string and drops them into an array
+
+                                               //if no number is found, treat it as a non-tweening value and just append the string to the current xs.
+                                               if (!bnums) {
+                                                       pt["xs" + pt.l] += pt.l ? " " + bv : bv;
+
+                                               //loop through all the numbers that are found and construct the extra values on the pt.
+                                               } else {
+                                                       enums = ev.match(_relNumExp); //get each group of numbers in the end value string and drop them into an array. We allow relative values too, like +=50 or -=.5
+                                                       if (!enums || enums.length !== bnums.length) {
+                                                               //DEBUG: _log("mismatched formatting detected on " + p + " (" + b + " vs " + e + ")");
+                                                               return pt;
+                                                       }
+                                                       ni = 0;
+                                                       for (xi = 0; xi < bnums.length; xi++) {
+                                                               cv = bnums[xi];
+                                                               temp = bv.indexOf(cv, ni);
+                                                               pt.appendXtra(bv.substr(ni, temp - ni), Number(cv), _parseChange(enums[xi], cv), "", (autoRound && bv.substr(temp + cv.length, 2) === "px"), (xi === 0));
+                                                               ni = temp + cv.length;
+                                                       }
+                                                       pt["xs" + pt.l] += bv.substr(ni);
+                                               }
+                                       }
+                               }
+                               //if there are relative values ("+=" or "-=" prefix), we need to adjust the ending value to eliminate the prefixes and combine the values properly.
+                               if (e.indexOf("=") !== -1) if (pt.data) {
+                                       str = pt.xs0 + pt.data.s;
+                                       for (i = 1; i < pt.l; i++) {
+                                               str += pt["xs" + i] + pt.data["xn" + i];
+                                       }
+                                       pt.e = str + pt["xs" + i];
+                               }
+                               if (!pt.l) {
+                                       pt.type = -1;
+                                       pt.xs0 = pt.e;
+                               }
+                               return pt.xfirst || pt;
+                       },
+                       i = 9;
+
+
+               p = CSSPropTween.prototype;
+               p.l = p.pr = 0; //length (number of extra properties like xn1, xn2, xn3, etc.
+               while (--i > 0) {
+                       p["xn" + i] = 0;
+                       p["xs" + i] = "";
+               }
+               p.xs0 = "";
+               p._next = p._prev = p.xfirst = p.data = p.plugin = p.setRatio = p.rxp = null;
+
+
+               /**
+                * Appends and extra tweening value to a CSSPropTween and automatically manages any prefix and suffix strings. The first extra value is stored in the s and c of the main CSSPropTween instance, but thereafter any extras are stored in the xn1, xn2, xn3, etc. The prefixes and suffixes are stored in the xs0, xs1, xs2, etc. properties. For example, if I walk through a clip value like "rect(10px, 5px, 0px, 20px)", the values would be stored like this:
+                * xs0:"rect(", s:10, xs1:"px, ", xn1:5, xs2:"px, ", xn2:0, xs3:"px, ", xn3:20, xn4:"px)"
+                * And they'd all get joined together when the CSSPlugin renders (in the setRatio() method).
+                * @param {string=} pfx Prefix (if any)
+                * @param {!number} s Starting value
+                * @param {!number} c Change in numeric value over the course of the entire tween. For example, if the start is 5 and the end is 100, the change would be 95.
+                * @param {string=} sfx Suffix (if any)
+                * @param {boolean=} r Round (if true).
+                * @param {boolean=} pad If true, this extra value should be separated by the previous one by a space. If there is no previous extra and pad is true, it will automatically drop the space.
+                * @return {CSSPropTween} returns itself so that multiple methods can be chained together.
+                */
+               p.appendXtra = function(pfx, s, c, sfx, r, pad) {
+                       var pt = this,
+                               l = pt.l;
+                       pt["xs" + l] += (pad && l) ? " " + pfx : pfx || "";
+                       if (!c) if (l !== 0 && !pt.plugin) { //typically we'll combine non-changing values right into the xs to optimize performance, but we don't combine them when there's a plugin that will be tweening the values because it may depend on the values being split apart, like for a bezier, if a value doesn't change between the first and second iteration but then it does on the 3rd, we'll run into trouble because there's no xn slot for that value!
+                               pt["xs" + l] += s + (sfx || "");
+                               return pt;
+                       }
+                       pt.l++;
+                       pt.type = pt.setRatio ? 2 : 1;
+                       pt["xs" + pt.l] = sfx || "";
+                       if (l > 0) {
+                               pt.data["xn" + l] = s + c;
+                               pt.rxp["xn" + l] = r; //round extra property (we need to tap into this in the _parseToProxy() method)
+                               pt["xn" + l] = s;
+                               if (!pt.plugin) {
+                                       pt.xfirst = new CSSPropTween(pt, "xn" + l, s, c, pt.xfirst || pt, 0, pt.n, r, pt.pr);
+                                       pt.xfirst.xs0 = 0; //just to ensure that the property stays numeric which helps modern browsers speed up processing. Remember, in the setRatio() method, we do pt.t[pt.p] = val + pt.xs0 so if pt.xs0 is "" (the default), it'll cast the end value as a string. When a property is a number sometimes and a string sometimes, it prevents the compiler from locking in the data type, slowing things down slightly.
+                               }
+                               return pt;
+                       }
+                       pt.data = {s:s + c};
+                       pt.rxp = {};
+                       pt.s = s;
+                       pt.c = c;
+                       pt.r = r;
+                       return pt;
+               };
+
+               /**
+                * @constructor A SpecialProp is basically a css property that needs to be treated in a non-standard way, like if it may contain a complex value like boxShadow:"5px 10px 15px rgb(255, 102, 51)" or if it is associated with another plugin like ThrowPropsPlugin or BezierPlugin. Every SpecialProp is associated with a particular property name like "boxShadow" or "throwProps" or "bezier" and it will intercept those values in the vars object that's passed to the CSSPlugin and handle them accordingly.
+                * @param {!string} p Property name (like "boxShadow" or "throwProps")
+                * @param {(string|number)=} dflt Default starting value.
+                * @param {function(Object, Object, Object, Object):CSSPropTween=} parser A function that should be called when the associated property name is found in the vars. This function should return a CSSPropTween instance and it should ensure that it is properly inserted into the linked list. It will receive 4 paramters: 1) The target, 2) The value defined in the vars, 3) The CSSPlugin instance (whose _firstPT should be used for the linked list), and 4) A computed style object if one was calculated (this is a speed optimization that allows retrieval of starting values quicker)
+                * @param {boolean=} vpfx If true, the property will be checked to see if a vendor prefix is necessary and if so, it will be used.
+                * @param {boolean=} clrs If true, the special property may contain color values. Many do not in which case we can skip some processing steps when analyzing the starting/ending values.
+                * @param {function(string):string=} formatter Function that takes a string (beginning or ending value) and formats it correctly, like for boxShadow it could take "5px 5px red" and format it to "5px 5px 0px 0px red" so that both the beginning and ending values have a common order and quantity of values.
+                * @param {number=} pr Priority in the linked list order. Higher priority SpecialProps will be updated before lower priority ones. The default priority is 0.
+                */
+               var SpecialProp = function(p, dflt, parser, vpfx, clrs, formatter, pr) {
+                               this.p = vpfx ? _checkPropPrefix(p) || p : p;
+                               _specialProps[p] = _specialProps[this.p] = this;
+                               this.format = formatter || _getFormatter(dflt, clrs);
+                               if (parser) {
+                                       this.parse = parser;
+                               }
+                               this.clrs = clrs;
+                               this.dflt = dflt;
+                               this.pr = pr || 0;
+                       },
+
+                       //shortcut for creating a new SpecialProp that can accept multiple properties as a comma-delimited list (helps minification). dflt can be an array for multiple values (we don't do a comma-delimited list because the default value may contain commas, like rect(0px,0px,0px,0px)). We attach this method to the SpecialProp class/object instead of using a private _createSpecialProp() method so that we can tap into it externally if necessary, like from another plugin.
+                       _registerComplexSpecialProp = _internals._registerComplexSpecialProp = function(p, dflt, parser, vpfx, clrs, formatter, pr) {
+                               var a = p.split(","),
+                                       da = (dflt instanceof Array) ? dflt : [dflt],
+                                       i = a.length,
+                                       temp;
+                               while (--i > -1) {
+                                       temp = new SpecialProp(a[i], da[i], parser, (vpfx && i === 0), clrs, formatter, pr);
+                               }
+                       },
+                       //creates a placeholder special prop for a plugin so that the property gets caught the first time a tween of it is attempted, and at that time it makes the plugin register itself, thus taking over for all future tweens of that property. This allows us to not mandate that things load in a particular order and it also allows us to log() an error that informs the user when they attempt to tween an external plugin-related property without loading its .js file.
+                       _registerPluginProp = function(p) {
+                               if (!_specialProps[p]) {
+                                       var pluginName = p.charAt(0).toUpperCase() + p.substr(1) + "Plugin";
+                                       _registerComplexSpecialProp(p, null, function(t, e, p, cssp, pt, plugin, vars) {
+                                               var pluginClass = window.com.greensock.plugins[pluginName];
+                                               if (!pluginClass) {
+                                                       _log("Error: " + pluginName + " js file not loaded.");
+                                                       return pt;
+                                               }
+                                               pluginClass._cssRegister();
+                                               return _specialProps[p].parse(t, e, p, cssp, pt, plugin, vars);
+                                       });
+                               }
+                       };
+
+
+               p = SpecialProp.prototype;
+
+               /**
+                * Alias for _parseComplex() that automatically plugs in certain values for this SpecialProp, like its property name, whether or not colors should be sensed, the default value, and priority.
+                * @param {!Object} t target element
+                * @param {(string|number|object)} b beginning value
+                * @param {(string|number|object)} e ending (destination) value
+                * @param {CSSPropTween=} pt next CSSPropTween in the linked list
+                * @param {TweenPlugin=} plugin If another plugin will be tweening the complex value, that TweenPlugin instance goes here.
+                * @param {function=} setRatio If a custom setRatio() method should be used to handle this complex value, that goes here.
+                * @return {CSSPropTween=} First CSSPropTween in the linked list
+                */
+               p.parseComplex = function(t, b, e, pt, plugin, setRatio) {
+                       return _parseComplex(t, this.p, b, e, this.clrs, this.dflt, pt, this.pr, plugin, setRatio);
+               };
+
+               /**
+                * Accepts a target and end value and spits back a CSSPropTween that has been inserted into the CSSPlugin's linked list and conforms with all the conventions we use internally, like type:-1, 0, 1, or 2, setting up any extra property tweens, priority, etc. For example, if we have a boxShadow SpecialProp and call:
+                * this._firstPT = sp.parse(element, "5px 10px 20px rgb(2550,102,51)", "boxShadow", this);
+                * It should figure out the starting value of the element's boxShadow, compare it to the provided end value and create all the necessary CSSPropTweens of the appropriate types to tween the boxShadow. The CSSPropTween that gets spit back should already be inserted into the linked list (the 4th parameter is the current head, so prepend to that).
+                * @param {!Object) t Target object whose property is being tweened
+                * @param {Object} e End value as provided in the vars object (typically a string, but not always - like a throwProps would be an object).
+                * @param {!string} p Property name
+                * @param {!CSSPlugin} cssp The CSSPlugin instance that should be associated with this tween.
+                * @param {?CSSPropTween} pt The CSSPropTween that is the current head of the linked list (we'll prepend to it)
+                * @param {TweenPlugin=} plugin If a plugin will be used to tween the parsed value, this is the plugin instance.
+                * @param {Object=} vars Original vars object that contains the data for parsing.
+                * @return {CSSPropTween} The first CSSPropTween in the linked list which includes the new one(s) added by the parse() call.
+                */
+               p.parse = function(t, e, p, cssp, pt, plugin, vars) {
+                       return this.parseComplex(t.style, this.format(_getStyle(t, p, _cs, false, this.dflt)), this.format(e), pt, plugin);
+               };
+
+               /**
+                * Registers a special property that should be intercepted from any "css" objects defined in tweens. This allows you to handle them however you want without CSSPlugin doing it for you. The 2nd parameter should be a function that accepts 3 parameters:
+                *  1) Target object whose property should be tweened (typically a DOM element)
+                *  2) The end/destination value (could be a string, number, object, or whatever you want)
+                *  3) The tween instance (you probably don't need to worry about this, but it can be useful for looking up information like the duration)
+                *
+                * Then, your function should return a function which will be called each time the tween gets rendered, passing a numeric "ratio" parameter to your function that indicates the change factor (usually between 0 and 1). For example:
+                *
+                * CSSPlugin.registerSpecialProp("myCustomProp", function(target, value, tween) {
+                *      var start = target.style.width;
+                *      return function(ratio) {
+                *              target.style.width = (start + value * ratio) + "px";
+                *              console.log("set width to " + target.style.width);
+                *          }
+                * }, 0);
+                *
+                * Then, when I do this tween, it will trigger my special property:
+                *
+                * TweenLite.to(element, 1, {css:{myCustomProp:100}});
+                *
+                * In the example, of course, we're just changing the width, but you can do anything you want.
+                *
+                * @param {!string} name Property name (or comma-delimited list of property names) that should be intercepted and handled by your function. For example, if I define "myCustomProp", then it would handle that portion of the following tween: TweenLite.to(element, 1, {css:{myCustomProp:100}})
+                * @param {!function(Object, Object, Object, string):function(number)} onInitTween The function that will be called when a tween of this special property is performed. The function will receive 4 parameters: 1) Target object that should be tweened, 2) Value that was passed to the tween, 3) The tween instance itself (rarely used), and 4) The property name that's being tweened. Your function should return a function that should be called on every update of the tween. That function will receive a single parameter that is a "change factor" value (typically between 0 and 1) indicating the amount of change as a ratio. You can use this to determine how to set the values appropriately in your function.
+                * @param {number=} priority Priority that helps the engine determine the order in which to set the properties (default: 0). Higher priority properties will be updated before lower priority ones.
+                */
+               CSSPlugin.registerSpecialProp = function(name, onInitTween, priority) {
+                       _registerComplexSpecialProp(name, null, function(t, e, p, cssp, pt, plugin, vars) {
+                               var rv = new CSSPropTween(t, p, 0, 0, pt, 2, p, false, priority);
+                               rv.plugin = plugin;
+                               rv.setRatio = onInitTween(t, e, cssp._tween, p);
+                               return rv;
+                       }, false, false, null, priority);
+               };
+
+
+
+
+
+
+
+
+               //transform-related methods and properties
+               var _transformProps = ["scaleX","scaleY","scaleZ","x","y","z","skewX","rotation","rotationX","rotationY","perspective"],
+                       _transformProp = _checkPropPrefix("transform"), //the Javascript (camelCase) transform property, like msTransform, WebkitTransform, MozTransform, or OTransform.
+                       _transformPropCSS = _prefixCSS + "transform",
+                       _transformOriginProp = _checkPropPrefix("transformOrigin"),
+                       _supports3D = (_checkPropPrefix("perspective") !== null),
+
+                       /**
+                        * Parses the transform values for an element, returning an object with x, y, z, scaleX, scaleY, scaleZ, rotation, rotationX, rotationY, skewX, and skewY properties. Note: by default (for performance reasons), all skewing is combined into skewX and rotation but skewY still has a place in the transform object so that we can record how much of the skew is attributed to skewX vs skewY. Remember, a skewY of 10 looks the same as a rotation of 10 and skewX of -10.
+                        * @param {!Object} t target element
+                        * @param {Object=} cs computed style object (optional)
+                        * @param {boolean=} rec if true, the transform values will be recorded to the target element's _gsTransform object, like target._gsTransform = {x:0, y:0, z:0, scaleX:1...}
+                        * @return {object} object containing all of the transform properties/values like {x:0, y:0, z:0, scaleX:1...}
+                        */
+                       _getTransform = function(t, cs, rec) {
+                               var tm = rec ? t._gsTransform || {skewY:0} : {skewY:0},
+                                       invX = (tm.scaleX < 0), //in order to interpret things properly, we need to know if the user applied a negative scaleX previously so that we can adjust the rotation and skewX accordingly. Otherwise, if we always interpret a flipped matrix as affecting scaleY and the user only wants to tween the scaleX on multiple sequential tweens, it would keep the negative scaleY without that being the user's intent.
+                                       min = 0.00002,
+                                       rnd = 100000,
+                                       minPI = -Math.PI + 0.0001,
+                                       maxPI = Math.PI - 0.0001,
+                                       zOrigin = _supports3D ? parseFloat(_getStyle(t, _transformOriginProp, cs, false, "0 0 0").split(" ")[2]) || tm.zOrigin  || 0 : 0,
+                                       s, m, i, n, scaleX, scaleY, rotation, skewX, difX, difY, difR, difS;
+                               if (_transformProp) {
+                                       s = _getStyle(t, _transformPropCSS, cs, true);
+                               } else if (t.currentStyle) {
+                                       //for older versions of IE, we need to interpret the filter portion that is in the format: progid:DXImageTransform.Microsoft.Matrix(M11=6.123233995736766e-17, M12=-1, M21=1, M22=6.123233995736766e-17, sizingMethod='auto expand') Notice that we need to swap b and c compared to a normal matrix.
+                                       s = t.currentStyle.filter.match(_ieGetMatrixExp);
+                                       s = (s && s.length === 4) ? s[0].substr(4) + "," + Number(s[2].substr(4)) + "," + Number(s[1].substr(4)) + "," + s[3].substr(4) + "," + (tm ? tm.x : 0) + "," + (tm ? tm.y : 0) : null;
+                               }
+                               //split the matrix values out into an array (m for matrix)
+                               m = (s || "").match(/(?:\-|\b)[\d\-\.e]+\b/gi) || [];
+                               i = m.length;
+                               while (--i > -1) {
+                                       n = Number(m[i]);
+                                       m[i] = ((n * rnd + ((n < 0) ? -0.5 : 0.5)) >> 0) / rnd; //convert strings to Numbers and round to 5 decimal places to avoid issues with tiny numbers
+                               }
+                               if (m.length === 16) {
+
+                                       //we'll only look at these position-related 6 variables first because if x/y/z all match, it's relatively safe to assume we don't need to re-parse everything which risks losing important rotational information (like rotationX:180 plus rotationY:180 would look the same as rotation:180 - there's no way to know for sure which direction was taken based solely on the matrix3d() values)
+                                       var a13 = m[8], a23 = m[9], a33 = m[10],
+                                               a14 = m[12], a24 = m[13], a34 = m[14];
+
+                                       //we manually compensate for non-zero z component of transformOrigin to work around bugs in Safari
+                                       if (tm.zOrigin) {
+                                               a34 = -tm.zOrigin;
+                                               a14 = a13*a34-m[12];
+                                               a24 = a23*a34-m[13];
+                                               a34 = a33*a34+tm.zOrigin-m[14];
+                                       }
+
+                                       //only parse from the matrix if we MUST because not only is it usually unnecessary due to the fact that we store the values in the _gsTransform object, but also because it's impossible to accurately interpret rotationX, rotationY, and rotationZ if all are applied, so it's much better to rely on what we store. However, we must parse the first time that an object is tweened. We also assume that if the position has changed, the user must have done some styling changes outside of CSSPlugin, thus we force a parse in that scenario.
+                                       if (!rec || a14 !== tm.x || a24 !== tm.y || a34 !== tm.z) {
+                                               var a11 = m[0], a21 = m[1], a31 = m[2], a41 = m[3],
+                                                       a12 = m[4], a22 = m[5], a32 = m[6], a42 = m[7],
+                                                       a43 = m[11],
+                                                       angle = tm.rotationX = Math.atan2(a32, a33),
+                                                       xFlip = (angle < minPI || angle > maxPI),
+                                                       t1, t2, t3, t4, cos, sin, yFlip, zFlip;
+                                               //rotationX
+                                               if (angle) {
+                                                       cos = Math.cos(-angle);
+                                                       sin = Math.sin(-angle);
+                                                       t1 = a12*cos+a13*sin;
+                                                       t2 = a22*cos+a23*sin;
+                                                       t3 = a32*cos+a33*sin;
+                                                       t4 = a42*cos+a43*sin;
+                                                       a13 = a12*-sin+a13*cos;
+                                                       a23 = a22*-sin+a23*cos;
+                                                       a33 = a32*-sin+a33*cos;
+                                                       a43 = a42*-sin+a43*cos;
+                                                       a12 = t1;
+                                                       a22 = t2;
+                                                       a32 = t3;
+                                                       //a42 = t4;
+                                               }
+                                               //rotationY
+                                               angle = tm.rotationY = Math.atan2(a13, a11);
+                                               if (angle) {
+                                                       yFlip = (angle < minPI || angle > maxPI);
+                                                       cos = Math.cos(-angle);
+                                                       sin = Math.sin(-angle);
+                                                       t1 = a11*cos-a13*sin;
+                                                       t2 = a21*cos-a23*sin;
+                                                       t3 = a31*cos-a33*sin;
+                                                       t4 = a41*cos-a43*sin;
+                                                       //a13 = a11*sin+a13*cos;
+                                                       a23 = a21*sin+a23*cos;
+                                                       a33 = a31*sin+a33*cos;
+                                                       a43 = a41*sin+a43*cos;
+                                                       a11 = t1;
+                                                       a21 = t2;
+                                                       a31 = t3;
+                                                       //a41 = t4;
+                                               }
+                                               //rotationZ
+                                               angle = tm.rotation = Math.atan2(a21, a22);
+                                               if (angle) {
+                                                       zFlip = (angle < minPI || angle > maxPI);
+                                                       cos = Math.cos(-angle);
+                                                       sin = Math.sin(-angle);
+                                                       a11 = a11*cos+a12*sin;
+                                                       t2 = a21*cos+a22*sin;
+                                                       a22 = a21*-sin+a22*cos;
+                                                       a32 = a31*-sin+a32*cos;
+                                                       a21 = t2;
+                                               }
+
+                                               if (zFlip && xFlip) {
+                                                       tm.rotation = tm.rotationX = 0;
+                                               } else if (zFlip && yFlip) {
+                                                       tm.rotation = tm.rotationY = 0;
+                                               } else if (yFlip && xFlip) {
+                                                       tm.rotationY = tm.rotationX = 0;
+                                               }
+
+                                               tm.scaleX = ((Math.sqrt(a11 * a11 + a21 * a21) * rnd + 0.5) >> 0) / rnd;
+                                               tm.scaleY = ((Math.sqrt(a22 * a22 + a23 * a23) * rnd + 0.5) >> 0) / rnd;
+                                               tm.scaleZ = ((Math.sqrt(a32 * a32 + a33 * a33) * rnd + 0.5) >> 0) / rnd;
+                                               tm.skewX = 0;
+                                               tm.perspective = a43 ? 1 / a43 : 0;
+                                               tm.x = a14;
+                                               tm.y = a24;
+                                               tm.z = a34;
+                                       }
+
+                               } else if (!_supports3D || m.length === 0 || tm.x !== m[4] || tm.y !== m[5] || (!tm.rotationX && !tm.rotationY)) { //sometimes a 6-element matrix is returned even when we performed 3D transforms, like if rotationX and rotationY are 180. In cases like this, we still need to honor the 3D transforms. If we just rely on the 2D info, it could affect how the data is interpreted, like scaleY might get set to -1 or rotation could get offset by 180 degrees. For example, do a TweenLite.to(element, 1, {css:{rotationX:180, rotationY:180}}) and then later, TweenLite.to(element, 1, {css:{rotationX:0}}) and without this conditional logic in place, it'd jump to a state of being unrotated when the 2nd tween starts. Then again, we need to honor the fact that the user COULD alter the transforms outside of CSSPlugin, like by manually applying new css, so we try to sense that by looking at x and y because if those changed, we know the changes were made outside CSSPlugin and we force a reinterpretation of the matrix values.
+                                       var k = (m.length >= 6),
+                                               a = k ? m[0] : 1,
+                                               b = m[1] || 0,
+                                               c = m[2] || 0,
+                                               d = k ? m[3] : 1;
+
+                                       tm.x = m[4] || 0;
+                                       tm.y = m[5] || 0;
+                                       scaleX = Math.sqrt(a * a + b * b);
+                                       scaleY = Math.sqrt(d * d + c * c);
+                                       rotation = (a || b) ? Math.atan2(b, a) : tm.rotation || 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).
+                                       skewX = (c || d) ? Math.atan2(c, d) + rotation : tm.skewX || 0;
+                                       difX = scaleX - Math.abs(tm.scaleX || 0);
+                                       difY = scaleY - Math.abs(tm.scaleY || 0);
+                                       if (Math.abs(skewX) > Math.PI / 2 && Math.abs(skewX) < Math.PI * 1.5) {
+                                               if (invX) {
+                                                       scaleX *= -1;
+                                                       skewX += (rotation <= 0) ? Math.PI : -Math.PI;
+                                                       rotation += (rotation <= 0) ? Math.PI : -Math.PI;
+                                               } else {
+                                                       scaleY *= -1;
+                                                       skewX += (skewX <= 0) ? Math.PI : -Math.PI;
+                                               }
+                                       }
+                                       difR = (rotation - tm.rotation) % Math.PI; //note: matching ranges would be very small (+/-0.0001) or very close to Math.PI (+/-3.1415).
+                                       difS = (skewX - tm.skewX) % Math.PI;
+                                       //if there's already a recorded _gsTransform in place for the target, we should leave those values in place unless we know things changed for sure (beyond a super small amount). This gets around ambiguous interpretations, like if scaleX and scaleY are both -1, the matrix would be the same as if the rotation was 180 with normal scaleX/scaleY. If the user tweened to particular values, those must be prioritized to ensure animation is consistent.
+                                       if (tm.skewX === undefined || difX > min || difX < -min || difY > min || difY < -min || (difR > minPI && difR < maxPI && (difR * rnd) >> 0 !== 0) || (difS > minPI && difS < maxPI && (difS * rnd) >> 0 !== 0)) {
+                                               tm.scaleX = scaleX;
+                                               tm.scaleY = scaleY;
+                                               tm.rotation = rotation;
+                                               tm.skewX = skewX;
+                                       }
+                                       if (_supports3D) {
+                                               tm.rotationX = tm.rotationY = tm.z = 0;
+                                               tm.perspective = parseFloat(CSSPlugin.defaultTransformPerspective) || 0;
+                                               tm.scaleZ = 1;
+                                       }
+                               }
+                               tm.zOrigin = zOrigin;
+
+                               //some browsers have a hard time with very small values like 2.4492935982947064e-16 (notice the "e-" towards the end) and would render the object slightly off. So we round to 0 in these cases. The conditional logic here is faster than calling Math.abs(). Also, browsers tend to render a SLIGHTLY rotated object in a fuzzy way, so we need to snap to exactly 0 when appropriate.
+                               for (i in tm) {
+                                       if (tm[i] < min) if (tm[i] > -min) {
+                                               tm[i] = 0;
+                                       }
+                                       //alternate method rounds to 5 decimal places: tm[i] = ((tm[i] * rnd) >> 0) / rnd;
+                               }
+                               //DEBUG: _log("parsed rotation: "+(tm.rotationX*_RAD2DEG)+", "+(tm.rotationY*_RAD2DEG)+", "+(tm.rotation*_RAD2DEG)+", scale: "+tm.scaleX+", "+tm.scaleY+", "+tm.scaleZ+", position: "+tm.x+", "+tm.y+", "+tm.z+", perspective: "+tm.perspective);
+                               if (rec) {
+                                       t._gsTransform = tm; //record to the object's _gsTransform which we use so that tweens can control individual properties independently (we need all the properties to accurately recompose the matrix in the setRatio() method)
+                               }
+                               return tm;
+                       },
+                       //for setting 2D transforms in IE6, IE7, and IE8 (must use a "filter" to emulate the behavior of modern day browser transforms)
+                       _setIETransformRatio = function(v) {
+                               var t = this.data, //refers to the element's _gsTransform object
+                                       ang = -t.rotation,
+                                       skew = ang + t.skewX,
+                                       rnd = 100000,
+                                       a = ((Math.cos(ang) * t.scaleX * rnd) >> 0) / rnd,
+                                       b = ((Math.sin(ang) * t.scaleX * rnd) >> 0) / rnd,
+                                       c = ((Math.sin(skew) * -t.scaleY * rnd) >> 0) / rnd,
+                                       d = ((Math.cos(skew) * t.scaleY * rnd) >> 0) / rnd,
+                                       style = this.t.style,
+                                       cs = this.t.currentStyle,
+                                       filters, val;
+                               if (!cs) {
+                                       return;
+                               }
+                               val = b; //just for swapping the variables an inverting them (reused "val" to avoid creating another variable in memory). IE's filter matrix uses a non-standard matrix configuration (angle goes the opposite way, and b and c are reversed and inverted)
+                               b = -c;
+                               c = -val;
+                               filters = cs.filter;
+                               style.filter = ""; //remove filters so that we can accurately measure offsetWidth/offsetHeight
+                               var w = this.t.offsetWidth,
+                                       h = this.t.offsetHeight,
+                                       clip = (cs.position !== "absolute"),
+                                       m = "progid:DXImageTransform.Microsoft.Matrix(M11=" + a + ", M12=" + b + ", M21=" + c + ", M22=" + d,
+                                       ox = t.x,
+                                       oy = t.y,
+                                       dx, dy;
+
+                               //if transformOrigin is being used, adjust the offset x and y
+                               if (t.ox != null) {
+                                       dx = ((t.oxp) ? w * t.ox * 0.01 : t.ox) - w / 2;
+                                       dy = ((t.oyp) ? h * t.oy * 0.01 : t.oy) - h / 2;
+                                       ox += dx - (dx * a + dy * b);
+                                       oy += dy - (dx * c + dy * d);
+                               }
+
+                               if (!clip) {
+                                       var mult = (_ieVers < 8) ? 1 : -1, //in Internet Explorer 7 and before, the box model is broken, causing the browser to treat the width/height of the actual rotated filtered image as the width/height of the box itself, but Microsoft corrected that in IE8. We must use a negative offset in IE8 on the right/bottom
+                                               marg, prop, dif;
+                                       dx = t.ieOffsetX || 0;
+                                       dy = t.ieOffsetY || 0;
+                                       t.ieOffsetX = Math.round((w - ((a < 0 ? -a : a) * w + (b < 0 ? -b : b) * h)) / 2 + ox);
+                                       t.ieOffsetY = Math.round((h - ((d < 0 ? -d : d) * h + (c < 0 ? -c : c) * w)) / 2 + oy);
+                                       for (i = 0; i < 4; i++) {
+                                               prop = _margins[i];
+                                               marg = cs[prop];
+                                               //we need to get the current margin in case it is being tweened separately (we want to respect that tween's changes)
+                                               val = (marg.indexOf("px") !== -1) ? parseFloat(marg) : _convertToPixels(this.t, prop, parseFloat(marg), marg.replace(_suffixExp, "")) || 0;
+                                               if (val !== t[prop]) {
+                                                       dif = (i < 2) ? -t.ieOffsetX : -t.ieOffsetY; //if another tween is controlling a margin, we cannot only apply the difference in the ieOffsets, so we essentially zero-out the dx and dy here in that case. We record the margin(s) later so that we can keep comparing them, making this code very flexible.
+                                               } else {
+                                                       dif = (i < 2) ? dx - t.ieOffsetX : dy - t.ieOffsetY;
+                                               }
+                                               style[prop] = (t[prop] = Math.round( val - dif * ((i === 0 || i === 2) ? 1 : mult) )) + "px";
+                                       }
+                                       m += ", sizingMethod='auto expand')";
+                               } else {
+                                       dx = (w / 2);
+                                       dy = (h / 2);
+                                       //translate to ensure that transformations occur around the correct origin (default is center).
+                                       m += ", Dx=" + (dx - (dx * a + dy * b) + ox) + ", Dy=" + (dy - (dx * c + dy * d) + oy) + ")";
+                               }
+                               if (filters.indexOf("DXImageTransform.Microsoft.Matrix(") !== -1) {
+                                       style.filter = filters.replace(_ieSetMatrixExp, m);
+                               } else {
+                                       style.filter = m + " " + filters; //we must always put the transform/matrix FIRST (before alpha(opacity=xx)) to avoid an IE bug that slices part of the object when rotation is applied with alpha.
+                               }
+
+                               //at the end or beginning of the tween, if the matrix is normal (1, 0, 0, 1) and opacity is 100 (or doesn't exist), remove the filter to improve browser performance.
+                               if (v === 0 || v === 1) if (a === 1) if (b === 0) if (c === 0) if (d === 1) if (!clip || m.indexOf("Dx=0, Dy=0") !== -1) if (!_opacityExp.test(filters) || parseFloat(RegExp.$1) === 100) if (filters.indexOf("gradient(") === -1) {
+                                       style.removeAttribute("filter");
+                               }
+                       },
+                       _set3DTransformRatio = function(v) {
+                               var t = this.data, //refers to the element's _gsTransform object
+                                       style = this.t.style,
+                                       perspective = t.perspective,
+                                       a11 = t.scaleX, a12 = 0, a13 = 0, a14 = 0,
+                                       a21 = 0, a22 = t.scaleY, a23 = 0, a24 = 0,
+                                       a31 = 0, a32 = 0, a33 = t.scaleZ, a34 = 0,
+                                       a41 = 0, a42 = 0, a43 = (perspective) ? -1 / perspective : 0,
+                                       angle = t.rotation,
+                                       zOrigin = t.zOrigin,
+                                       cma = ",",
+                                       rnd = 100000,
+                                       cos, sin, t1, t2, t3, t4, top, n, sfx;
+                               if (_isFirefox) { //Firefox has a bug that causes 3D elements to randomly disappear during animation unless a repaint is forced. One way to do this is change "top" by 0.05 which is imperceptible, so we go back and forth. Another way is to change the display to "none", read the clientTop, and then revert the display but that is much slower.
+                                       top = _getStyle(this.t, "top", null, false, "0");
+                                       n = parseFloat(top) || 0;
+                                       sfx = top.substr((n + "").length);
+                                       t._ffFix = !t._ffFix;
+                                       style.top = (t._ffFix ? n + 0.05 : n - 0.05) + ((sfx === "") ? "px" : sfx);
+                               }
+
+                               if (angle) {
+                                       cos = Math.cos(angle);
+                                       sin = Math.sin(angle);
+                                       t1 = a11*cos;
+                                       t2 = a22*sin;
+                                       a12 = a11*-sin;
+                                       a22 = a22*cos;
+                                       a11 = t1;
+                                       a21 = t2;
+                               }
+                               angle = t.rotationY;
+                               if (angle) {
+                                       cos = Math.cos(angle);
+                                       sin = Math.sin(angle);
+                                       t1 = a11*cos;
+                                       t2 = a21*cos;
+                                       t3 = a33*-sin;
+                                       t4 = a43*-sin;
+                                       a13 = a11*sin;
+                                       a23 = a21*sin;
+                                       a33 = a33*cos;
+                                       a43 *= cos;
+                                       a11 = t1;
+                                       a21 = t2;
+                                       a31 = t3;
+                                       a41 = t4;
+                               }
+                               angle = t.rotationX;
+                               if (angle) {
+                                       cos = Math.cos(angle);
+                                       sin = Math.sin(angle);
+                                       t1 = a12*cos+a13*sin;
+                                       t2 = a22*cos+a23*sin;
+                                       t3 = a32*cos+a33*sin;
+                                       t4 = a42*cos+a43*sin;
+                                       a13 = a12*-sin+a13*cos;
+                                       a23 = a22*-sin+a23*cos;
+                                       a33 = a32*-sin+a33*cos;
+                                       a43 = a42*-sin+a43*cos;
+                                       a12 = t1;
+                                       a22 = t2;
+                                       a32 = t3;
+                                       a42 = t4;
+                               }
+                               if (zOrigin) {
+                                       a34 -= zOrigin;
+                                       a14 = a13*a34;
+                                       a24 = a23*a34;
+                                       a34 = a33*a34+zOrigin;
+                               }
+                               a14 += t.x;
+                               a24 += t.y;
+                               a34 = (((a34 + t.z) * rnd) >> 0) / rnd;
+
+                               style[_transformProp] = "matrix3d(" + (((a11 * rnd) >> 0) / rnd) + cma + (((a21 * rnd) >> 0) / rnd) + cma + (((a31 * rnd) >> 0) / rnd) + cma + (((a41 * rnd) >> 0) / rnd) + cma + (((a12 * rnd) >> 0) / rnd) + cma + (((a22 * rnd) >> 0) / rnd) + cma + (((a32 * rnd) >> 0) / rnd) + cma + (((a42 * rnd) >> 0) / rnd) + cma + (((a13 * rnd) >> 0) / rnd) + cma + (((a23 * rnd) >> 0) / rnd) + cma + (((a33 * rnd) >> 0) / rnd) + cma + (((a43 * rnd) >> 0) / rnd) + cma + (((a14 * rnd) >> 0) / rnd) + cma + (((a24 * rnd) >> 0) / rnd) + cma + a34 + cma + (perspective ? (1 + (-a34 / perspective)) : 1) + ")";
+                       },
+                       _set2DTransformRatio = function(v) {
+                               var t = this.data, //refers to the element's _gsTransform object
+                                       targ = this.t,
+                                       top, n, sfx, ang, skew, rnd, sx, sy;
+                               if (_isFirefox) { //Firefox has a bug that causes transformed elements to randomly disappear during (or after) animation unless a repaint is forced. One way to do this is change "top" by 0.05 which is imperceptible, so we alternate back and forth. Another way is to change the display to "none", read the clientTop, and then revert the display but that is much slower. The bug is present in at least Firefox 17 and 18
+                                       top = _getStyle(targ, "top", null, false, "0");
+                                       n = parseFloat(top) || 0;
+                                       sfx = top.substr((n + "").length);
+                                       t._ffFix = !t._ffFix;
+                                       targ.style.top = (t._ffFix ? n + 0.05 : n - 0.05) + ((sfx === "") ? "px" : sfx);
+                               }
+                               if (!t.rotation && !t.skewX) {
+                                       targ.style[_transformProp] = "matrix(" + t.scaleX + ",0,0," + t.scaleY + "," + t.x + "," + t.y + ")";
+                               } else {
+                                       ang = t.rotation;
+                                       skew = ang - t.skewX;
+                                       rnd = 100000;
+                                       sx = t.scaleX * rnd;
+                                       sy = t.scaleY * rnd;
+                                       //some browsers have a hard time with very small values like 2.4492935982947064e-16 (notice the "e-" towards the end) and would render the object slightly off. So we round to 5 decimal places.
+                                       targ.style[_transformProp] = "matrix(" + (((Math.cos(ang) * sx) >> 0) / rnd) + "," + (((Math.sin(ang) * sx) >> 0) / rnd) + "," + (((Math.sin(skew) * -sy) >> 0) / rnd) + "," + (((Math.cos(skew) * sy) >> 0) / rnd) + "," + t.x + "," + t.y + ")";
+                               }
+                       };
+
+               _registerComplexSpecialProp("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,transformPerspective", null, function(t, e, p, cssp, pt, plugin, vars) {
+                       if (cssp._transform) { return pt; } //only need to parse the transform once, and only if the browser supports it.
+                       var m1 = cssp._transform = _getTransform(t, _cs, true),
+                               style = t.style,
+                               min = 0.000001,
+                               i = _transformProps.length,
+                               v = vars,
+                               m2, rotation, skewY, copy, orig, has3D, hasChange;
+
+                       if (typeof(v.transform) === "string" && _transformProp) { //for values like transform:"rotate(60deg) scale(0.5, 0.8)"
+                               copy = style[_transformProp];
+                               style[_transformProp] = v.transform;
+                               m2 = _getTransform(t, null, false);
+                               style[_transformProp] = copy;
+                       } else if (typeof(v) === "object") { //for values like scaleX, scaleY, rotation, x, y, skewX, and skewY or transform:{...} (object)
+                               rotation = (v.rotation != null) ? v.rotation : (v.rotationZ != null) ? v.rotationZ : m1.rotation * _RAD2DEG;
+                               m2 = {scaleX:_parseVal((v.scaleX != null) ? v.scaleX : v.scale, m1.scaleX),
+                                       scaleY:_parseVal((v.scaleY != null) ? v.scaleY : v.scale, m1.scaleY),
+                                       scaleZ:_parseVal((v.scaleZ != null) ? v.scaleZ : v.scale, m1.scaleZ),
+                                       x:_parseVal(v.x, m1.x),
+                                       y:_parseVal(v.y, m1.y),
+                                       z:_parseVal(v.z, m1.z),
+                                       perspective:_parseVal(v.transformPerspective, m1.perspective)};
+
+                               if (v.shortRotation != null || v.shortRotationZ != null) {
+                                       m2.rotation = _parseShortRotation(v.shortRotation || v.shortRotationZ || 0, m1.rotation);
+                               } else {
+                                       m2.rotation = (typeof(rotation) === "number") ? rotation * _DEG2RAD : _parseAngle(rotation, m1.rotation);
+                               }
+                               if (_supports3D) {
+                                       m2.rotationX = (v.shortRotationX != null) ? _parseShortRotation(v.shortRotationX, m1.rotationX) : (typeof(v.rotationX) === "number") ? v.rotationX * _DEG2RAD : _parseAngle(v.rotationX, m1.rotationX);
+                                       m2.rotationY = (v.shortRotationY != null) ? _parseShortRotation(v.shortRotationY, m1.rotationY) : (typeof(v.rotationY) === "number") ? v.rotationY * _DEG2RAD : _parseAngle(v.rotationY, m1.rotationY);
+                                       if (m2.rotationX < min) if (m2.rotationX > -min) {
+                                               m2.rotationX = 0;
+                                       }
+                                       if (m2.rotationY < min) if (m2.rotationY > -min) {
+                                               m2.rotationY = 0;
+                                       }
+                               }
+                               m2.skewX = (v.skewX == null) ? m1.skewX : (typeof(v.skewX) === "number") ? v.skewX * _DEG2RAD : _parseAngle(v.skewX, m1.skewX);
+
+                               //note: for performance reasons, we combine all skewing into the skewX and rotation values, ignoring skewY but we must still record it so that we can discern how much of the overall skew is attributed to skewX vs. skewY. Otherwise, if the skewY would always act relative (tween skewY to 10deg, for example, multiple times and if we always combine things into skewX, we can't remember that skewY was 10 from last time). Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of -10 degrees.
+                               m2.skewY = (v.skewY == null) ? m1.skewY : (typeof(v.skewY) === "number") ? v.skewY * _DEG2RAD : _parseAngle(v.skewY, m1.skewY);
+                               if ((skewY = m2.skewY - m1.skewY)) {
+                                       m2.skewX += skewY;
+                                       m2.rotation += skewY;
+                               }
+                               //don't allow rotation/skew values to be a SUPER small decimal because when they're translated back to strings for setting the css property, the browser reports them in a funky way, like 1-e7. Of course we could use toFixed() to resolve that issue but that hurts performance quite a bit with all those function calls on every frame, plus it is virtually impossible to discern values that small visually (nobody will notice changing a rotation of 0.0000001 to 0, so the performance improvement is well worth it).
+                               if (m2.skewY < min) if (m2.skewY > -min) {
+                                       m2.skewY = 0;
+                               }
+                               if (m2.skewX < min) if (m2.skewX > -min) {
+                                       m2.skewX = 0;
+                               }
+                               if (m2.rotation < min) if (m2.rotation > -min) {
+                                       m2.rotation = 0;
+                               }
+                       }
+
+                       has3D = (m1.z || m1.rotationX || m1.rotationY || m2.z || m2.rotationX || m2.rotationY || m2.perspective);
+                       if (!has3D && m2.scale != null) {
+                               m2.scaleZ = 1; //no need to tween scaleZ.
+                       }
+
+                       while (--i > -1) {
+                               p = _transformProps[i];
+                               orig = m2[p] - m1[p];
+                               if (orig > min || orig < -min || _forcePT[p] != null) {
+                                       hasChange = true;
+                                       pt = new CSSPropTween(m1, p, m1[p], orig, pt);
+                                       pt.xs0 = 0; //ensures the value stays numeric in setRatio()
+                                       pt.plugin = plugin;
+                                       cssp._overwriteProps.push(pt.n);
+                               }
+                       }
+
+                       orig = v.transformOrigin;
+                       if (orig || (_supports3D && has3D && m1.zOrigin)) { //if anything 3D is happening and there's a transformOrigin with a z component that's non-zero, we must ensure that the transformOrigin's z-component is set to 0 so that we can manually do those calculations to get around Safari bugs. Even if the user didn't specifically define a "transformOrigin" in this particular tween (maybe they did it via css directly).
+                               if (_transformProp) {
+                                       hasChange = true;
+                                       orig = (orig || _getStyle(t, p, _cs, false, "50% 50%")) + ""; //cast as string to avoid errors
+                                       p = _transformOriginProp;
+                                       pt = new CSSPropTween(style, p, 0, 0, pt, -1, "css_transformOrigin");
+                                       pt.b = style[p];
+                                       pt.plugin = plugin;
+                                       if (_supports3D) {
+                                               copy = m1.zOrigin;
+                                               orig = orig.split(" ");
+                                               m1.zOrigin = ((orig.length > 2) ? parseFloat(orig[2]) : copy) || 0; //Safari doesn't handle the z part of transformOrigin correctly, so we'll manually handle it in the _set3DTransformRatio() method.
+                                               pt.xs0 = pt.e = style[p] = orig[0] + " " + (orig[1] || "50%") + " 0px"; //we must define a z value of 0px specifically otherwise iOS 5 Safari will stick with the old one (if one was defined)!
+                                               pt = new CSSPropTween(m1, "zOrigin", 0, 0, pt, -1, pt.n); //we must create a CSSPropTween for the _gsTransform.zOrigin so that it gets reset properly at the beginning if the tween runs backward (as opposed to just setting m1.zOrigin here)
+                                               pt.b = copy;
+                                               pt.xs0 = pt.e = m1.zOrigin;
+                                       } else {
+                                               pt.xs0 = pt.e = style[p] = orig;
+                                       }
+
+                               //for older versions of IE (6-8), we need to manually calculate things inside the setRatio() function. We record origin x and y (ox and oy) and whether or not the values are percentages (oxp and oyp).
+                               } else {
+                                       _parsePosition(orig + "", m1);
+                               }
+                       }
+
+                       if (hasChange) {
+                               cssp._transformType = (has3D || this._transformType === 3) ? 3 : 2; //quicker than calling cssp._enableTransforms();
+                       }
+                       return pt;
+               }, true);
+
+               _registerComplexSpecialProp("boxShadow", "0px 0px 0px 0px #999", null, true, true);
+               _registerComplexSpecialProp("borderRadius", "0px", function(t, e, p, cssp, pt, plugin) {
+                       e = this.format(e);
+                       var props = ["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],
+                               style = t.style,
+                               ea1, i, es2, bs2, bs, es, bn, en, w, h, esfx, bsfx, rel, hn, vn, em;
+                       w = parseFloat(t.offsetWidth);
+                       h = parseFloat(t.offsetHeight);
+                       ea1 = e.split(" ");
+                       for (i = 0; i < props.length; i++) { //if we're dealing with percentages, we must convert things separately for the horizontal and vertical axis!
+                               if (this.p.indexOf("border")) { //older browsers used a prefix
+                                       props[i] = _checkPropPrefix(props[i]);
+                               }
+                               bs = bs2 = _getStyle(t, props[i], _cs, false, "0px");
+                               if (bs.indexOf(" ") !== -1) {
+                                       bs2 = bs.split(" ");
+                                       bs = bs2[0];
+                                       bs2 = bs2[1];
+                               }
+                               es = es2 = ea1[i];
+                               bn = parseFloat(bs);
+                               bsfx = bs.substr((bn + "").length);
+                               rel = (es.charAt(1) === "=");
+                               if (rel) {
+                                       en = parseInt(es.charAt(0)+"1", 10);
+                                       es = es.substr(2);
+                                       en *= parseFloat(es);
+                                       esfx = es.substr((en + "").length - (en < 0 ? 1 : 0)) || "";
+                               } else {
+                                       en = parseFloat(es);
+                                       esfx = es.substr((en + "").length);
+                               }
+                               if (esfx === "") {
+                                       esfx = _suffixMap[p] || bsfx;
+                               }
+                               if (esfx !== bsfx) {
+                                       hn = _convertToPixels(t, "borderLeft", bn, bsfx); //horizontal number (we use a bogus "borderLeft" property just because the _convertToPixels() method searches for the keywords "Left", "Right", "Top", and "Bottom" to determine of it's a horizontal or vertical property, and we need "border" in the name so that it knows it should measure relative to the element itself, not its parent.
+                                       vn = _convertToPixels(t, "borderTop", bn, bsfx); //vertical number
+                                       if (esfx === "%") {
+                                               bs = (hn / w * 100) + "%";
+                                               bs2 = (vn / h * 100) + "%";
+                                       } else if (esfx === "em") {
+                                               em = _convertToPixels(t, "borderLeft", 1, "em");
+                                               bs = (hn / em) + "em";
+                                               bs2 = (vn / em) + "em";
+                                       } else {
+                                               bs = hn + "px";
+                                               bs2 = vn + "px";
+                                       }
+                                       if (rel) {
+                                               es = (parseFloat(bs) + en) + esfx;
+                                               es2 = (parseFloat(bs2) + en) + esfx;
+                                       }
+                               }
+                               pt = _parseComplex(style, props[i], bs + " " + bs2, es + " " + es2, false, "0px", pt);
+                       }
+                       return pt;
+               }, true, false, _getFormatter("0px 0px 0px 0px", false, true));
+               _registerComplexSpecialProp("backgroundPosition", "0 0", function(t, e, p, cssp, pt, plugin) {
+                       var bp = "background-position",
+                               cs = (_cs || _getComputedStyle(t, null)),
+                               bs = this.format( ((cs) ? _ieVers ? cs.getPropertyValue(bp + "-x") + " " + cs.getPropertyValue(bp + "-y") : cs.getPropertyValue(bp) : t.currentStyle.backgroundPositionX + " " + t.currentStyle.backgroundPositionY) || "0 0"), //Internet Explorer doesn't report background-position correctly - we must query background-position-x and background-position-y and combine them (even in IE10). Before IE9, we must do the same with the currentStyle object and use camelCase
+                               es = this.format(e),
+                               ba, ea, i, pct, overlap;
+                       if ((bs.indexOf("%") !== -1) !== (es.indexOf("%") !== -1)) {
+                               ba = bs.split(" ");
+                               ea = es.split(" ");
+                               _tempImg.setAttribute("src", _getStyle(t, "backgroundImage").replace(_urlExp, "")); //set the temp <img>'s src to the background-image so that we can measure its width/height
+                               i = 2;
+                               while (--i > -1) {
+                                       bs = ba[i];
+                                       pct = (bs.indexOf("%") !== -1);
+                                       if (pct !== (ea[i].indexOf("%") !== -1)) {
+                                               overlap = (i === 0) ? t.offsetWidth - _tempImg.width : t.offsetHeight - _tempImg.height;
+                                               ba[i] = pct ? (parseFloat(bs) / 100 * overlap) + "px" : (parseFloat(bs) / overlap * 100) + "%";
+                                       }
+                               }
+                               bs = ba.join(" ");
+                       }
+                       return this.parseComplex(t.style, bs, es, pt, plugin);
+               }, false, false, _parsePosition); //note: backgroundPosition doesn't support interpreting between px and % (start and end values should use the same units) because doing so would require determining the size of the image itself and that can't be done quickly.
+               _registerComplexSpecialProp("backgroundSize", "0 0", null, false, false, _parsePosition);
+               _registerComplexSpecialProp("perspective", "0px", null, true);
+               _registerComplexSpecialProp("perspectiveOrigin", "50% 50%", null, true);
+               _registerComplexSpecialProp("transformStyle", "preserve-3d", null, true);
+               _registerComplexSpecialProp("backfaceVisibility", "visible", null, true);
+               _registerComplexSpecialProp("margin", null, _getEdgeParser("marginTop,marginRight,marginBottom,marginLeft"));
+               _registerComplexSpecialProp("padding", null, _getEdgeParser("paddingTop,paddingRight,paddingBottom,paddingLeft"));
+               _registerComplexSpecialProp("clip", "rect(0px,0px,0px,0px)");
+               _registerComplexSpecialProp("textShadow", "0px 0px 0px #999", null, false, true);
+               _registerComplexSpecialProp("autoRound", null, function(t, e, p, cssp, pt) {return pt;}); //just so that we can ignore "autoRound"
+               _registerComplexSpecialProp("border", "0px solid #000", function(t, e, p, cssp, pt, plugin) {
+                               return this.parseComplex(t.style, this.format(_getStyle(t, "borderTopWidth", _cs, false, "0px") + " " + _getStyle(t, "borderTopStyle", _cs, false, "solid") + " " + _getStyle(t, "borderTopColor", _cs, false, "#000")), this.format(e), pt, plugin);
+                       }, false, true, function(v) {
+                               var a = v.split(" ");
+                               return a[0] + " " + (a[1] || "solid") + " " + (v.match(_colorExp) || ["#000"])[0];
+                       });
+
+
+               //opacity-related
+               var _setIEOpacityRatio = function(v) {
+                               var t = this.t, //refers to the element's style property
+                                       filters = t.filter,
+                                       val = (this.s + this.c * v) >> 0,
+                                       skip;
+                               if (val === 100) { //for older versions of IE that need to use a filter to apply opacity, we should remove the filter if opacity hits 1 in order to improve performance, but make sure there isn't a transform (matrix) or gradient in the filters.
+                                       if (filters.indexOf("atrix(") === -1 && filters.indexOf("radient(") === -1) {
+                                               t.removeAttribute("filter");
+                                               skip = (!_getStyle(this.data, "filter")); //if a class is applied that has an alpha filter, it will take effect (we don't want that), so re-apply our alpha filter in that case. We must first remove it and then check.
+                                       } else {
+                                               t.filter = filters.replace(_alphaFilterExp, "");
+                                               skip = true;
+                                       }
+                               }
+                               if (!skip) {
+                                       if (this.xn1) {
+                                               t.filter = filters = filters || "alpha(opacity=100)"; //works around bug in IE7/8 that prevents changes to "visibility" from being applied properly if the filter is changed to a different alpha on the same frame.
+                                       }
+                                       if (filters.indexOf("opacity") === -1) { //only used if browser doesn't support the standard opacity style property (IE 7 and 8)
+                                               t.filter += " alpha(opacity=" + val + ")"; //we round the value because otherwise, bugs in IE7/8 can prevent "visibility" changes from being applied properly.
+                                       } else {
+                                               t.filter = filters.replace(_opacityExp, "opacity=" + val);
+                                       }
+                               }
+                       };
+               _registerComplexSpecialProp("opacity,alpha,autoAlpha", "1", function(t, e, p, cssp, pt, plugin) {
+                       var b = parseFloat(_getStyle(t, "opacity", _cs, false, "1")),
+                               style = t.style,
+                               vb;
+                       e = parseFloat(e);
+                       if (p === "autoAlpha") {
+                               vb = _getStyle(t, "visibility", _cs);
+                               if (b === 1 && vb === "hidden" && e !== 0) { //if visibility is initially set to "hidden", we should interpret that as intent to make opacity 0 (a convenience)
+                                       b = 0;
+                               }
+                               pt = new CSSPropTween(style, "visibility", 0, 0, pt, -1, null, false, 0, ((b !== 0) ? "visible" : "hidden"), ((e === 0) ? "hidden" : "visible"));
+                               pt.xs0 = "visible";
+                               cssp._overwriteProps.push(pt.n);
+                       }
+                       if (_supportsOpacity) {
+                               pt = new CSSPropTween(style, "opacity", b, e - b, pt);
+                       } else {
+                               pt = new CSSPropTween(style, "opacity", b * 100, (e - b) * 100, pt);
+                               pt.xn1 = (p === "autoAlpha") ? 1 : 0; //we need to record whether or not this is an autoAlpha so that in the setRatio(), we know to duplicate the setting of the alpha in order to work around a bug in IE7 and IE8 that prevents changes to "visibility" from taking effect if the filter is changed to a different alpha(opacity) at the same time. Setting it to the SAME value first, then the new value works around the IE7/8 bug.
+                               style.zoom = 1; //helps correct an IE issue.
+                               pt.type = 2;
+                               pt.b = "alpha(opacity=" + pt.s + ")";
+                               pt.e = "alpha(opacity=" + (pt.s + pt.c) + ")";
+                               pt.data = t;
+                               pt.plugin = plugin;
+                               pt.setRatio = _setIEOpacityRatio;
+                       }
+                       return pt;
+               });
+
+
+               var _setClassNameRatio = function(v) {
+                       if (v === 1 || v === 0) {
+                               this.t.className = (v === 1) ? this.e : this.b;
+                               var mpt = this.data, //first MiniPropTween
+                                       s = this.t.style,
+                                       removeProp = s.removeProperty ? "removeProperty" : "removeAttribute"; //note: old versions of IE use "removeAttribute()" instead of "removeProperty()"
+                               while (mpt) {
+                                       if (!mpt.v) {
+                                               s[removeProp](mpt.p.replace(_capsExp, "-$1").toLowerCase());
+                                       } else {
+                                               s[mpt.p] = mpt.v;
+                                       }
+                                       mpt = mpt._next;
+                               }
+                       } else if (this.t.className !== this.b) {
+                               this.t.className = this.b;
+                       }
+               };
+               _registerComplexSpecialProp("className", null, function(t, e, p, cssp, pt, plugin, vars) {
+                       var b = t.className,
+                               cssText = t.style.cssText,
+                               difData, bs;
+                       pt = cssp._classNamePT = new CSSPropTween(t, p, 0, 0, pt, 2);
+                       pt.setRatio = _setClassNameRatio;
+                       pt.b = b;
+                       pt.e = (e.charAt(1) !== "=") ? e : (e.charAt(0) === "+") ? b + " " + e.substr(2) : b.split(e.substr(2)).join("");
+                       if (cssp._tween._duration) { //if it's a zero-duration tween, there's no need to tween anything or parse the data. In fact, if we switch classes temporarily (which we must do for proper parsing) and the class has a transition applied, it could cause a quick flash to the end state and back again initially in some browsers.
+                               bs = _getAllStyles(t, _cs, true);
+                               t.className = pt.e;
+                               difData = _cssDif(t, bs, _getAllStyles(t), vars);
+                               t.className = b;
+                               pt.data = difData.firstMPT;
+                               t.style.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity). Note: see _getAllStyles() for the code that reverts things and makes the className CSSPropTween run its setRatio(0). Also, we record the className CSSPropTween instance in the element's _gsOverwrittenClassNamePT property (a linked list).
+                               pt = pt.xfirst = cssp.parse(t, difData.difs, pt, plugin); //we record the CSSPropTween as the xfirst so that we can handle overwriting propertly (if "className" gets overwritten, we must kill all the properties associated with the className part of the tween, so we can loop through from xfirst to the pt itself)
+                       }
+                       return pt;
+               });
+
+               p = "bezier,throwProps,physicsProps,physics2D".split(",");
+               i = p.length;
+               while (i--) {
+                       _registerPluginProp(p[i]);
+               }
+
+
+
+
+
+
+
+
+               p = CSSPlugin.prototype;
+               p._firstPT = null;
+
+               //gets called when the tween renders for the first time. This kicks everything off, recording start/end values, etc.
+               p._onInitTween = function(target, vars, tween) {
+                       if (!target.nodeType) { //css is only for dom elements
+                               return false;
+                       }
+                       this._target = target;
+                       this._tween = tween;
+                       this._vars = vars;
+                       _autoRound = vars.autoRound;
+                       _hasPriority = false;
+                       _suffixMap = vars.suffixMap || CSSPlugin.suffixMap;
+                       _cs = _getComputedStyle(target, "");
+                       _overwriteProps = this._overwriteProps;
+                       var style = target.style,
+                               v, pt, pt2, first, last, next, zIndex, tpt, threeD;
+
+                       if (_reqSafariFix) if (style.zIndex === "") {
+                               v = _getStyle(target, "zIndex", _cs);
+                               if (v === "auto" || v === "") {
+                                       //corrects a bug in [non-Android] Safari that prevents it from repainting elements in their new positions if they don't have a zIndex set. We also can't just apply this inside _parseTransform() because anything that's moved in any way (like using "left" or "top" instead of transforms like "x" and "y") can be affected, so it is best to ensure that anything that's tweening has a z-index. Setting "WebkitPerspective" to a non-zero value worked too except that on iOS Safari things would flicker randomly. Plus zIndex is less memory-intensive.
+                                       style.zIndex = 0;
+                               }
+                       }
+
+                       if (typeof(vars) === "string") {
+                               first = style.cssText;
+                               v = _getAllStyles(target, _cs);
+                               style.cssText = first + ";" + vars;
+                               v = _cssDif(target, v, _getAllStyles(target)).difs;
+                               if (!_supportsOpacity && _opacityValExp.test(vars)) {
+                                       v.opacity = parseFloat( RegExp.$1 );
+                               }
+                               vars = v;
+                               style.cssText = first;
+                       }
+                       this._firstPT = pt = this.parse(target, vars, null);
+
+                       if (this._transformType) {
+                               threeD = (this._transformType === 3);
+                               if (!_transformProp) {
+                                       style.zoom = 1; //helps correct an IE issue.
+                               } else if (_isSafari) {
+                                       _reqSafariFix = true;
+                                       //if zIndex isn't set, iOS Safari doesn't repaint things correctly sometimes (seemingly at random).
+                                       if (style.zIndex === "") {
+                                               zIndex = _getStyle(target, "zIndex", _cs);
+                                               if (zIndex === "auto" || zIndex === "") {
+                                                       style.zIndex = 0;
+                                               }
+                                       }
+                                       //Setting WebkitBackfaceVisibility corrects 3 bugs:
+                                       // 1) [non-Android] Safari skips rendering changes to "top" and "left" that are made on the same frame/render as a transform update.
+                                       // 2) iOS Safari sometimes neglects to repaint elements in their new positions. Setting "WebkitPerspective" to a non-zero value worked too except that on iOS Safari things would flicker randomly.
+                                       // 3) Safari sometimes displayed odd artifacts when tweening the transform (or WebkitTransform) property, like ghosts of the edges of the element remained. Definitely a browser bug.
+                                       //Note: we allow the user to override the auto-setting by defining WebkitBackfaceVisibility in the vars of the tween.
+                                       if (_isSafariLT6) {
+                                               style.WebkitBackfaceVisibility = this._vars.WebkitBackfaceVisibility || (threeD ? "visible" : "hidden");
+                                       }
+                               }
+                               pt2 = pt;
+                               while (pt2 && pt2._next) {
+                                       pt2 = pt2._next;
+                               }
+                               tpt = new CSSPropTween(target, "transform", 0, 0, null, 2);
+                               this._linkCSSP(tpt, null, pt2);
+                               tpt.setRatio = (threeD && _supports3D) ? _set3DTransformRatio : _transformProp ? _set2DTransformRatio : _setIETransformRatio;
+                               tpt.data = this._transform || _getTransform(target, _cs, true);
+                               _overwriteProps.pop(); //we don't want to force the overwrite of all "transform" tweens of the target - we only care about individual transform properties like scaleX, rotation, etc. The CSSPropTween constructor automatically adds the property to _overwriteProps which is why we need to pop() here.
+                       }
+
+                       if (_hasPriority) {
+                               //reorders the linked list in order of pr (priority)
+                               while (pt) {
+                                       next = pt._next;
+                                       pt2 = first;
+                                       while (pt2 && pt2.pr > pt.pr) {
+                                               pt2 = pt2._next;
+                                       }
+                                       if ((pt._prev = pt2 ? pt2._prev : last)) {
+                                               pt._prev._next = pt;
+                                       } else {
+                                               first = pt;
+                                       }
+                                       if ((pt._next = pt2)) {
+                                               pt2._prev = pt;
+                                       } else {
+                                               last = pt;
+                                       }
+                                       pt = next;
+                               }
+                               this._firstPT = first;
+                       }
+                       return true;
+               };
+
+
+               p.parse = function(target, vars, pt, plugin) {
+                       var style = target.style,
+                               p, sp, bn, en, bs, es, bsfx, esfx, isStr, rel;
+                       for (p in vars) {
+                               es = vars[p]; //ending value string
+                               sp = _specialProps[p]; //SpecialProp lookup.
+                               if (sp) {
+                                       pt = sp.parse(target, es, p, this, pt, plugin, vars);
+
+                               } else {
+                                       bs = _getStyle(target, p, _cs) + "";
+                                       isStr = (typeof(es) === "string");
+                                       if (p === "color" || p === "fill" || p === "stroke" || p.indexOf("Color") !== -1 || (isStr && !es.indexOf("rgb"))) { //Opera uses background: to define color sometimes in addition to backgroundColor:
+                                               if (!isStr) {
+                                                       es = _parseColor(es);
+                                                       es = ((es.length > 3) ? "rgba(" : "rgb(") + es.join(",") + ")";
+                                               }
+                                               pt = _parseComplex(style, p, bs, es, true, "transparent", pt, 0, plugin);
+
+
+                                       } else if (isStr && (es.indexOf(" ") !== -1 || es.indexOf(",") !== -1)) {
+                                               pt = _parseComplex(style, p, bs, es, true, null, pt, 0, plugin);
+
+                                       } else {
+                                               bn = parseFloat(bs);
+                                               bsfx = (bn || bn === 0) ? bs.substr((bn + "").length) : ""; //remember, bs could be non-numeric like "normal" for fontWeight, so we should default to a blank suffix in that case.
+
+                                               if (bs === "" || bs === "auto") {
+                                                       if (p === "width" || p === "height") {
+                                                               bn = _getDimension(target, p, _cs);
+                                                               bsfx = "px";
+                                                       } else {
+                                                               bn = (p !== "opacity") ? 0 : 1;
+                                                               bsfx = "";
+                                                       }
+                                               }
+
+                                               rel = (isStr && es.charAt(1) === "=");
+                                               if (rel) {
+                                                       en = parseInt(es.charAt(0)+"1", 10);
+                                                       es = es.substr(2);
+                                                       en *= parseFloat(es);
+                                                       esfx = es.substr((en + "").length - (en < 0 ? 1 : 0)) || "";
+                                               } else {
+                                                       en = parseFloat(es);
+                                                       esfx = isStr ? es.substr((en + "").length) || "" : "";
+                                               }
+
+                                               if (esfx === "") {
+                                                       esfx = _suffixMap[p] || bsfx; //populate the end suffix, prioritizing the map, then if none is found, use the beginning suffix.
+                                               }
+
+                                               es = (en || en === 0) ? (rel ? en + bn : en) + esfx : vars[p]; //ensures that any += or -= prefixes are taken care of. Record the end value before normalizing the suffix because we always want to end the tween on exactly what they intended even if it doesn't match the beginning value's suffix.
+
+                                               //if the beginning/ending suffixes don't match, normalize them...
+                                               if (bsfx !== esfx) if (esfx !== "") if (en || en === 0) if (bn || bn === 0) {
+                                                       bn = _convertToPixels(target, p, bn, bsfx);
+                                                       if (esfx === "%") {
+                                                               bn /= _convertToPixels(target, p, 100, "%") / 100;
+                                                               if (bn > 100) { //extremely rare
+                                                                       bn = 100;
+                                                               }
+
+                                                       } else if (esfx === "em") {
+                                                               bn /= _convertToPixels(target, p, 1, "em");
+
+                                                       //otherwise convert to pixels.
+                                                       } else {
+                                                               en = _convertToPixels(target, p, en, esfx);
+                                                               esfx = "px"; //we don't use bsfx after this, so we don't need to set it to px too.
+                                                       }
+                                                       if (rel) if (en || en === 0) {
+                                                               es = (en + bn) + esfx; //the changes we made affect relative calculations, so adjust the end value here.
+                                                       }
+                                               }
+
+                                               if (rel) {
+                                                       en += bn;
+                                               }
+
+                                               if ((bn || bn === 0) && (en || en === 0)) { //faster than isNaN(). Also, previously we required en !== bn but that doesn't really gain much performance and it prevents _parseToProxy() from working properly if beginning and ending values match but need to get tweened by an external plugin anyway. For example, a bezier tween where the target starts at left:0 and has these points: [{left:50},{left:0}] wouldn't work properly because when parsing the last point, it'd match the first (current) one and a non-tweening CSSPropTween would be recorded when we actually need a normal tween (type:0) so that things get updated during the tween properly.
+                                                       pt = new CSSPropTween(style, p, bn, en - bn, pt, 0, "css_" + p, (_autoRound !== false && (esfx === "px" || p === "zIndex")), 0, bs, es);
+                                                       pt.xs0 = esfx;
+                                                       //DEBUG: _log("tween "+p+" from "+pt.b+" to "+pt.e+" with suffix: "+pt.xs0)
+                                               } else if (!es && (es + "" === "NaN" || es == null)) {
+                                                       _log("invalid " + p + " tween value. ");
+                                               } else {
+                                                       pt = new CSSPropTween(style, p, en || bn || 0, 0, pt, -1, "css_" + p, false, 0, bs, es);
+                                                       pt.xs0 = (p === "display" && es === "none") ? bs : es; //intermediate value is typically the same as the end value except for "display"
+                                                       //DEBUG: _log("non-tweening value "+p+": "+pt.xs0);
+                                               }
+                                       }
+                               }
+                               if (plugin) if (pt && !pt.plugin) {
+                                       pt.plugin = plugin;
+                               }
+                       }
+                       return pt;
+               };
+
+
+               //gets called every time the tween updates, passing the new ratio (typically a value between 0 and 1, but not always (for example, if an Elastic.easeOut is used, the value can jump above 1 mid-tween). It will always start and 0 and end at 1.
+               p.setRatio = function(v) {
+                       var pt = this._firstPT,
+                               min = 0.000001,
+                               val, str, i;
+
+                       //at the end of the tween, we set the values to exactly what we received in order to make sure non-tweening values (like "position" or "float" or whatever) are set and so that if the beginning/ending suffixes (units) didn't match and we normalized to px, the value that the user passed in is used here. We check to see if the tween is at its beginning in case it's a from() tween in which case the ratio will actually go from 1 to 0 over the course of the tween (backwards).
+                       if (v === 1 && (this._tween._time === this._tween._duration || this._tween._time === 0)) {
+                               while (pt) {
+                                       if (pt.type !== 2) {
+                                               pt.t[pt.p] = pt.e;
+                                       } else {
+                                               pt.setRatio(v);
+                                       }
+                                       pt = pt._next;
+                               }
+
+                       } else if (v || !(this._tween._time === this._tween._duration || this._tween._time === 0) || this._tween._rawPrevTime === -0.000001) {
+                               while (pt) {
+                                       val = pt.c * v + pt.s;
+                                       if (pt.r) {
+                                               val = (val > 0) ? (val + 0.5) >> 0 : (val - 0.5) >> 0;
+                                       } else if (val < min) if (val > -min) {
+                                               val = 0;
+                                       }
+                                       if (!pt.type) {
+                                               pt.t[pt.p] = val + pt.xs0;
+                                       } else if (pt.type === 1) { //complex value (one that typically has multiple numbers inside a string, like "rect(5px,10px,20px,25px)"
+                                               i = pt.l;
+                                               if (i === 2) {
+                                                       pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2;
+                                               } else if (i === 3) {
+                                                       pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2 + pt.xn2 + pt.xs3;
+                                               } else if (i === 4) {
+                                                       pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2 + pt.xn2 + pt.xs3 + pt.xn3 + pt.xs4;
+                                               } else if (i === 5) {
+                                                       pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2 + pt.xn2 + pt.xs3 + pt.xn3 + pt.xs4 + pt.xn4 + pt.xs5;
+                                               } else {
+                                                       str = pt.xs0 + val + pt.xs1;
+                                                       for (i = 1; i < pt.l; i++) {
+                                                               str += pt["xn"+i] + pt["xs"+(i+1)];
+                                                       }
+                                                       pt.t[pt.p] = str;
+                                               }
+
+                                       } else if (pt.type === -1) { //non-tweening value
+                                               pt.t[pt.p] = pt.xs0;
+
+                                       } else if (pt.setRatio) { //custom setRatio() for things like SpecialProps, external plugins, etc.
+                                               pt.setRatio(v);
+                                       }
+                                       pt = pt._next;
+                               }
+
+                               //if the tween is reversed all the way back to the beginning, we need to restore the original values which may have different units (like % instead of px or em or whatever).
+                       } else {
+                               while (pt) {
+                                       if (pt.type !== 2) {
+                                               pt.t[pt.p] = pt.b;
+                                       } else {
+                                               pt.setRatio(v);
+                                       }
+                                       pt = pt._next;
+                               }
+                       }
+               };
+
+               /**
+                * @private
+                * Forces rendering of the target's transforms (rotation, scale, etc.) whenever the CSSPlugin's setRatio() is called.
+                * Basically, this tells the CSSPlugin to create a CSSPropTween (type 2) after instantiation that runs last in the linked
+                * list and calls the appropriate (3D or 2D) rendering function. We separate this into its own method so that we can call
+                * it from other plugins like BezierPlugin if, for example, it needs to apply an autoRotation and this CSSPlugin
+                * doesn't have any transform-related properties of its own. You can call this method as many times as you
+                * want and it won't create duplicate CSSPropTweens.
+                *
+                * @param {boolean} threeD if true, it should apply 3D tweens (otherwise, just 2D ones are fine and typically faster)
+                */
+               p._enableTransforms = function(threeD) {
+                       this._transformType = (threeD || this._transformType === 3) ? 3 : 2;
+               };
+
+               /** @private **/
+               p._linkCSSP = function(pt, next, prev, remove) {
+                       if (pt) {
+                               if (next) {
+                                       next._prev = pt;
+                               }
+                               if (pt._next) {
+                                       pt._next._prev = pt._prev;
+                               }
+                               if (prev) {
+                                       prev._next = pt;
+                               } else if (!remove && this._firstPT === null) {
+                                       this._firstPT = pt;
+                               }
+                               if (pt._prev) {
+                                       pt._prev._next = pt._next;
+                               } else if (this._firstPT === pt) {
+                                       this._firstPT = pt._next;
+                               }
+                               pt._next = next;
+                               pt._prev = prev;
+                       }
+                       return pt;
+               };
+
+               //we need to make sure that if alpha or autoAlpha is killed, opacity is too. And autoAlpha affects the "visibility" property.
+               p._kill = function(lookup) {
+                       var copy = lookup,
+                               changed = false,
+                               pt, p, xfirst;
+                       if (lookup.css_autoAlpha || lookup.css_alpha) {
+                               copy = {};
+                               for (p in lookup) { //copy the lookup so that we're not changing the original which may be passed elsewhere.
+                                       copy[p] = lookup[p];
+                               }
+                               copy.css_opacity = 1;
+                               if (copy.css_autoAlpha) {
+                                       copy.css_visibility = 1;
+                               }
+                       }
+                       if (lookup.css_className && (pt = this._classNamePT)) {
+                               xfirst = pt.xfirst;
+                               if (xfirst && xfirst._prev) {
+                                       this._linkCSSP(xfirst._prev, pt._next, xfirst._prev._prev); //break off the prev
+                               } else if (xfirst === this._firstPT) {
+                                       this._firstPT = null;
+                               }
+                               if (pt._next) {
+                                       this._linkCSSP(pt._next, pt._next._next, xfirst._prev);
+                               }
+                               this._target._gsOverwrittenClassNamePT = this._linkCSSP(pt, this._target._gsOverwrittenClassNamePT);
+                               this._classNamePT = null;
+                               changed = true;
+                       }
+                       return TweenPlugin.prototype._kill.call(this, copy) || changed;
+               };
+
+
+               TweenPlugin.activate([CSSPlugin]);
+               return CSSPlugin;
+
+       }, true);
+
+       
+       
+       
+       
+       
+       
+       
+       
+       
+       
+/*
+ * ----------------------------------------------------------------
+ * RoundPropsPlugin
+ * ----------------------------------------------------------------
+ */
+       _gsDefine("plugins.RoundPropsPlugin", ["plugins.TweenPlugin"], function(TweenPlugin) {
+
+               var RoundPropsPlugin = function(props, priority) {
+                               TweenPlugin.call(this, "roundProps", -1);
+                               this._overwriteProps.length = 0;
+                       },
+                       p = RoundPropsPlugin.prototype = new TweenPlugin("roundProps", -1);
+
+               p.constructor = RoundPropsPlugin;
+               RoundPropsPlugin.API = 2;
+
+               p._onInitTween = function(target, value, tween) {
+                       this._tween = tween;
+                       return true;
+               };
+
+               p._onInitAllProps = function() {
+                       var tween = this._tween,
+                               rp = (tween.vars.roundProps instanceof Array) ? tween.vars.roundProps : tween.vars.roundProps.split(","),
+                               i = rp.length,
+                               lookup = {},
+                               rpt = tween._propLookup.roundProps,
+                               prop, pt, next;
+                       while (--i > -1) {
+                               lookup[rp[i]] = 1;
+                       }
+                       i = rp.length;
+                       while (--i > -1) {
+                               prop = rp[i];
+                               pt = tween._firstPT;
+                               while (pt) {
+                                       next = pt._next; //record here, because it may get removed
+                                       if (pt.pg) {
+                                               pt.t._roundProps(lookup, true);
+                                       } else if (pt.n === prop) {
+                                               this._add(pt.t, prop, pt.s, pt.c);
+                                               //remove from linked list
+                                               if (next) {
+                                                       next._prev = pt._prev;
+                                               }
+                                               if (pt._prev) {
+                                                       pt._prev._next = next;
+                                               } else if (tween._firstPT === pt) {
+                                                       tween._firstPT = next;
+                                               }
+                                               pt._next = pt._prev = null;
+                                               tween._propLookup[prop] = rpt;
+                                       }
+                                       pt = next;
+                               }
+                       }
+                       return false;
+               };
+
+               p._add = function(target, p, s, c) {
+                       this._addTween(target, p, s, s + c, p, true);
+                       this._overwriteProps.push(p);
+               };
+
+               TweenPlugin.activate([RoundPropsPlugin]);
+
+               return RoundPropsPlugin;
+
+       }, true);
+
+
+       
+       
+       
+       
+       
+       
+       
+/*
+ * ----------------------------------------------------------------
+ * EasePack
+ * ----------------------------------------------------------------
+ */
+       _gsDefine("easing.Back", ["easing.Ease"], function(Ease) {
+               
+               var w = window,
+                       gs = w.com.greensock,
+                       _2PI = Math.PI * 2,
+                       _HALF_PI = Math.PI / 2,
+                       _class = gs._class,
+                       _create = function(n, f) {
+                               var C = _class("easing." + n, function(){}, true),
+                                       p = C.prototype = new Ease();
+                               p.constructor = C;
+                               p.getRatio = f;
+                               return C;
+                       },
+                       _easeReg = Ease.register || function(){}, //put an empty function in place just as a safety measure in case someone loads an OLD version of TweenLite.js where Ease.register doesn't exist.
+                       _wrap = function(name, EaseOut, EaseIn, EaseInOut, aliases) {
+                               var C = _class("easing."+name, {
+                                       easeOut:new EaseOut(),
+                                       easeIn:new EaseIn(),
+                                       easeInOut:new EaseInOut()
+                               }, true);
+                               _easeReg(C, name);
+                               return C;
+                       },
+
+                       //Back
+                       _createBack = function(n, f) {
+                               var C = _class("easing." + n, function(overshoot) {
+                                               this._p1 = (overshoot || overshoot === 0) ? overshoot : 1.70158;
+                                               this._p2 = this._p1 * 1.525;
+                                       }, true),
+                                       p = C.prototype = new Ease();
+                               p.constructor = C;
+                               p.getRatio = f;
+                               p.config = function(overshoot) {
+                                       return new C(overshoot);
+                               };
+                               return C;
+                       },
+
+                       Back = _wrap("Back",
+                               _createBack("BackOut", function(p) {
+                                       return ((p = p - 1) * p * ((this._p1 + 1) * p + this._p1) + 1);
+                               }),
+                               _createBack("BackIn", function(p) {
+                                       return p * p * ((this._p1 + 1) * p - this._p1);
+                               }),
+                               _createBack("BackInOut", function(p) {
+                                       return ((p *= 2) < 1) ? 0.5 * p * p * ((this._p2 + 1) * p - this._p2) : 0.5 * ((p -= 2) * p * ((this._p2 + 1) * p + this._p2) + 2);
+                               })
+                       ),
+
+
+                       //SlowMo
+                       SlowMo = _class("easing.SlowMo", function(linearRatio, power, yoyoMode) {
+                               power = (power || power === 0) ? power : 0.7;
+                               if (linearRatio == null) {
+                                       linearRatio = 0.7;
+                               } else if (linearRatio > 1) {
+                                       linearRatio = 1;
+                               }
+                               this._p = (linearRatio !== 1) ? power : 0;
+                               this._p1 = (1 - linearRatio) / 2;
+                               this._p2 = linearRatio;
+                               this._p3 = this._p1 + this._p2;
+                               this._calcEnd = (yoyoMode === true);
+                       }, true),
+                       p = SlowMo.prototype = new Ease(),
+                       SteppedEase, _createElastic;
+
+               p.constructor = SlowMo;
+               p.getRatio = function(p) {
+                       var r = p + (0.5 - p) * this._p;
+                       if (p < this._p1) {
+                               return this._calcEnd ? 1 - ((p = 1 - (p / this._p1)) * p) : r - ((p = 1 - (p / this._p1)) * p * p * p * r);
+                       } else if (p > this._p3) {
+                               return this._calcEnd ? 1 - (p = (p - this._p3) / this._p1) * p : r + ((p - r) * (p = (p - this._p3) / this._p1) * p * p * p);
+                       }
+                       return this._calcEnd ? 1 : r;
+               };
+               SlowMo.ease = new SlowMo(0.7, 0.7);
+
+               p.config = SlowMo.config = function(linearRatio, power, yoyoMode) {
+                       return new SlowMo(linearRatio, power, yoyoMode);
+               };
+
+
+               //SteppedEase
+               SteppedEase = _class("easing.SteppedEase", function(steps) {
+                               steps = steps || 1;
+                               this._p1 = 1 / steps;
+                               this._p2 = steps + 1;
+                       }, true);
+               p = SteppedEase.prototype = new Ease();
+               p.constructor = SteppedEase;
+               p.getRatio = function(p) {
+                       if (p < 0) {
+                               p = 0;
+                       } else if (p >= 1) {
+                               p = 0.999999999;
+                       }
+                       return ((this._p2 * p) >> 0) * this._p1;
+               };
+               p.config = SteppedEase.config = function(steps) {
+                       return new SteppedEase(steps);
+               };
+
+
+               //Bounce
+               _wrap("Bounce",
+                       _create("BounceOut", function(p) {
+                               if (p < 1 / 2.75) {
+                                       return 7.5625 * p * p;
+                               } else if (p < 2 / 2.75) {
+                                       return 7.5625 * (p -= 1.5 / 2.75) * p + 0.75;
+                               } else if (p < 2.5 / 2.75) {
+                                       return 7.5625 * (p -= 2.25 / 2.75) * p + 0.9375;
+                               }
+                               return 7.5625 * (p -= 2.625 / 2.75) * p + 0.984375;
+                       }),
+                       _create("BounceIn", function(p) {
+                               if ((p = 1 - p) < 1 / 2.75) {
+                                       return 1 - (7.5625 * p * p);
+                               } else if (p < 2 / 2.75) {
+                                       return 1 - (7.5625 * (p -= 1.5 / 2.75) * p + 0.75);
+                               } else if (p < 2.5 / 2.75) {
+                                       return 1 - (7.5625 * (p -= 2.25 / 2.75) * p + 0.9375);
+                               }
+                               return 1 - (7.5625 * (p -= 2.625 / 2.75) * p + 0.984375);
+                       }),
+                       _create("BounceInOut", function(p) {
+                               var invert = (p < 0.5);
+                               if (invert) {
+                                       p = 1 - (p * 2);
+                               } else {
+                                       p = (p * 2) - 1;
+                               }
+                               if (p < 1 / 2.75) {
+                                       p = 7.5625 * p * p;
+                               } else if (p < 2 / 2.75) {
+                                       p = 7.5625 * (p -= 1.5 / 2.75) * p + 0.75;
+                               } else if (p < 2.5 / 2.75) {
+                                       p = 7.5625 * (p -= 2.25 / 2.75) * p + 0.9375;
+                               } else {
+                                       p = 7.5625 * (p -= 2.625 / 2.75) * p + 0.984375;
+                               }
+                               return invert ? (1 - p) * 0.5 : p * 0.5 + 0.5;
+                       })
+               );
+
+
+               //CIRC
+               _wrap("Circ",
+                       _create("CircOut", function(p) {
+                               return Math.sqrt(1 - (p = p - 1) * p);
+                       }),
+                       _create("CircIn", function(p) {
+                               return -(Math.sqrt(1 - (p * p)) - 1);
+                       }),
+                       _create("CircInOut", function(p) {
+                               return ((p*=2) < 1) ? -0.5 * (Math.sqrt(1 - p * p) - 1) : 0.5 * (Math.sqrt(1 - (p -= 2) * p) + 1);
+                       })
+               );
+
+
+               //Elastic
+               _createElastic = function(n, f, def) {
+                       var C = _class("easing." + n, function(amplitude, period) {
+                                       this._p1 = amplitude || 1;
+                                       this._p2 = period || def;
+                                       this._p3 = this._p2 / _2PI * (Math.asin(1 / this._p1) || 0);
+                               }, true),
+                               p = C.prototype = new Ease();
+                       p.constructor = C;
+                       p.getRatio = f;
+                       p.config = function(amplitude, period) {
+                               return new C(amplitude, period);
+                       };
+                       return C;
+               };
+               _wrap("Elastic",
+                       _createElastic("ElasticOut", function(p) {
+                               return this._p1 * Math.pow(2, -10 * p) * Math.sin( (p - this._p3) * _2PI / this._p2 ) + 1;
+                       }, 0.3),
+                       _createElastic("ElasticIn", function(p) {
+                               return -(this._p1 * Math.pow(2, 10 * (p -= 1)) * Math.sin( (p - this._p3) * _2PI / this._p2 ));
+                       }, 0.3),
+                       _createElastic("ElasticInOut", function(p) {
+                               return ((p *= 2) < 1) ? -0.5 * (this._p1 * Math.pow(2, 10 * (p -= 1)) * Math.sin( (p - this._p3) * _2PI / this._p2)) : this._p1 * Math.pow(2, -10 *(p -= 1)) * Math.sin( (p - this._p3) * _2PI / this._p2 ) *0.5 + 1;
+                       }, 0.45)
+               );
+
+
+               //Expo
+               _wrap("Expo",
+                       _create("ExpoOut", function(p) {
+                               return 1 - Math.pow(2, -10 * p);
+                       }),
+                       _create("ExpoIn", function(p) {
+                               return Math.pow(2, 10 * (p - 1)) - 0.001;
+                       }),
+                       _create("ExpoInOut", function(p) {
+                               return ((p *= 2) < 1) ? 0.5 * Math.pow(2, 10 * (p - 1)) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));
+                       })
+               );
+
+
+               //Sine
+               _wrap("Sine",
+                       _create("SineOut", function(p) {
+                               return Math.sin(p * _HALF_PI);
+                       }),
+                       _create("SineIn", function(p) {
+                               return -Math.cos(p * _HALF_PI) + 1;
+                       }),
+                       _create("SineInOut", function(p) {
+                               return -0.5 * (Math.cos(Math.PI * p) - 1);
+                       })
+               );
+
+               _class("easing.EaseLookup", {
+                               find:function(s) {
+                                       return Ease.map[s];
+                               }
+                       }, true);
+
+               //register the non-standard eases
+               _easeReg(w.SlowMo, "SlowMo", "ease,");
+               _easeReg(SteppedEase, "SteppedEase", "ease,");
+
+               return Back;
+               
+       }, true);
+
+
+}); 
+
+
+
+
+
+
+
+
+
+
+
+/*
+ * ----------------------------------------------------------------
+ * Base classes like TweenLite, SimpleTimeline, Ease, Ticker, etc.
+ * ----------------------------------------------------------------
+ */
+(function(window) {
+
+               "use strict";
+               var _globals = window.GreenSockGlobals || window,
+                       _namespace = function(ns) {
+                               var a = ns.split("."),
+                                       p = _globals, i;
+                               for (i = 0; i < a.length; i++) {
+                                       p[a[i]] = p = p[a[i]] || {};
+                               }
+                               return p;
+                       },
+                       gs = _namespace("com.greensock"),
+                       a, i, p, _gsInit,
+                       _defLookup = {},
+
+                       /**
+                        * @constructor
+                        * Defines a GreenSock class, optionally with an array of dependencies that must be instantiated first and passed into the definition.
+                        * This allows users to load GreenSock JS files in any order even if they have interdependencies (like CSSPlugin extends TweenPlugin which is
+                        * inside TweenLite.js, but if CSSPlugin is loaded first, it should wait to run its code until TweenLite.js loads and instantiates TweenPlugin
+                        * and then pass TweenPlugin to CSSPlugin's definition). This is all done automatically and internally.
+                        *
+                        * Every definition will be added to a "com.greensock" global object (typically window, but if a window.GreenSockGlobals object is found,
+                        * it will go there as of v1.7). For example, TweenLite will be found at window.com.greensock.TweenLite and since it's a global class that should be available anywhere,
+                        * it is ALSO referenced at window.TweenLite. However some classes aren't considered global, like the base com.greensock.core.Animation class, so
+                        * those will only be at the package like window.com.greensock.core.Animation. Again, if you define a GreenSockGlobals object on the window, everything
+                        * gets tucked neatly inside there instead of on the window directly. This allows you to do advanced things like load multiple versions of GreenSock
+                        * files and put them into distinct objects (imagine a banner ad uses a newer version but the main site uses an older one). In that case, you could
+                        * sandbox the banner one like:
+                        *
+                        * <script type="text/javascript">
+                        *     var gs = window.GreenSockGlobals = {}; //the newer version we're about to load could now be referenced in a "gs" object, like gs.TweenLite.to(...). Use whatever alias you want as long as it's unique, "gs" or "banner" or whatever.
+                        * </script>
+                        * <script type="text/javascript" src="js/greensock/v1.7/TweenMax.js"></script>
+                        * <script type="text/javascript">
+                        *     window.GreenSockGlobals = null; //reset it back to null so that the next load of TweenMax affects the window and we can reference things directly like TweenLite.to(...)
+                        * </script>
+                        * <script type="text/javascript" src="js/greensock/v1.6/TweenMax.js"></script>
+                        * <script type="text/javascript">
+                        *     gs.TweenLite.to(...); //would use v1.7
+                        *     TweenLite.to(...); //would use v1.6
+                        * </script>
+                        *
+                        * @param {!string} ns The namespace of the class definition, leaving off "com.greensock." as that's assumed. For example, "TweenLite" or "plugins.CSSPlugin" or "easing.Back".
+                        * @param {!Array.<string>} dependencies An array of dependencies (described as their namespaces minus "com.greensock." prefix). For example ["TweenLite","plugins.TweenPlugin","core.Animation"]
+                        * @param {!function():Object} func The function that should be called and passed the resolved dependencies which will return the actual class for this definition.
+                        * @param {boolean=} global If true, the class will be added to the global scope (typically window unless you define a window.GreenSockGlobals object)
+                        */
+                       Definition = function(ns, dependencies, func, global) {
+                               this.sc = (_defLookup[ns]) ? _defLookup[ns].sc : []; //subclasses
+                               _defLookup[ns] = this;
+                               this.gsClass = null;
+                               this.func = func;
+                               var _classes = [];
+                               this.check = function(init) {
+                                       var i = dependencies.length,
+                                               missing = i,
+                                               cur, a, n, cl;
+                                       while (--i > -1) {
+                                               if ((cur = _defLookup[dependencies[i]] || new Definition(dependencies[i], [])).gsClass) {
+                                                       _classes[i] = cur.gsClass;
+                                                       missing--;
+                                               } else if (init) {
+                                                       cur.sc.push(this);
+                                               }
+                                       }
+                                       if (missing === 0 && func) {
+                                               a = ("com.greensock." + ns).split(".");
+                                               n = a.pop();
+                                               cl = _namespace(a.join("."))[n] = this.gsClass = func.apply(func, _classes);
+
+                                               //exports to multiple environments
+                                               if (global) {
+                                                       _globals[n] = cl; //provides a way to avoid global namespace pollution. By default, the main classes like TweenLite, Power1, Strong, etc. are added to window unless a GreenSockGlobals is defined. So if you want to have things added to a custom object instead, just do something like window.GreenSockGlobals = {} before loading any GreenSock files. You can even set up an alias like window.GreenSockGlobals = windows.gs = {} so that you can access everything like gs.TweenLite. Also remember that ALL classes are added to the window.com.greensock object (in their respective packages, like com.greensock.easing.Power1, com.greensock.TweenLite, etc.)
+                                                       if (typeof(define) === "function" && define.amd){ //AMD
+                                                               define((window.GreenSockAMDPath ? window.GreenSockAMDPath + "/" : "") + ns.split(".").join("/"), [], function() { return cl; });
+                                                       } else if (typeof(module) !== "undefined" && module.exports){ //node
+                                                               module.exports = cl;
+                                                       }
+                                               }
+                                               for (i = 0; i < this.sc.length; i++) {
+                                                       this.sc[i].check();
+                                               }
+                                       }
+                               };
+                               this.check(true);
+                       },
+
+                       //used to create Definition instances (which basically registers a class that has dependencies).
+                       _gsDefine = window._gsDefine = function(ns, dependencies, func, global) {
+                               return new Definition(ns, dependencies, func, global);
+                       },
+
+                       //a quick way to create a class that doesn't have any dependencies. Returns the class, but first registers it in the GreenSock namespace so that other classes can grab it (other classes might be dependent on the class).
+                       _class = gs._class = function(ns, func, global) {
+                               func = func || function() {};
+                               _gsDefine(ns, [], function(){ return func; }, global);
+                               return func;
+                       };
+
+
+
+
+/*
+ * ----------------------------------------------------------------
+ * Ease
+ * ----------------------------------------------------------------
+ */
+               var _baseParams = [0, 0, 1, 1],
+                       _blankArray = [],
+                       Ease = _class("easing.Ease", function(func, extraParams, type, power) {
+                               this._func = func;
+                               this._type = type || 0;
+                               this._power = power || 0;
+                               this._params = extraParams ? _baseParams.concat(extraParams) : _baseParams;
+                       }, true),
+                       _easeMap = Ease.map = {},
+                       _easeReg = Ease.register = function(ease, names, types, create) {
+                               var na = names.split(","),
+                                       i = na.length,
+                                       ta = (types || "easeIn,easeOut,easeInOut").split(","),
+                                       e, name, j, type;
+                               while (--i > -1) {
+                                       name = na[i];
+                                       e = create ? _class("easing."+name, null, true) : gs.easing[name] || {};
+                                       j = ta.length;
+                                       while (--j > -1) {
+                                               type = ta[j];
+                                               _easeMap[name + "." + type] = _easeMap[type + name] = e[type] = (ease.getRatio) ? ease : ease[type] || new ease();
+                                       }
+                               }
+                       };
+
+               p = Ease.prototype;
+               p._calcEnd = false;
+               p.getRatio = function(p) {
+                       if (this._func) {
+                               this._params[0] = p;
+                               return this._func.apply(null, this._params);
+                       }
+                       var t = this._type,
+                               pw = this._power,
+                               r = (t === 1) ? 1 - p : (t === 2) ? p : (p < 0.5) ? p * 2 : (1 - p) * 2;
+                       if (pw === 1) {
+                               r *= r;
+                       } else if (pw === 2) {
+                               r *= r * r;
+                       } else if (pw === 3) {
+                               r *= r * r * r;
+                       } else if (pw === 4) {
+                               r *= r * r * r * r;
+                       }
+                       return (t === 1) ? 1 - r : (t === 2) ? r : (p < 0.5) ? r / 2 : 1 - (r / 2);
+               };
+
+               //create all the standard eases like Linear, Quad, Cubic, Quart, Quint, Strong, Power0, Power1, Power2, Power3, and Power4 (each with easeIn, easeOut, and easeInOut)
+               a = ["Linear","Quad","Cubic","Quart","Quint,Strong"];
+               i = a.length;
+               while (--i > -1) {
+                       p = a[i]+",Power"+i;
+                       _easeReg(new Ease(null,null,1,i), p, "easeOut", true);
+                       _easeReg(new Ease(null,null,2,i), p, "easeIn" + ((i === 0) ? ",easeNone" : ""));
+                       _easeReg(new Ease(null,null,3,i), p, "easeInOut");
+               }
+               _easeMap.linear = gs.easing.Linear.easeIn;
+               _easeMap.swing = gs.easing.Quad.easeOut; //for jQuery folks
+
+
+/*
+ * ----------------------------------------------------------------
+ * EventDispatcher
+ * ----------------------------------------------------------------
+ */
+               var EventDispatcher = _class("events.EventDispatcher", function(target) {
+                       this._listeners = {};
+                       this._eventTarget = target || this;
+               });
+               p = EventDispatcher.prototype;
+
+               p.addEventListener = function(type, callback, scope, useParam, priority) {
+                       priority = priority || 0;
+                       var list = this._listeners[type],
+                               index = 0,
+                               listener, i;
+                       if (list == null) {
+                               this._listeners[type] = list = [];
+                       }
+                       i = list.length;
+                       while (--i > -1) {
+                               listener = list[i];
+                               if (listener.c === callback) {
+                                       list.splice(i, 1);
+                               } else if (index === 0 && listener.pr < priority) {
+                                       index = i + 1;
+                               }
+                       }
+                       list.splice(index, 0, {c:callback, s:scope, up:useParam, pr:priority});
+               };
+
+               p.removeEventListener = function(type, callback) {
+                       var list = this._listeners[type], i;
+                       if (list) {
+                               i = list.length;
+                               while (--i > -1) {
+                                       if (list[i].c === callback) {
+                                               list.splice(i, 1);
+                                               return;
+                                       }
+                               }
+                       }
+               };
+
+               p.dispatchEvent = function(type) {
+                       var list = this._listeners[type];
+                       if (list) {
+                               var i = list.length,
+                                       t = this._eventTarget,
+                                       listener;
+                               while (--i > -1) {
+                                       listener = list[i];
+                                       if (listener.up) {
+                                               listener.c.call(listener.s || t, {type:type, target:t});
+                                       } else {
+                                               listener.c.call(listener.s || t);
+                                       }
+                               }
+                       }
+               };
+
+
+/*
+ * ----------------------------------------------------------------
+ * Ticker
+ * ----------------------------------------------------------------
+ */
+               var _reqAnimFrame = window.requestAnimationFrame,
+                       _cancelAnimFrame = window.cancelAnimationFrame,
+                       _getTime = Date.now || function() {return new Date().getTime();};
+
+               //now try to determine the requestAnimationFrame and cancelAnimationFrame functions and if none are found, we'll use a setTimeout()/clearTimeout() polyfill.
+               a = ["ms","moz","webkit","o"];
+               i = a.length;
+               while (--i > -1 && !_reqAnimFrame) {
+                       _reqAnimFrame = window[a[i] + "RequestAnimationFrame"];
+                       _cancelAnimFrame = window[a[i] + "CancelAnimationFrame"] || window[a[i] + "CancelRequestAnimationFrame"];
+               }
+
+               _class("Ticker", function(fps, useRAF) {
+                       var _self = this,
+                               _startTime = _getTime(),
+                               _useRAF = (useRAF !== false && _reqAnimFrame),
+                               _fps, _req, _id, _gap, _nextTime,
+                               _cancelReq = function() {
+                                       if (_id == null) {
+                                               return;
+                                       }
+                                       if (!_useRAF || !_cancelAnimFrame) {
+                                               window.clearTimeout(_id);
+                                       } else {
+                                               _cancelAnimFrame(_id);
+                                       }
+                                       _id = null;
+                               },
+                               _tick = function(manual) {
+                                       _self.time = (_getTime() - _startTime) / 1000;
+                                       if (!_fps || _self.time >= _nextTime || (manual === true)) {
+                                               _self.frame++;
+                                               _nextTime = (_self.time > _nextTime) ? _self.time + _gap - (_self.time - _nextTime) : _self.time + _gap - 0.001;
+                                               if (_nextTime < _self.time + 0.001) {
+                                                       _nextTime = _self.time + 0.001;
+                                               }
+                                               _self.dispatchEvent("tick");
+                                       }
+                                       if (manual !== true) {
+                                               _id = _req(_tick);
+                                       }
+                               };
+
+                       EventDispatcher.call(_self);
+                       this.time = this.frame = 0;
+                       this.tick = function() {
+                               _tick(true);
+                       };
+
+                       this.fps = function(value) {
+                               if (!arguments.length) {
+                                       return _fps;
+                               }
+                               _fps = value;
+                               _gap = 1 / (_fps || 60);
+                               _nextTime = this.time + _gap;
+                               _req = (_fps === 0) ? function(){} : (!_useRAF || !_reqAnimFrame) ? function(f) { return window.setTimeout( f, (((_nextTime - _self.time) * 1000 + 1) >> 0) || 1); } : _reqAnimFrame;
+                               _cancelReq();
+                               _id = _req(_tick);
+                       };
+
+                       this.useRAF = function(value) {
+                               if (!arguments.length) {
+                                       return _useRAF;
+                               }
+                               _cancelReq();
+                               _useRAF = value;
+                               _self.fps(_fps);
+                       };
+                       _self.fps(fps);
+
+                       //a bug in iOS 6 Safari occasionally prevents the requestAnimationFrame from working initially, so we use a 1-second timeout that automatically falls back to setTimeout() if it senses this condition.
+                       window.setTimeout(function() {
+                               if (_useRAF && !_id) {
+                                       _self.useRAF(false);
+                               }
+                       }, 1000);
+               });
+
+               p = gs.Ticker.prototype = new gs.events.EventDispatcher();
+               p.constructor = gs.Ticker;
+
+
+/*
+ * ----------------------------------------------------------------
+ * Animation
+ * ----------------------------------------------------------------
+ */
+               var Animation = _class("core.Animation", function(duration, vars) {
+                               this.vars = vars || {};
+                               this._duration = this._totalDuration = duration || 0;
+                               this._delay = Number(this.vars.delay) || 0;
+                               this._timeScale = 1;
+                               this._active = (this.vars.immediateRender === true);
+                               this.data = this.vars.data;
+                               this._reversed = (this.vars.reversed === true);
+
+                               if (!_rootTimeline) {
+                                       return;
+                               }
+                               if (!_gsInit) {
+                                       _ticker.tick(); //the first time an animation (tween or timeline) is created, we should refresh the time in order to avoid a gap. The Ticker's initial time that it records might be very early in the load process and the user may have loaded several other large scripts in the mean time, but we want tweens to act as though they started when the page's onload was fired. Also remember that the requestAnimationFrame likely won't be called until the first screen redraw.
+                                       _gsInit = true;
+                               }
+
+                               var tl = this.vars.useFrames ? _rootFramesTimeline : _rootTimeline;
+                               tl.insert(this, tl._time);
+
+                               if (this.vars.paused) {
+                                       this.paused(true);
+                               }
+                       }),
+                       _ticker = Animation.ticker = new gs.Ticker();
+
+               p = Animation.prototype;
+               p._dirty = p._gc = p._initted = p._paused = false;
+               p._totalTime = p._time = 0;
+               p._rawPrevTime = -1;
+               p._next = p._last = p._onUpdate = p._timeline = p.timeline = null;
+               p._paused = false;
+
+               p.play = function(from, suppressEvents) {
+                       if (arguments.length) {
+                               this.seek(from, suppressEvents);
+                       }
+                       this.reversed(false);
+                       return this.paused(false);
+               };
+
+               p.pause = function(atTime, suppressEvents) {
+                       if (arguments.length) {
+                               this.seek(atTime, suppressEvents);
+                       }
+                       return this.paused(true);
+               };
+
+               p.resume = function(from, suppressEvents) {
+                       if (arguments.length) {
+                               this.seek(from, suppressEvents);
+                       }
+                       return this.paused(false);
+               };
+
+               p.seek = function(time, suppressEvents) {
+                       return this.totalTime(Number(time), (suppressEvents !== false));
+               };
+
+               p.restart = function(includeDelay, suppressEvents) {
+                       this.reversed(false);
+                       this.paused(false);
+                       return this.totalTime((includeDelay) ? -this._delay : 0, (suppressEvents !== false));
+               };
+
+               p.reverse = function(from, suppressEvents) {
+                       if (arguments.length) {
+                               this.seek((from || this.totalDuration()), suppressEvents);
+                       }
+                       this.reversed(true);
+                       return this.paused(false);
+               };
+
+               p.render = function() {
+
+               };
+
+               p.invalidate = function() {
+                       return this;
+               };
+
+               p._enabled = function (enabled, ignoreTimeline) {
+                       this._gc = !enabled;
+                       this._active = (enabled && !this._paused && this._totalTime > 0 && this._totalTime < this._totalDuration);
+                       if (ignoreTimeline !== true) {
+                               if (enabled && this.timeline == null) {
+                                       this._timeline.insert(this, this._startTime - this._delay);
+                               } else if (!enabled && this.timeline != null) {
+                                       this._timeline._remove(this, true);
+                               }
+                       }
+                       return false;
+               };
+
+
+               p._kill = function(vars, target) {
+                       return this._enabled(false, false);
+               };
+
+               p.kill = function(vars, target) {
+                       this._kill(vars, target);
+                       return this;
+               };
+
+               p._uncache = function(includeSelf) {
+                       var tween = includeSelf ? this : this.timeline;
+                       while (tween) {
+                               tween._dirty = true;
+                               tween = tween.timeline;
+                       }
+                       return this;
+               };
+
+//----Animation getters/setters --------------------------------------------------------
+
+               p.eventCallback = function(type, callback, params, scope) {
+                       if (type == null) {
+                               return null;
+                       } else if (type.substr(0,2) === "on") {
+                               if (arguments.length === 1) {
+                                       return this.vars[type];
+                               }
+                               if (callback == null) {
+                                       delete this.vars[type];
+                               } else {
+                                       this.vars[type] = callback;
+                                       this.vars[type + "Params"] = params;
+                                       this.vars[type + "Scope"] = scope;
+                                       if (params) {
+                                               var i = params.length;
+                                               while (--i > -1) {
+                                                       if (params[i] === "{self}") {
+                                                               params = this.vars[type + "Params"] = params.concat(); //copying the array avoids situations where the same array is passed to multiple tweens/timelines and {self} doesn't correctly point to each individual instance.
+                                                               params[i] = this;
+                                                       }
+                                               }
+                                       }
+                               }
+                               if (type === "onUpdate") {
+                                       this._onUpdate = callback;
+                               }
+                       }
+                       return this;
+               };
+
+               p.delay = function(value) {
+                       if (!arguments.length) {
+                               return this._delay;
+                       }
+                       if (this._timeline.smoothChildTiming) {
+                               this.startTime( this._startTime + value - this._delay );
+                       }
+                       this._delay = value;
+                       return this;
+               };
+
+               p.duration = function(value) {
+                       if (!arguments.length) {
+                               this._dirty = false;
+                               return this._duration;
+                       }
+                       this._duration = this._totalDuration = value;
+                       this._uncache(true); //true in case it's a TweenMax or TimelineMax that has a repeat - we'll need to refresh the totalDuration.
+                       if (this._timeline.smoothChildTiming) if (this._time > 0) if (this._time < this._duration) if (value !== 0) {
+                               this.totalTime(this._totalTime * (value / this._duration), true);
+                       }
+                       return this;
+               };
+
+               p.totalDuration = function(value) {
+                       this._dirty = false;
+                       return (!arguments.length) ? this._totalDuration : this.duration(value);
+               };
+
+               p.time = function(value, suppressEvents) {
+                       if (!arguments.length) {
+                               return this._time;
+                       }
+                       if (this._dirty) {
+                               this.totalDuration();
+                       }
+                       if (value > this._duration) {
+                               value = this._duration;
+                       }
+                       return this.totalTime(value, suppressEvents);
+               };
+
+               p.totalTime = function(time, suppressEvents) {
+                       if (!arguments.length) {
+                               return this._totalTime;
+                       }
+                       if (this._timeline) {
+                               if (time < 0) {
+                                       time += this.totalDuration();
+                               }
+                               if (this._timeline.smoothChildTiming) {
+                                       if (this._dirty) {
+                                               this.totalDuration();
+                                       }
+                                       if (time > this._totalDuration) {
+                                               time = this._totalDuration;
+                                       }
+                                       this._startTime = (this._paused ? this._pauseTime : this._timeline._time) - ((!this._reversed ? time : this._totalDuration - time) / this._timeScale);
+                                       if (!this._timeline._dirty) { //for performance improvement. If the parent's cache is already dirty, it already took care of marking the anscestors as dirty too, so skip the function call here.
+                                               this._uncache(false);
+                                       }
+                                       if (!this._timeline._active) {
+                                               //in case any of the anscestors had completed but should now be enabled...
+                                               var tl = this._timeline;
+                                               while (tl._timeline) {
+                                                       tl.totalTime(tl._totalTime, true);
+                                                       tl = tl._timeline;
+                                               }
+                                       }
+                               }
+                               if (this._gc) {
+                                       this._enabled(true, false);
+                               }
+                               if (this._totalTime !== time) {
+                                       this.render(time, suppressEvents, false);
+                               }
+                       }
+                       return this;
+               };
+
+               p.startTime = function(value) {
+                       if (!arguments.length) {
+                               return this._startTime;
+                       }
+                       if (value !== this._startTime) {
+                               this._startTime = value;
+                               if (this.timeline) if (this.timeline._sortChildren) {
+                                       this.timeline.insert(this, value - this._delay); //ensures that any necessary re-sequencing of Animations in the timeline occurs to make sure the rendering order is correct.
+                               }
+                       }
+                       return this;
+               };
+
+               p.timeScale = function(value) {
+                       if (!arguments.length) {
+                               return this._timeScale;
+                       }
+                       value = value || 0.000001; //can't allow zero because it'll throw the math off
+                       if (this._timeline && this._timeline.smoothChildTiming) {
+                               var t = (this._pauseTime || this._pauseTime === 0) ? this._pauseTime : this._timeline._totalTime;
+                               this._startTime = t - ((t - this._startTime) * this._timeScale / value);
+                       }
+                       this._timeScale = value;
+                       return this._uncache(false);
+               };
+
+               p.reversed = function(value) {
+                       if (!arguments.length) {
+                               return this._reversed;
+                       }
+                       if (value != this._reversed) {
+                               this._reversed = value;
+                               this.totalTime(this._totalTime, true);
+                       }
+                       return this;
+               };
+
+               p.paused = function(value) {
+                       if (!arguments.length) {
+                               return this._paused;
+                       }
+                       if (value != this._paused) if (this._timeline) {
+                               if (!value && this._timeline.smoothChildTiming) {
+                                       this._startTime += this._timeline.rawTime() - this._pauseTime;
+                                       this._uncache(false);
+                               }
+                               this._pauseTime = (value) ? this._timeline.rawTime() : null;
+                               this._paused = value;
+                               this._active = (!this._paused && this._totalTime > 0 && this._totalTime < this._totalDuration);
+                       }
+                       if (this._gc) if (!value) {
+                               this._enabled(true, false);
+                       }
+                       return this;
+               };
+
+
+/*
+ * ----------------------------------------------------------------
+ * SimpleTimeline
+ * ----------------------------------------------------------------
+ */
+               var SimpleTimeline = _class("core.SimpleTimeline", function(vars) {
+                       Animation.call(this, 0, vars);
+                       this.autoRemoveChildren = this.smoothChildTiming = true;
+               });
+
+               p = SimpleTimeline.prototype = new Animation();
+               p.constructor = SimpleTimeline;
+               p.kill()._gc = false;
+               p._first = p._last = null;
+               p._sortChildren = false;
+
+               p.insert = function(tween, time) {
+                       tween._startTime = Number(time || 0) + tween._delay;
+                       if (tween._paused) if (this !== tween._timeline) { //we only adjust the _pauseTime if it wasn't in this timeline already. Remember, sometimes a tween will be inserted again into the same timeline when its startTime is changed so that the tweens in the TimelineLite/Max are re-ordered properly in the linked list (so everything renders in the proper order).
+                               tween._pauseTime = tween._startTime + ((this.rawTime() - tween._startTime) / tween._timeScale);
+                       }
+                       if (tween.timeline) {
+                               tween.timeline._remove(tween, true); //removes from existing timeline so that it can be properly added to this one.
+                       }
+                       tween.timeline = tween._timeline = this;
+                       if (tween._gc) {
+                               tween._enabled(true, true);
+                       }
+
+                       var prevTween = this._last;
+                       if (this._sortChildren) {
+                               var st = tween._startTime;
+                               while (prevTween && prevTween._startTime > st) {
+                                       prevTween = prevTween._prev;
+                               }
+                       }
+                       if (prevTween) {
+                               tween._next = prevTween._next;
+                               prevTween._next = tween;
+                       } else {
+                               tween._next = this._first;
+                               this._first = tween;
+                       }
+                       if (tween._next) {
+                               tween._next._prev = tween;
+                       } else {
+                               this._last = tween;
+                       }
+                       tween._prev = prevTween;
+
+                       if (this._timeline) {
+                               this._uncache(true);
+                       }
+                       return this;
+               };
+
+               p._remove = function(tween, skipDisable) {
+                       if (tween.timeline === this) {
+                               if (!skipDisable) {
+                                       tween._enabled(false, true);
+                               }
+                               tween.timeline = null;
+
+                               if (tween._prev) {
+                                       tween._prev._next = tween._next;
+                               } else if (this._first === tween) {
+                                       this._first = tween._next;
+                               }
+                               if (tween._next) {
+                                       tween._next._prev = tween._prev;
+                               } else if (this._last === tween) {
+                                       this._last = tween._prev;
+                               }
+
+                               if (this._timeline) {
+                                       this._uncache(true);
+                               }
+                       }
+                       return this;
+               };
+
+               p.render = function(time, suppressEvents, force) {
+                       var tween = this._first,
+                               next;
+                       this._totalTime = this._time = this._rawPrevTime = time;
+                       while (tween) {
+                               next = tween._next; //record it here because the value could change after rendering...
+                               if (tween._active || (time >= tween._startTime && !tween._paused)) {
+                                       if (!tween._reversed) {
+                                               tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, false);
+                                       } else {
+                                               tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, false);
+                                       }
+                               }
+                               tween = next;
+                       }
+               };
+
+               p.rawTime = function() {
+                       return this._totalTime;
+               };
+
+
+/*
+ * ----------------------------------------------------------------
+ * TweenLite
+ * ----------------------------------------------------------------
+ */
+               var TweenLite = _class("TweenLite", function(target, duration, vars) {
+                               Animation.call(this, duration, vars);
+
+                               if (target == null) {
+                                       throw "Cannot tween an undefined reference.";
+                               }
+                               this.target = target;
+
+                               this._overwrite = (this.vars.overwrite == null) ? _overwriteLookup[TweenLite.defaultOverwrite] : (typeof(this.vars.overwrite) === "number") ? this.vars.overwrite >> 0 : _overwriteLookup[this.vars.overwrite];
+
+                               var i, targ;
+                               if ((target instanceof Array || target.jquery) && typeof(target[0]) === "object") {
+                                       this._targets = target.slice(0); //works for both jQuery and Array instances
+                                       this._propLookup = [];
+                                       this._siblings = [];
+                                       for (i = 0; i < this._targets.length; i++) {
+                                               targ = this._targets[i];
+                                               //in case the user is passing in an array of jQuery objects, for example, we need to check one more level and pull things out if necessary...
+                                               if (targ.jquery) {
+                                                       this._targets.splice(i--, 1);
+                                                       this._targets = this._targets.concat(targ.constructor.makeArray(targ));
+                                                       continue;
+                                               }
+                                               this._siblings[i] = _register(targ, this, false);
+                                               if (this._overwrite === 1) if (this._siblings[i].length > 1) {
+                                                       _applyOverwrite(targ, this, null, 1, this._siblings[i]);
+                                               }
+                                       }
+
+                               } else {
+                                       this._propLookup = {};
+                                       this._siblings = _register(target, this, false);
+                                       if (this._overwrite === 1) if (this._siblings.length > 1) {
+                                               _applyOverwrite(target, this, null, 1, this._siblings);
+                                       }
+                               }
+
+                               if (this.vars.immediateRender || (duration === 0 && this._delay === 0 && this.vars.immediateRender !== false)) {
+                                       this.render(-this._delay, false, true);
+                               }
+                       }, true);
+
+               p = TweenLite.prototype = new Animation();
+               p.constructor = TweenLite;
+               p.kill()._gc = false;
+
+//----TweenLite defaults, overwrite management, and root updates ----------------------------------------------------
+
+               p.ratio = 0;
+               p._firstPT = p._targets = p._overwrittenProps = null;
+               p._notifyPluginsOfEnabled = false;
+
+               TweenLite.version = 1.701;
+               TweenLite.defaultEase = p._ease = new Ease(null, null, 1, 1);
+               TweenLite.defaultOverwrite = "auto";
+               TweenLite.ticker = _ticker;
+
+               var _plugins = TweenLite._plugins = {},
+                       _tweenLookup = TweenLite._tweenLookup = {},
+                       _tweenLookupNum = 0,
+                       _reservedProps = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, onCompleteScope:1, useFrames:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, onUpdateScope:1, onStart:1, onStartParams:1, onStartScope:1, onReverseComplete:1, onReverseCompleteParams:1, onReverseCompleteScope:1, onRepeat:1, onRepeatParams:1, onRepeatScope:1, easeParams:1, yoyo:1, orientToBezier:1, immediateRender:1, repeat:1, repeatDelay:1, data:1, paused:1, reversed:1},
+                       _overwriteLookup = {none:0, all:1, auto:2, concurrent:3, allOnStart:4, preexisting:5, "true":1, "false":0},
+                       _rootFramesTimeline = Animation._rootFramesTimeline = new SimpleTimeline(),
+                       _rootTimeline = Animation._rootTimeline = new SimpleTimeline();
+
+               _rootTimeline._startTime = _ticker.time;
+               _rootFramesTimeline._startTime = _ticker.frame;
+               _rootTimeline._active = _rootFramesTimeline._active = true;
+
+               Animation._updateRoot = function() {
+                               _rootTimeline.render((_ticker.time - _rootTimeline._startTime) * _rootTimeline._timeScale, false, false);
+                               _rootFramesTimeline.render((_ticker.frame - _rootFramesTimeline._startTime) * _rootFramesTimeline._timeScale, false, false);
+                               if (!(_ticker.frame % 120)) { //dump garbage every 120 frames...
+                                       var i, a, p;
+                                       for (p in _tweenLookup) {
+                                               a = _tweenLookup[p].tweens;
+                                               i = a.length;
+                                               while (--i > -1) {
+                                                       if (a[i]._gc) {
+                                                               a.splice(i, 1);
+                                                       }
+                                               }
+                                               if (a.length === 0) {
+                                                       delete _tweenLookup[p];
+                                               }
+                                       }
+                               }
+                       };
+
+               _ticker.addEventListener("tick", Animation._updateRoot);
+
+               var _register = function(target, tween, scrub) {
+                               var id = target._gsTweenID, a, i;
+                               if (!_tweenLookup[id || (target._gsTweenID = id = "t" + (_tweenLookupNum++))]) {
+                                       _tweenLookup[id] = {target:target, tweens:[]};
+                               }
+                               if (tween) {
+                                       a = _tweenLookup[id].tweens;
+                                       a[(i = a.length)] = tween;
+                                       if (scrub) {
+                                               while (--i > -1) {
+                                                       if (a[i] === tween) {
+                                                               a.splice(i, 1);
+                                                       }
+                                               }
+                                       }
+                               }
+                               return _tweenLookup[id].tweens;
+                       },
+
+                       _applyOverwrite = function(target, tween, props, mode, siblings) {
+                               var i, changed, curTween, l;
+                               if (mode === 1 || mode >= 4) {
+                                       l = siblings.length;
+                                       for (i = 0; i < l; i++) {
+                                               if ((curTween = siblings[i]) !== tween) {
+                                                       if (!curTween._gc) if (curTween._enabled(false, false)) {
+                                                               changed = true;
+                                                       }
+                                               } else if (mode === 5) {
+                                                       break;
+                                               }
+                                       }
+                                       return changed;
+                               }
+                               //NOTE: Add 0.0000000001 to overcome floating point errors that can cause the startTime to be VERY slightly off (when a tween's time() is set for example)
+                               var startTime = tween._startTime + 0.0000000001,
+                                       overlaps = [],
+                                       oCount = 0,
+                                       zeroDur = (tween._duration === 0),
+                                       globalStart;
+                               i = siblings.length;
+                               while (--i > -1) {
+                                       if ((curTween = siblings[i]) === tween || curTween._gc || curTween._paused) {
+                                               //ignore
+                                       } else if (curTween._timeline !== tween._timeline) {
+                                               globalStart = globalStart || _checkOverlap(tween, 0, zeroDur);
+                                               if (_checkOverlap(curTween, globalStart, zeroDur) === 0) {
+                                                       overlaps[oCount++] = curTween;
+                                               }
+                                       } else if (curTween._startTime <= startTime) if (curTween._startTime + curTween.totalDuration() / curTween._timeScale + 0.0000000001 > startTime) if (!((zeroDur || !curTween._initted) && startTime - curTween._startTime <= 0.0000000002)) {
+                                               overlaps[oCount++] = curTween;
+                                       }
+                               }
+
+                               i = oCount;
+                               while (--i > -1) {
+                                       curTween = overlaps[i];
+                                       if (mode === 2) if (curTween._kill(props, target)) {
+                                               changed = true;
+                                       }
+                                       if (mode !== 2 || (!curTween._firstPT && curTween._initted)) {
+                                               if (curTween._enabled(false, false)) { //if all property tweens have been overwritten, kill the tween.
+                                                       changed = true;
+                                               }
+                                       }
+                               }
+                               return changed;
+                       },
+
+                       _checkOverlap = function(tween, reference, zeroDur) {
+                               var tl = tween._timeline,
+                                       ts = tl._timeScale,
+                                       t = tween._startTime;
+                               while (tl._timeline) {
+                                       t += tl._startTime;
+                                       ts *= tl._timeScale;
+                                       if (tl._paused) {
+                                               return -100;
+                                       }
+                                       tl = tl._timeline;
+                               }
+                               t /= ts;
+                               return (t > reference) ? t - reference : ((zeroDur && t === reference) || (!tween._initted && t - reference < 0.0000000002)) ? 0.0000000001 : ((t = t + tween.totalDuration() / tween._timeScale / ts) > reference) ? 0 : t - reference - 0.0000000001;
+                       };
+
+
+//---- TweenLite instance methods -----------------------------------------------------------------------------
+
+               p._init = function() {
+                       var v = this.vars,
+                               ease = v.ease,
+                               i, initPlugins, pt;
+                       if (v.startAt) {
+                               v.startAt.overwrite = 0;
+                               v.startAt.immediateRender = true;
+                               TweenLite.to(this.target, 0, v.startAt);
+                       }
+                       if (!ease) {
+                               this._ease = TweenLite.defaultEase;
+                       } else if (ease instanceof Ease) {
+                               this._ease = (v.easeParams instanceof Array) ? ease.config.apply(ease, v.easeParams) : ease;
+                       } else if (typeof(ease) === "function") {
+                               this._ease = new Ease(ease, v.easeParams);
+                       } else {
+                               this._ease = _easeMap[ease] || TweenLite.defaultEase;
+                       }
+                       this._easeType = this._ease._type;
+                       this._easePower = this._ease._power;
+                       this._firstPT = null;
+
+                       if (this._targets) {
+                               i = this._targets.length;
+                               while (--i > -1) {
+                                       if ( this._initProps( this._targets[i], (this._propLookup[i] = {}), this._siblings[i], (this._overwrittenProps ? this._overwrittenProps[i] : null)) ) {
+                                               initPlugins = true;
+                                       }
+                               }
+                       } else {
+                               initPlugins = this._initProps(this.target, this._propLookup, this._siblings, this._overwrittenProps);
+                       }
+
+                       if (initPlugins) {
+                               TweenLite._onPluginEvent("_onInitAllProps", this); //reorders the array in order of priority. Uses a static TweenPlugin method in order to minimize file size in TweenLite
+                       }
+                       if (this._overwrittenProps) if (this._firstPT == null) if (typeof(this.target) !== "function") { //if all tweening properties have been overwritten, kill the tween. If the target is a function, it's probably a delayedCall so let it live.
+                               this._enabled(false, false);
+                       }
+                       if (v.runBackwards) {
+                               pt = this._firstPT;
+                               while (pt) {
+                                       pt.s += pt.c;
+                                       pt.c = -pt.c;
+                                       pt = pt._next;
+                               }
+                       }
+                       this._onUpdate = v.onUpdate;
+                       this._initted = true;
+               };
+
+               p._initProps = function(target, propLookup, siblings, overwrittenProps) {
+                       var p, i, initPlugins, plugin, a, pt, v;
+                       if (target == null) {
+                               return false;
+                       }
+                       for (p in this.vars) {
+                               if (_reservedProps[p]) {
+                                       if (p === "onStartParams" || p === "onUpdateParams" || p === "onCompleteParams" || p === "onReverseCompleteParams" || p === "onRepeatParams") if ((a = this.vars[p])) {
+                                               i = a.length;
+                                               while (--i > -1) {
+                                                       if (a[i] === "{self}") {
+                                                               a = this.vars[p] = a.concat(); //copy the array in case the user referenced the same array in multiple tweens/timelines (each {self} should be unique)
+                                                               a[i] = this;
+                                                       }
+                                               }
+                                       }
+
+                               } else if (_plugins[p] && (plugin = new _plugins[p]())._onInitTween(target, this.vars[p], this)) {
+
+                                       //t - target            [object]
+                                       //p - property          [string]
+                                       //s - start                     [number]
+                                       //c - change            [number]
+                                       //f - isFunction        [boolean]
+                                       //n - name                      [string]
+                                       //pg - isPlugin         [boolean]
+                                       //pr - priority         [number]
+                                       this._firstPT = pt = {_next:this._firstPT, t:plugin, p:"setRatio", s:0, c:1, f:true, n:p, pg:true, pr:plugin._priority};
+                                       i = plugin._overwriteProps.length;
+                                       while (--i > -1) {
+                                               propLookup[plugin._overwriteProps[i]] = this._firstPT;
+                                       }
+                                       if (plugin._priority || plugin._onInitAllProps) {
+                                               initPlugins = true;
+                                       }
+                                       if (plugin._onDisable || plugin._onEnable) {
+                                               this._notifyPluginsOfEnabled = true;
+                                       }
+
+                               } else {
+                                       this._firstPT = propLookup[p] = pt = {_next:this._firstPT, t:target, p:p, f:(typeof(target[p]) === "function"), n:p, pg:false, pr:0};
+                                       pt.s = (!pt.f) ? parseFloat(target[p]) : target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ]();
+                                       v = this.vars[p];
+                                       pt.c = (typeof(v) === "string" && v.charAt(1) === "=") ? parseInt(v.charAt(0) + "1", 10) * Number(v.substr(2)) : (Number(v) - pt.s) || 0;
+                               }
+                               if (pt) if (pt._next) {
+                                       pt._next._prev = pt;
+                               }
+                       }
+
+                       if (overwrittenProps) if (this._kill(overwrittenProps, target)) { //another tween may have tried to overwrite properties of this tween before init() was called (like if two tweens start at the same time, the one created second will run first)
+                               return this._initProps(target, propLookup, siblings, overwrittenProps);
+                       }
+                       if (this._overwrite > 1) if (this._firstPT) if (siblings.length > 1) if (_applyOverwrite(target, this, propLookup, this._overwrite, siblings)) {
+                               this._kill(propLookup, target);
+                               return this._initProps(target, propLookup, siblings, overwrittenProps);
+                       }
+                       return initPlugins;
+               };
+
+               p.render = function(time, suppressEvents, force) {
+                       var prevTime = this._time,
+                               isComplete, callback, pt;
+                       if (time >= this._duration) {
+                               this._totalTime = this._time = this._duration;
+                               this.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1;
+                               if (!this._reversed) {
+                                       isComplete = true;
+                                       callback = "onComplete";
+                               }
+                               if (this._duration === 0) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                                       if (time === 0 || this._rawPrevTime < 0) if (this._rawPrevTime !== time) {
+                                               force = true;
+                                       }
+                                       this._rawPrevTime = time;
+                               }
+
+                       } else if (time <= 0) {
+                               this._totalTime = this._time = 0;
+                               this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0;
+                               if (prevTime !== 0 || (this._duration === 0 && this._rawPrevTime > 0)) {
+                                       callback = "onReverseComplete";
+                                       isComplete = this._reversed;
+                               }
+                               if (time < 0) {
+                                       this._active = false;
+                                       if (this._duration === 0) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.
+                                               if (this._rawPrevTime >= 0) {
+                                                       force = true;
+                                               }
+                                               this._rawPrevTime = time;
+                                       }
+                               } else if (!this._initted) { //if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.
+                                       force = true;
+                               }
+
+                       } else {
+                               this._totalTime = this._time = time;
+
+                               if (this._easeType) {
+                                       var r = time / this._duration, type = this._easeType, pow = this._easePower;
+                                       if (type === 1 || (type === 3 && r >= 0.5)) {
+                                               r = 1 - r;
+                                       }
+                                       if (type === 3) {
+                                               r *= 2;
+                                       }
+                                       if (pow === 1) {
+                                               r *= r;
+                                       } else if (pow === 2) {
+                                               r *= r * r;
+                                       } else if (pow === 3) {
+                                               r *= r * r * r;
+                                       } else if (pow === 4) {
+                                               r *= r * r * r * r;
+                                       }
+
+                                       if (type === 1) {
+                                               this.ratio = 1 - r;
+                                       } else if (type === 2) {
+                                               this.ratio = r;
+                                       } else if (time / this._duration < 0.5) {
+                                               this.ratio = r / 2;
+                                       } else {
+                                               this.ratio = 1 - (r / 2);
+                                       }
+
+                               } else {
+                                       this.ratio = this._ease.getRatio(time / this._duration);
+                               }
+
+                       }
+
+                       if (this._time === prevTime && !force) {
+                               return;
+                       } else if (!this._initted) {
+                               this._init();
+                               if (!isComplete && this._time) { //_ease is initially set to defaultEase, so now that init() has run, _ease is set properly and we need to recalculate the ratio. Overall this is faster than using conditional logic earlier in the method to avoid having to set ratio twice because we only init() once but renderTime() gets called VERY frequently.
+                                       this.ratio = this._ease.getRatio(this._time / this._duration);
+                               }
+                       }
+
+                       if (!this._active) if (!this._paused) {
+                               this._active = true;  //so that if the user renders a tween (as opposed to the timeline rendering it), the timeline is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the tween already finished but the user manually re-renders it as halfway done.
+                       }
+                       if (prevTime === 0) if (this.vars.onStart) if (this._time !== 0 || this._duration === 0) if (!suppressEvents) {
+                               this.vars.onStart.apply(this.vars.onStartScope || this, this.vars.onStartParams || _blankArray);
+                       }
+
+                       pt = this._firstPT;
+                       while (pt) {
+                               if (pt.f) {
+                                       pt.t[pt.p](pt.c * this.ratio + pt.s);
+                               } else {
+                                       pt.t[pt.p] = pt.c * this.ratio + pt.s;
+                               }
+                               pt = pt._next;
+                       }
+
+
+                       if (this._onUpdate) if (!suppressEvents) {
+                               this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || _blankArray);
+                       }
+
+                       if (callback) if (!this._gc) { //check _gc because there's a chance that kill() could be called in an onUpdate
+                               if (isComplete) {
+                                       if (this._timeline.autoRemoveChildren) {
+                                               this._enabled(false, false);
+                                       }
+                                       this._active = false;
+                               }
+                               if (!suppressEvents) if (this.vars[callback]) {
+                                       this.vars[callback].apply(this.vars[callback + "Scope"] || this, this.vars[callback + "Params"] || _blankArray);
+                               }
+                       }
+
+               };
+
+               p._kill = function(vars, target) {
+                       if (vars === "all") {
+                               vars = null;
+                       }
+                       if (vars == null) if (target == null || target === this.target) {
+                               return this._enabled(false, false);
+                       }
+                       target = target || this._targets || this.target;
+                       var i, overwrittenProps, p, pt, propLookup, changed, killProps, record;
+                       if ((target instanceof Array || target.jquery) && typeof(target[0]) === "object") {
+                               i = target.length;
+                               while (--i > -1) {
+                                       if (this._kill(vars, target[i])) {
+                                               changed = true;
+                                       }
+                               }
+                       } else {
+                               if (this._targets) {
+                                       i = this._targets.length;
+                                       while (--i > -1) {
+                                               if (target === this._targets[i]) {
+                                                       propLookup = this._propLookup[i] || {};
+                                                       this._overwrittenProps = this._overwrittenProps || [];
+                                                       overwrittenProps = this._overwrittenProps[i] = vars ? this._overwrittenProps[i] || {} : "all";
+                                                       break;
+                                               }
+                                       }
+                               } else if (target !== this.target) {
+                                       return false;
+                               } else {
+                                       propLookup = this._propLookup;
+                                       overwrittenProps = this._overwrittenProps = vars ? this._overwrittenProps || {} : "all";
+                               }
+
+                               if (propLookup) {
+                                       killProps = vars || propLookup;
+                                       record = (vars !== overwrittenProps && overwrittenProps !== "all" && vars !== propLookup && (vars == null || vars._tempKill !== true)); //_tempKill is a super-secret way to delete a particular tweening property but NOT have it remembered as an official overwritten property (like in BezierPlugin)
+                                       for (p in killProps) {
+                                               if ((pt = propLookup[p])) {
+                                                       if (pt.pg && pt.t._kill(killProps)) {
+                                                               changed = true; //some plugins need to be notified so they can perform cleanup tasks first
+                                                       }
+                                                       if (!pt.pg || pt.t._overwriteProps.length === 0) {
+                                                               if (pt._prev) {
+                                                                       pt._prev._next = pt._next;
+                                                               } else if (pt === this._firstPT) {
+                                                                       this._firstPT = pt._next;
+                                                               }
+                                                               if (pt._next) {
+                                                                       pt._next._prev = pt._prev;
+                                                               }
+                                                               pt._next = pt._prev = null;
+                                                       }
+                                                       delete propLookup[p];
+                                               }
+                                               if (record) {
+                                                       overwrittenProps[p] = 1;
+                                               }
+                                       }
+                               }
+                       }
+                       return changed;
+               };
+
+               p.invalidate = function() {
+                       if (this._notifyPluginsOfEnabled) {
+                               TweenLite._onPluginEvent("_onDisable", this);
+                       }
+                       this._firstPT = null;
+                       this._overwrittenProps = null;
+                       this._onUpdate = null;
+                       this._initted = this._active = this._notifyPluginsOfEnabled = false;
+                       this._propLookup = (this._targets) ? {} : [];
+                       return this;
+               };
+
+               p._enabled = function(enabled, ignoreTimeline) {
+                       if (enabled && this._gc) {
+                               if (this._targets) {
+                                       var i = this._targets.length;
+                                       while (--i > -1) {
+                                               this._siblings[i] = _register(this._targets[i], this, true);
+                                       }
+                               } else {
+                                       this._siblings = _register(this.target, this, true);
+                               }
+                       }
+                       Animation.prototype._enabled.call(this, enabled, ignoreTimeline);
+                       if (this._notifyPluginsOfEnabled) if (this._firstPT) {
+                               return TweenLite._onPluginEvent(((enabled) ? "_onEnable" : "_onDisable"), this);
+                       }
+                       return false;
+               };
+
+
+//----TweenLite static methods -----------------------------------------------------
+
+               TweenLite.to = function(target, duration, vars) {
+                       return new TweenLite(target, duration, vars);
+               };
+
+               TweenLite.from = function(target, duration, vars) {
+                       vars.runBackwards = true;
+                       if (vars.immediateRender !== false) {
+                               vars.immediateRender = true;
+                       }
+                       return new TweenLite(target, duration, vars);
+               };
+
+               TweenLite.fromTo = function(target, duration, fromVars, toVars) {
+                       toVars.startAt = fromVars;
+                       if (fromVars.immediateRender) {
+                               toVars.immediateRender = true;
+                       }
+                       return new TweenLite(target, duration, toVars);
+               };
+
+               TweenLite.delayedCall = function(delay, callback, params, scope, useFrames) {
+                       return new TweenLite(callback, 0, {delay:delay, onComplete:callback, onCompleteParams:params, onCompleteScope:scope, onReverseComplete:callback, onReverseCompleteParams:params, onReverseCompleteScope:scope, immediateRender:false, useFrames:useFrames, overwrite:0});
+               };
+
+               TweenLite.set = function(target, vars) {
+                       return new TweenLite(target, 0, vars);
+               };
+
+               TweenLite.killTweensOf = TweenLite.killDelayedCallsTo = function(target, vars) {
+                       var a = TweenLite.getTweensOf(target),
+                               i = a.length;
+                       while (--i > -1) {
+                               a[i]._kill(vars, target);
+                       }
+               };
+
+               TweenLite.getTweensOf = function(target) {
+                       if (target == null) { return; }
+                       var i, a, j, t;
+                       if ((target instanceof Array || target.jquery) && typeof(target[0]) === "object") {
+                               i = target.length;
+                               a = [];
+                               while (--i > -1) {
+                                       a = a.concat(TweenLite.getTweensOf(target[i]));
+                               }
+                               i = a.length;
+                               //now get rid of any duplicates (tweens of arrays of objects could cause duplicates)
+                               while (--i > -1) {
+                                       t = a[i];
+                                       j = i;
+                                       while (--j > -1) {
+                                               if (t === a[j]) {
+                                                       a.splice(i, 1);
+                                               }
+                                       }
+                               }
+                       } else {
+                               a = _register(target).concat();
+                               i = a.length;
+                               while (--i > -1) {
+                                       if (a[i]._gc) {
+                                               a.splice(i, 1);
+                                       }
+                               }
+                       }
+                       return a;
+               };
+
+
+
+/*
+ * ----------------------------------------------------------------
+ * TweenPlugin   (could easily be split out as a separate file/class, but included for ease of use (so that people don't need to include another <script> call before loading plugins which is easy to forget)
+ * ----------------------------------------------------------------
+ */
+               var TweenPlugin = _class("plugins.TweenPlugin", function(props, priority) {
+                                       this._overwriteProps = (props || "").split(",");
+                                       this._propName = this._overwriteProps[0];
+                                       this._priority = priority || 0;
+                               }, true);
+
+               p = TweenPlugin.prototype;
+               TweenPlugin.version = 12;
+               TweenPlugin.API = 2;
+               p._firstPT = null;
+
+               p._addTween = function(target, prop, start, end, overwriteProp, round) {
+                       var c, pt;
+                       if (end != null && (c = (typeof(end) === "number" || end.charAt(1) !== "=") ? Number(end) - start : parseInt(end.charAt(0)+"1", 10) * Number(end.substr(2)))) {
+                               this._firstPT = pt = {_next:this._firstPT, t:target, p:prop, s:start, c:c, f:(typeof(target[prop]) === "function"), n:overwriteProp || prop, r:round};
+                               if (pt._next) {
+                                       pt._next._prev = pt;
+                               }
+                       }
+               };
+
+               p.setRatio = function(v) {
+                       var pt = this._firstPT,
+                               val;
+                       while (pt) {
+                               val = pt.c * v + pt.s;
+                               if (pt.r) {
+                                       val = (val + ((val > 0) ? 0.5 : -0.5)) >> 0; //about 4x faster than Math.round()
+                               }
+                               if (pt.f) {
+                                       pt.t[pt.p](val);
+                               } else {
+                                       pt.t[pt.p] = val;
+                               }
+                               pt = pt._next;
+                       }
+               };
+
+               p._kill = function(lookup) {
+                       if (lookup[this._propName] != null) {
+                               this._overwriteProps = [];
+                       } else {
+                               var i = this._overwriteProps.length;
+                               while (--i > -1) {
+                                       if (lookup[this._overwriteProps[i]] != null) {
+                                               this._overwriteProps.splice(i, 1);
+                                       }
+                               }
+                       }
+                       var pt = this._firstPT;
+                       while (pt) {
+                               if (lookup[pt.n] != null) {
+                                       if (pt._next) {
+                                               pt._next._prev = pt._prev;
+                                       }
+                                       if (pt._prev) {
+                                               pt._prev._next = pt._next;
+                                               pt._prev = null;
+                                       } else if (this._firstPT === pt) {
+                                               this._firstPT = pt._next;
+                                       }
+                               }
+                               pt = pt._next;
+                       }
+                       return false;
+               };
+
+               p._roundProps = function(lookup, value) {
+                       var pt = this._firstPT;
+                       while (pt) {
+                               if (lookup[this._propName] || (pt.n != null && lookup[ pt.n.split(this._propName + "_").join("") ])) { //some properties that are very plugin-specific add a prefix named after the _propName plus an underscore, so we need to ignore that extra stuff here.
+                                       pt.r = value;
+                               }
+                               pt = pt._next;
+                       }
+               };
+
+               TweenLite._onPluginEvent = function(type, tween) {
+                       var pt = tween._firstPT,
+                               changed;
+                       if (type === "_onInitAllProps") {
+                               //sorts the PropTween linked list in order of priority because some plugins need to render earlier/later than others, like MotionBlurPlugin applies its effects after all x/y/alpha tweens have rendered on each frame.
+                               var pt2, first, last, next;
+                               while (pt) {
+                                       next = pt._next;
+                                       pt2 = first;
+                                       while (pt2 && pt2.pr > pt.pr) {
+                                               pt2 = pt2._next;
+                                       }
+                                       if ((pt._prev = pt2 ? pt2._prev : last)) {
+                                               pt._prev._next = pt;
+                                       } else {
+                                               first = pt;
+                                       }
+                                       if ((pt._next = pt2)) {
+                                               pt2._prev = pt;
+                                       } else {
+                                               last = pt;
+                                       }
+                                       pt = next;
+                               }
+                               pt = tween._firstPT = first;
+                       }
+                       while (pt) {
+                               if (pt.pg) if (typeof(pt.t[type]) === "function") if (pt.t[type]()) {
+                                       changed = true;
+                               }
+                               pt = pt._next;
+                       }
+                       return changed;
+               };
+
+               TweenPlugin.activate = function(plugins) {
+                       var i = plugins.length;
+                       while (--i > -1) {
+                               if (plugins[i].API === TweenPlugin.API) {
+                                       TweenLite._plugins[(new plugins[i]())._propName] = plugins[i];
+                               }
+                       }
+                       return true;
+               };
+
+
+
+               //now run through all the dependencies discovered and if any are missing, log that to the console as a warning. This is why it's best to have TweenLite load last - it can check all the dependencies for you.
+               if ((a = window._gsQueue)) {
+                       for (i = 0; i < a.length; i++) {
+                               a[i]();
+                       }
+                       for (p in _defLookup) {
+                               if (!_defLookup[p].func) {
+                                       window.console.log("Warning: TweenLite encountered missing dependency: com.greensock."+p);
+                               }
+                       }
+               }
+
+
+})(window);
\ No newline at end of file
diff --git a/CubeIT/js/gsap/easing/EasePack.js b/CubeIT/js/gsap/easing/EasePack.js
new file mode 100644 (file)
index 0000000..e2b015b
--- /dev/null
@@ -0,0 +1,250 @@
+/*!
+ * VERSION: beta 1.4
+ * DATE: 2013-01-10
+ * JavaScript (ActionScript 3 and 2 also available)
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ **/
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+       "use strict";
+
+       _gsDefine("easing.Back", ["easing.Ease"], function(Ease) {
+               
+               var w = window,
+                       gs = w.com.greensock,
+                       _2PI = Math.PI * 2,
+                       _HALF_PI = Math.PI / 2,
+                       _class = gs._class,
+                       _create = function(n, f) {
+                               var C = _class("easing." + n, function(){}, true),
+                                       p = C.prototype = new Ease();
+                               p.constructor = C;
+                               p.getRatio = f;
+                               return C;
+                       },
+                       _easeReg = Ease.register || function(){}, //put an empty function in place just as a safety measure in case someone loads an OLD version of TweenLite.js where Ease.register doesn't exist.
+                       _wrap = function(name, EaseOut, EaseIn, EaseInOut, aliases) {
+                               var C = _class("easing."+name, {
+                                       easeOut:new EaseOut(),
+                                       easeIn:new EaseIn(),
+                                       easeInOut:new EaseInOut()
+                               }, true);
+                               _easeReg(C, name);
+                               return C;
+                       },
+
+                       //Back
+                       _createBack = function(n, f) {
+                               var C = _class("easing." + n, function(overshoot) {
+                                               this._p1 = (overshoot || overshoot === 0) ? overshoot : 1.70158;
+                                               this._p2 = this._p1 * 1.525;
+                                       }, true), 
+                                       p = C.prototype = new Ease();
+                               p.constructor = C;
+                               p.getRatio = f;
+                               p.config = function(overshoot) {
+                                       return new C(overshoot);
+                               };
+                               return C;
+                       },
+
+                       Back = _wrap("Back",
+                               _createBack("BackOut", function(p) {
+                                       return ((p = p - 1) * p * ((this._p1 + 1) * p + this._p1) + 1);
+                               }),
+                               _createBack("BackIn", function(p) {
+                                       return p * p * ((this._p1 + 1) * p - this._p1);
+                               }),
+                               _createBack("BackInOut", function(p) {
+                                       return ((p *= 2) < 1) ? 0.5 * p * p * ((this._p2 + 1) * p - this._p2) : 0.5 * ((p -= 2) * p * ((this._p2 + 1) * p + this._p2) + 2);
+                               })
+                       ),
+
+
+                       //SlowMo
+                       SlowMo = _class("easing.SlowMo", function(linearRatio, power, yoyoMode) {
+                               power = (power || power === 0) ? power : 0.7;
+                               if (linearRatio == null) {
+                                       linearRatio = 0.7;
+                               } else if (linearRatio > 1) {
+                                       linearRatio = 1;
+                               }
+                               this._p = (linearRatio !== 1) ? power : 0;
+                               this._p1 = (1 - linearRatio) / 2;
+                               this._p2 = linearRatio;
+                               this._p3 = this._p1 + this._p2;
+                               this._calcEnd = (yoyoMode === true);
+                       }, true),
+                       p = SlowMo.prototype = new Ease(),
+                       SteppedEase, _createElastic;
+                       
+               p.constructor = SlowMo;
+               p.getRatio = function(p) {
+                       var r = p + (0.5 - p) * this._p;
+                       if (p < this._p1) {
+                               return this._calcEnd ? 1 - ((p = 1 - (p / this._p1)) * p) : r - ((p = 1 - (p / this._p1)) * p * p * p * r);
+                       } else if (p > this._p3) {
+                               return this._calcEnd ? 1 - (p = (p - this._p3) / this._p1) * p : r + ((p - r) * (p = (p - this._p3) / this._p1) * p * p * p);
+                       }
+                       return this._calcEnd ? 1 : r;
+               };
+               SlowMo.ease = new SlowMo(0.7, 0.7);
+               
+               p.config = SlowMo.config = function(linearRatio, power, yoyoMode) {
+                       return new SlowMo(linearRatio, power, yoyoMode);
+               };
+
+
+               //SteppedEase
+               SteppedEase = _class("easing.SteppedEase", function(steps) {
+                               steps = steps || 1;
+                               this._p1 = 1 / steps;
+                               this._p2 = steps + 1;
+                       }, true);
+               p = SteppedEase.prototype = new Ease(); 
+               p.constructor = SteppedEase;
+               p.getRatio = function(p) {
+                       if (p < 0) {
+                               p = 0;
+                       } else if (p >= 1) {
+                               p = 0.999999999;
+                       }
+                       return ((this._p2 * p) >> 0) * this._p1;
+               };
+               p.config = SteppedEase.config = function(steps) {
+                       return new SteppedEase(steps);
+               };
+
+
+               //Bounce
+               _wrap("Bounce",
+                       _create("BounceOut", function(p) {
+                               if (p < 1 / 2.75) {
+                                       return 7.5625 * p * p;
+                               } else if (p < 2 / 2.75) {
+                                       return 7.5625 * (p -= 1.5 / 2.75) * p + 0.75;
+                               } else if (p < 2.5 / 2.75) {
+                                       return 7.5625 * (p -= 2.25 / 2.75) * p + 0.9375;
+                               }
+                               return 7.5625 * (p -= 2.625 / 2.75) * p + 0.984375;
+                       }),
+                       _create("BounceIn", function(p) {
+                               if ((p = 1 - p) < 1 / 2.75) {
+                                       return 1 - (7.5625 * p * p);
+                               } else if (p < 2 / 2.75) {
+                                       return 1 - (7.5625 * (p -= 1.5 / 2.75) * p + 0.75);
+                               } else if (p < 2.5 / 2.75) {
+                                       return 1 - (7.5625 * (p -= 2.25 / 2.75) * p + 0.9375);
+                               }
+                               return 1 - (7.5625 * (p -= 2.625 / 2.75) * p + 0.984375);
+                       }),
+                       _create("BounceInOut", function(p) {
+                               var invert = (p < 0.5);
+                               if (invert) {
+                                       p = 1 - (p * 2);
+                               } else {
+                                       p = (p * 2) - 1;
+                               }
+                               if (p < 1 / 2.75) {
+                                       p = 7.5625 * p * p;
+                               } else if (p < 2 / 2.75) {
+                                       p = 7.5625 * (p -= 1.5 / 2.75) * p + 0.75;
+                               } else if (p < 2.5 / 2.75) {
+                                       p = 7.5625 * (p -= 2.25 / 2.75) * p + 0.9375;
+                               } else {
+                                       p = 7.5625 * (p -= 2.625 / 2.75) * p + 0.984375;
+                               }
+                               return invert ? (1 - p) * 0.5 : p * 0.5 + 0.5;
+                       })
+               );
+
+
+               //CIRC
+               _wrap("Circ",
+                       _create("CircOut", function(p) {
+                               return Math.sqrt(1 - (p = p - 1) * p);
+                       }),
+                       _create("CircIn", function(p) {
+                               return -(Math.sqrt(1 - (p * p)) - 1);
+                       }),
+                       _create("CircInOut", function(p) {
+                               return ((p*=2) < 1) ? -0.5 * (Math.sqrt(1 - p * p) - 1) : 0.5 * (Math.sqrt(1 - (p -= 2) * p) + 1);
+                       })
+               );
+
+
+               //Elastic
+               _createElastic = function(n, f, def) {
+                       var C = _class("easing." + n, function(amplitude, period) {
+                                       this._p1 = amplitude || 1;
+                                       this._p2 = period || def;
+                                       this._p3 = this._p2 / _2PI * (Math.asin(1 / this._p1) || 0);
+                               }, true),
+                               p = C.prototype = new Ease();
+                       p.constructor = C;
+                       p.getRatio = f;
+                       p.config = function(amplitude, period) {
+                               return new C(amplitude, period);
+                       };
+                       return C;
+               };
+               _wrap("Elastic",
+                       _createElastic("ElasticOut", function(p) {
+                               return this._p1 * Math.pow(2, -10 * p) * Math.sin( (p - this._p3) * _2PI / this._p2 ) + 1;
+                       }, 0.3),
+                       _createElastic("ElasticIn", function(p) {
+                               return -(this._p1 * Math.pow(2, 10 * (p -= 1)) * Math.sin( (p - this._p3) * _2PI / this._p2 ));
+                       }, 0.3),
+                       _createElastic("ElasticInOut", function(p) {
+                               return ((p *= 2) < 1) ? -0.5 * (this._p1 * Math.pow(2, 10 * (p -= 1)) * Math.sin( (p - this._p3) * _2PI / this._p2)) : this._p1 * Math.pow(2, -10 *(p -= 1)) * Math.sin( (p - this._p3) * _2PI / this._p2 ) *0.5 + 1;
+                       }, 0.45)
+               );
+
+
+               //Expo
+               _wrap("Expo",
+                       _create("ExpoOut", function(p) {
+                               return 1 - Math.pow(2, -10 * p);
+                       }),
+                       _create("ExpoIn", function(p) {
+                               return Math.pow(2, 10 * (p - 1)) - 0.001;
+                       }),
+                       _create("ExpoInOut", function(p) {
+                               return ((p *= 2) < 1) ? 0.5 * Math.pow(2, 10 * (p - 1)) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));
+                       })
+               );
+
+
+               //Sine
+               _wrap("Sine",
+                       _create("SineOut", function(p) {
+                               return Math.sin(p * _HALF_PI);
+                       }),
+                       _create("SineIn", function(p) {
+                               return -Math.cos(p * _HALF_PI) + 1;
+                       }),
+                       _create("SineInOut", function(p) {
+                               return -0.5 * (Math.cos(Math.PI * p) - 1);
+                       })
+               );
+
+               _class("easing.EaseLookup", {
+                               find:function(s) {
+                                       return Ease.map[s];
+                               }
+                       }, true);
+
+               //register the non-standard eases
+               _easeReg(w.SlowMo, "SlowMo", "ease,");
+               _easeReg(SteppedEase, "SteppedEase", "ease,");
+               
+               return Back;
+               
+       }, true);
+
+}); if (window._gsDefine) { _gsQueue.pop()(); }
\ No newline at end of file
diff --git a/CubeIT/js/gsap/plugins/BezierPlugin.js b/CubeIT/js/gsap/plugins/BezierPlugin.js
new file mode 100644 (file)
index 0000000..c65e5ff
--- /dev/null
@@ -0,0 +1,570 @@
+/**
+ * VERSION: beta 1.161
+ * DATE: 2013-01-16
+ * JavaScript (also available in AS3 and AS2)
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ **/
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+
+       _gsDefine("plugins.BezierPlugin", ["plugins.TweenPlugin"], function(TweenPlugin) {
+               
+               var BezierPlugin = function(props, priority) {
+                               TweenPlugin.call(this, "bezier", -1);
+                               this._overwriteProps.pop();
+                               this._func = {};
+                               this._round = {};
+                       },
+                       p = BezierPlugin.prototype = new TweenPlugin("bezier", 1),
+                       _RAD2DEG = 180 / Math.PI,
+                       _DEG2RAD = Math.PI / 180,
+                       _r1 = [],
+                       _r2 = [],
+                       _r3 = [],
+                       _corProps = {}, 
+                       Segment = function Segment(a, b, c, d) {
+                               this.a = a;
+                               this.b = b;
+                               this.c = c;
+                               this.d = d;
+                               this.da = d - a;
+                               this.ca = c - a;
+                               this.ba = b - a;
+                       },
+                       _correlate = ",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,",
+                       bezierThrough = BezierPlugin.bezierThrough = function(values, curviness, quadratic, basic, correlate, prepend) {
+                               var obj = {},
+                                       props = [],
+                                       first = prepend || values[0],
+                                       i, p, a, j, r, l, seamless, last;
+                               correlate = (typeof(correlate) === "string") ? ","+correlate+"," : _correlate;
+                               if (curviness == null) {
+                                       curviness = 1;
+                               }
+                               for (p in values[0]) {
+                                       props.push(p);
+                               }
+                               //check to see if the last and first values are identical (well, within 0.05). If so, make seamless by appending the second element to the very end of the values array and the 2nd-to-last element to the very beginning (we'll remove those segments later)
+                               if (values.length > 1) {
+                                       last = values[values.length - 1];
+                                       seamless = true;
+                                       i = props.length;
+                                       while (--i > -1) {
+                                               p = props[i];
+                                               if (Math.abs(first[p] - last[p]) > 0.05) { //build in a tolerance of +/-0.05 to accommodate rounding errors. For example, if you set an object's position to 4.945, Flash will make it 4.9
+                                                       seamless = false;
+                                                       break;
+                                               }
+                                       }
+                                       if (seamless) {
+                                               values = values.concat(); //duplicate the array to avoid contaminating the original which the user may be reusing for other tweens
+                                               if (prepend) {
+                                                       values.unshift(prepend);
+                                               }
+                                               values.push(values[1]);
+                                               prepend = values[values.length - 3];
+                                       }
+                               }
+                               _r1.length = _r2.length = _r3.length = 0;
+                               i = props.length;
+                               while (--i > -1) {
+                                       p = props[i];
+                                       _corProps[p] = (correlate.indexOf(","+p+",") !== -1);
+                                       obj[p] = _parseAnchors(values, p, _corProps[p], prepend);
+                               }
+                               i = _r1.length;
+                               while (--i > -1) {
+                                       _r1[i] = Math.sqrt(_r1[i]);
+                                       _r2[i] = Math.sqrt(_r2[i]);
+                               }
+                               if (!basic) {
+                                       i = props.length;
+                                       while (--i > -1) {
+                                               if (_corProps[p]) {
+                                                       a = obj[props[i]];
+                                                       l = a.length - 1;
+                                                       for (j = 0; j < l; j++) {
+                                                               r = a[j+1].da / _r2[j] + a[j].da / _r1[j]; 
+                                                               _r3[j] = (_r3[j] || 0) + r * r;
+                                                       }
+                                               }
+                                       }
+                                       i = _r3.length;
+                                       while (--i > -1) {
+                                               _r3[i] = Math.sqrt(_r3[i]);
+                                       }
+                               }
+                               i = props.length;
+                               j = quadratic ? 4 : 1;
+                               while (--i > -1) {
+                                       p = props[i];
+                                       a = obj[p];
+                                       _calculateControlPoints(a, curviness, quadratic, basic, _corProps[p]); //this method requires that _parseAnchors() and _setSegmentRatios() ran first so that _r1, _r2, and _r3 values are populated for all properties
+                                       if (seamless) {
+                                               a.splice(0, j);
+                                               a.splice(a.length - j, j);
+                                       }
+                               }
+                               return obj;
+                       }, 
+                       _parseBezierData = function(values, type, prepend) {
+                               type = type || "soft";
+                               var obj = {},
+                                       inc = (type === "cubic") ? 3 : 2,
+                                       soft = (type === "soft"),
+                                       props = [],
+                                       a, b, c, d, cur, i, j, l, p, cnt, tmp;
+                               if (soft && prepend) {
+                                       values = [prepend].concat(values);
+                               }
+                               if (values == null || values.length < inc + 1) { throw "invalid Bezier data"; }
+                               for (p in values[0]) {
+                                       props.push(p);
+                               }
+                               i = props.length;
+                               while (--i > -1) {
+                                       p = props[i];
+                                       obj[p] = cur = [];
+                                       cnt = 0;
+                                       l = values.length;
+                                       for (j = 0; j < l; j++) {
+                                               a = (prepend == null) ? values[j][p] : (typeof( (tmp = values[j][p]) ) === "string" && tmp.charAt(1) === "=") ? prepend[p] + Number(tmp.charAt(0) + tmp.substr(2)) : Number(tmp);
+                                               if (soft) if (j > 1) if (j < l - 1) {
+                                                       cur[cnt++] = (a + cur[cnt-2]) / 2;
+                                               }
+                                               cur[cnt++] = a;
+                                       }
+                                       l = cnt - inc + 1;
+                                       cnt = 0;
+                                       for (j = 0; j < l; j += inc) {
+                                               a = cur[j];
+                                               b = cur[j+1];
+                                               c = cur[j+2];
+                                               d = (inc === 2) ? 0 : cur[j+3];
+                                               cur[cnt++] = tmp = (inc === 3) ? new Segment(a, b, c, d) : new Segment(a, (2 * b + a) / 3, (2 * b + c) / 3, c);
+                                       }
+                                       cur.length = cnt;
+                               }
+                               return obj;
+                       },
+                       _parseAnchors = function(values, p, correlate, prepend) {
+                               var a = [],
+                                       l, i, p1, p2, p3, tmp;
+                               if (prepend) {
+                                       values = [prepend].concat(values);
+                                       i = values.length;
+                                       while (--i > -1) {
+                                               if (typeof( (tmp = values[i][p]) ) === "string") if (tmp.charAt(1) === "=") {
+                                                       values[i][p] = prepend[p] + Number(tmp.charAt(0) + tmp.substr(2)); //accommodate relative values. Do it inline instead of breaking it out into a function for speed reasons
+                                               }
+                                       }
+                               }
+                               l = values.length - 2;
+                               if (l < 0) {
+                                       a[0] = new Segment(values[0][p], 0, 0, values[(l < -1) ? 0 : 1][p]);
+                                       return a;
+                               }
+                               for (i = 0; i < l; i++) {
+                                       p1 = values[i][p];
+                                       p2 = values[i+1][p];
+                                       a[i] = new Segment(p1, 0, 0, p2);
+                                       if (correlate) {
+                                               p3 = values[i+2][p];
+                                               _r1[i] = (_r1[i] || 0) + (p2 - p1) * (p2 - p1);
+                                               _r2[i] = (_r2[i] || 0) + (p3 - p2) * (p3 - p2); 
+                                       }
+                               }
+                               a[i] = new Segment(values[i][p], 0, 0, values[i+1][p]);
+                               return a;
+                       },
+                       _calculateControlPoints = function(a, curviness, quad, basic, correlate) {
+                               var l = a.length - 1,
+                                       ii = 0,
+                                       cp1 = a[0].a,
+                                       i, p1, p2, p3, seg, m1, m2, mm, cp2, qb, r1, r2, tl;
+                               for (i = 0; i < l; i++) {
+                                       seg = a[ii];
+                                       p1 = seg.a;
+                                       p2 = seg.d;
+                                       p3 = a[ii+1].d;
+                                       
+                                       if (correlate) {
+                                               r1 = _r1[i];
+                                               r2 = _r2[i];
+                                               tl = ((r2 + r1) * curviness * 0.25) / (basic ? 0.5 : _r3[i] || 0.5);
+                                               m1 = p2 - (p2 - p1) * (basic ? curviness * 0.5 : tl / r1);
+                                               m2 = p2 + (p3 - p2) * (basic ? curviness * 0.5 : tl / r2);
+                                               mm = p2 - (m1 + (m2 - m1) * ((r1 * 3 / (r1 + r2)) + 0.5) / 4);
+                                       } else {
+                                               m1 = p2 - (p2 - p1) * curviness * 0.5;
+                                               m2 = p2 + (p3 - p2) * curviness * 0.5;
+                                               mm = p2 - (m1 + m2) / 2;
+                                       }
+                                       m1 += mm;
+                                       m2 += mm;
+                                       
+                                       seg.c = cp2 = m1; 
+                                       if (i !== 0) {
+                                               seg.b = cp1;
+                                       } else {
+                                               seg.b = cp1 = seg.a + (seg.c - seg.a) * 0.6; //instead of placing b on a exactly, we move it inline with c so that if the user specifies an ease like Back.easeIn or Elastic.easeIn which goes BEYOND the beginning, it will do so smoothly.
+                                       }
+                                       
+                                       seg.da = p2 - p1;
+                                       seg.ca = cp2 - p1;
+                                       seg.ba = cp1 - p1;
+                                       
+                                       if (quad) {
+                                               qb = cubicToQuadratic(p1, cp1, cp2, p2);
+                                               a.splice(ii, 1, qb[0], qb[1], qb[2], qb[3]);
+                                               ii += 4;
+                                       } else {
+                                               ii++;
+                                       }
+                                       
+                                       cp1 = m2;
+                               }
+                               seg = a[ii];
+                               seg.b = cp1;
+                               seg.c = cp1 + (seg.d - cp1) * 0.4; //instead of placing c on d exactly, we move it inline with b so that if the user specifies an ease like Back.easeOut or Elastic.easeOut which goes BEYOND the end, it will do so smoothly.
+                               seg.da = seg.d - seg.a;
+                               seg.ca = seg.c - seg.a;
+                               seg.ba = cp1 - seg.a;
+                               if (quad) {
+                                       qb = cubicToQuadratic(seg.a, cp1, seg.c, seg.d);
+                                       a.splice(ii, 1, qb[0], qb[1], qb[2], qb[3]);
+                               }
+                       },
+                       cubicToQuadratic = BezierPlugin.cubicToQuadratic = function(a, b, c, d) {
+                               var q1 = {a:a},
+                                       q2 = {},
+                                       q3 = {},
+                                       q4 = {c:d},
+                                       mab = (a + b) / 2, 
+                                       mbc = (b + c) / 2, 
+                                       mcd = (c + d) / 2, 
+                                       mabc = (mab + mbc) / 2,
+                                       mbcd = (mbc + mcd) / 2,
+                                       m8 = (mbcd - mabc) / 8;
+                               q1.b = mab + (a - mab) / 4;     
+                               q2.b = mabc + m8;
+                               q1.c = q2.a = (q1.b + q2.b) / 2;
+                               q2.c = q3.a = (mabc + mbcd) / 2;
+                               q3.b = mbcd - m8;
+                               q4.b = mcd + (d - mcd) / 4;
+                               q3.c = q4.a = (q3.b + q4.b) / 2;
+                               return [q1, q2, q3, q4];
+                       },
+                       _parseLengthData = function(obj, resolution) {
+                               resolution = resolution >> 0 || 6;
+                               var a = [],
+                                       lengths = [],
+                                       d = 0,
+                                       total = 0,
+                                       threshold = resolution - 1,
+                                       segments = [],
+                                       curLS = [], //current length segments array
+                                       p, i, l, index;
+                               for (p in obj) {
+                                       _addCubicLengths(obj[p], a, resolution);
+                               }
+                               l = a.length;
+                               for (i = 0; i < l; i++) {
+                                       d += Math.sqrt(a[i]);
+                                       index = i % resolution;
+                                       curLS[index] = d;
+                                       if (index === threshold) {
+                                               total += d;
+                                               index = (i / resolution) >> 0;
+                                               segments[index] = curLS;
+                                               lengths[index] = total;
+                                               d = 0;
+                                               curLS = [];
+                                       }
+                               }
+                               return {length:total, lengths:lengths, segments:segments};
+                       },
+                       _addCubicLengths = function(a, steps, resolution) {
+                               var inc = 1 / resolution,
+                                       j = a.length,
+                                       d, d1, s, da, ca, ba, p, i, inv, bez, index;
+                               while (--j > -1) {
+                                       bez = a[j];
+                                       s = bez.a;
+                                       da = bez.d - s;
+                                       ca = bez.c - s;
+                                       ba = bez.b - s;
+                                       d = d1 = 0;
+                                       for (i = 1; i <= resolution; i++) {
+                                               p = inc * i;
+                                               inv = 1 - p;
+                                               d = d1 - (d1 = (p * p * da + 3 * inv * (p * ca + inv * ba)) * p);
+                                               index = j * resolution + i - 1;
+                                               steps[index] = (steps[index] || 0) + d * d;
+                                       }
+                               }
+                       }; 
+                       
+               
+               p.constructor = BezierPlugin;
+               BezierPlugin.API = 2;
+               BezierPlugin.quadraticToCubic = function(a, b, c) {
+                       return new Segment(a, (2 * b + a) / 3, (2 * b + c) / 3, c);
+               }
+
+               BezierPlugin._cssRegister = function() {
+                       var CSSPlugin = window.com.greensock.plugins.CSSPlugin;
+                       if (!CSSPlugin) {
+                               return;
+                       }
+                       var _internals = CSSPlugin._internals,
+                               _parseToProxy = _internals._parseToProxy,
+                               _setPluginRatio = _internals._setPluginRatio,
+                               CSSPropTween = _internals.CSSPropTween;
+                       _internals._registerComplexSpecialProp("bezier", null, function(t, e, prop, cssp, pt, plugin) {
+                               if (e instanceof Array) {
+                                       e = {values:e};
+                               }
+                               plugin = new BezierPlugin();
+                               var values = e.values,
+                                       l = values.length - 1,
+                                       pluginValues = [],
+                                       v = {},
+                                       i, p, data;
+                               if (l < 0) {
+                                       return pt;
+                               }
+                               for (i = 0; i <= l; i++) {
+                                       data = _parseToProxy(t, values[i], cssp, pt, plugin, (l !== i));
+                                       pluginValues[i] = data.end;
+                               }
+                               for (p in e) {
+                                       v[p] = e[p]; //duplicate the vars object because we need to alter some things which would cause problems if the user plans to reuse the same vars object for another tween.
+                               }
+                               v.values = pluginValues;
+                               pt = new CSSPropTween(t, "bezier", 0, 0, data.pt, 2);
+                               pt.data = data;
+                               pt.plugin = plugin;
+                               pt.setRatio = _setPluginRatio;
+                               if (v.autoRotate === 0) {
+                                       v.autoRotate = true;
+                               }
+                               if (v.autoRotate) if (!(v.autoRotate instanceof Array)) {
+                                       i = (v.autoRotate === true) ? 0 : Number(v.autoRotate) * _DEG2RAD;
+                                       v.autoRotate = (data.end.left != null) ? [["left","top","rotation",i,true]] : (data.end.x != null) ? [["x","y","rotation",i,true]] : false;
+                               }
+                               if (v.autoRotate) {
+                                       if (!cssp._transform) {
+                                               cssp._enableTransforms(false);
+                                       }
+                                       data.autoRotate = cssp._target._gsTransform;
+                               }
+                               plugin._onInitTween(data.proxy, v, cssp._tween);
+                               return pt;
+                       });
+               };
+               
+               
+               p._onInitTween = function(target, vars, tween) {
+                       this._target = target;
+                       if (vars instanceof Array) {
+                               vars = {values:vars};
+                       }
+                       this._props = [];
+                       this._timeRes = (vars.timeResolution == null) ? 6 : parseInt(vars.timeResolution, 10);
+                       var values = vars.values || [],
+                               first = {},
+                               second = values[0],
+                               autoRotate = vars.autoRotate || tween.vars.orientToBezier,
+                               p, isFunc, i, j, prepend;
+                       
+                       this._autoRotate = autoRotate ? (autoRotate instanceof Array) ? autoRotate : [["x","y","rotation",((autoRotate === true) ? 0 : Number(autoRotate) || 0)]] : null;
+                       for (p in second) {
+                               this._props.push(p);
+                       }
+                       
+                       i = this._props.length;
+                       while (--i > -1) {
+                               p = this._props[i];
+
+                               this._overwriteProps.push(p);
+                               isFunc = this._func[p] = (typeof(target[p]) === "function");
+                               first[p] = (!isFunc) ? parseFloat(target[p]) : target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ]();
+                               if (!prepend) if (first[p] !== values[0][p]) {
+                                       prepend = first;
+                               }
+                       }
+                       this._beziers = (vars.type !== "cubic" && vars.type !== "quadratic" && vars.type !== "soft") ? bezierThrough(values, isNaN(vars.curviness) ? 1 : vars.curviness, false, (vars.type === "thruBasic"), vars.correlate, prepend) : _parseBezierData(values, vars.type, first);
+                       this._segCount = this._beziers[p].length;
+                       
+                       if (this._timeRes) {
+                               var ld = _parseLengthData(this._beziers, this._timeRes);
+                               this._length = ld.length;
+                               this._lengths = ld.lengths;
+                               this._segments = ld.segments;
+                               this._l1 = this._li = this._s1 = this._si = 0;
+                               this._l2 = this._lengths[0];
+                               this._curSeg = this._segments[0];
+                               this._s2 = this._curSeg[0];
+                               this._prec = 1 / this._curSeg.length;
+                       }
+                       
+                       if ((autoRotate = this._autoRotate)) {
+                               if (!(autoRotate[0] instanceof Array)) {
+                                       this._autoRotate = autoRotate = [autoRotate];
+                               }
+                               i = autoRotate.length;
+                               while (--i > -1) {
+                                       for (j = 0; j < 3; j++) {
+                                               p = autoRotate[i][j];
+                                               this._func[p] = (typeof(target[p]) === "function") ? target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ] : false;
+                                       }
+                               }
+                       }
+                       return true;
+               };
+               
+               //gets called every time the tween updates, passing the new ratio (typically a value between 0 and 1, but not always (for example, if an Elastic.easeOut is used, the value can jump above 1 mid-tween). It will always start and 0 and end at 1.
+               p.setRatio = function(v) {
+                       var segments = this._segCount,
+                               func = this._func,
+                               target = this._target,
+                               curIndex, inv, i, p, b, t, val, l, lengths, curSeg;
+                       if (!this._timeRes) {
+                               curIndex = (v < 0) ? 0 : (v >= 1) ? segments - 1 : (segments * v) >> 0;
+                               t = (v - (curIndex * (1 / segments))) * segments;
+                       } else {
+                               lengths = this._lengths;
+                               curSeg = this._curSeg;
+                               v *= this._length;
+                               i = this._li;
+                               //find the appropriate segment (if the currently cached one isn't correct)
+                               if (v > this._l2 && i < segments - 1) {
+                                       l = segments - 1;
+                                       while (i < l && (this._l2 = lengths[++i]) <= v) {       }
+                                       this._l1 = lengths[i-1];
+                                       this._li = i;
+                                       this._curSeg = curSeg = this._segments[i];
+                                       this._s2 = curSeg[(this._s1 = this._si = 0)];
+                               } else if (v < this._l1 && i > 0) {
+                                       while (i > 0 && (this._l1 = lengths[--i]) >= v) {       }
+                                       if (i === 0 && v < this._l1) {
+                                               this._l1 = 0;
+                                       } else {
+                                               i++;
+                                       }
+                                       this._l2 = lengths[i];
+                                       this._li = i;
+                                       this._curSeg = curSeg = this._segments[i];
+                                       this._s1 = curSeg[(this._si = curSeg.length - 1) - 1] || 0;
+                                       this._s2 = curSeg[this._si];
+                               }
+                               curIndex = i;
+                               //now find the appropriate sub-segment (we split it into the number of pieces that was defined by "precision" and measured each one)
+                               v -= this._l1;
+                               i = this._si;
+                               if (v > this._s2 && i < curSeg.length - 1) {
+                                       l = curSeg.length - 1;
+                                       while (i < l && (this._s2 = curSeg[++i]) <= v) {        }
+                                       this._s1 = curSeg[i-1];
+                                       this._si = i;
+                               } else if (v < this._s1 && i > 0) {
+                                       while (i > 0 && (this._s1 = curSeg[--i]) >= v) {        }
+                                       if (i === 0 && v < this._s1) {
+                                               this._s1 = 0;
+                                       } else {
+                                               i++;
+                                       }
+                                       this._s2 = curSeg[i];
+                                       this._si = i;
+                               }
+                               t = (i + (v - this._s1) / (this._s2 - this._s1)) * this._prec;
+                       }
+                       inv = 1 - t;
+                       
+                       i = this._props.length;
+                       while (--i > -1) {
+                               p = this._props[i];
+                               b = this._beziers[p][curIndex];
+                               val = (t * t * b.da + 3 * inv * (t * b.ca + inv * b.ba)) * t + b.a;
+                               if (this._round[p]) {
+                                       val = (val + ((val > 0) ? 0.5 : -0.5)) >> 0;
+                               }
+                               if (func[p]) {
+                                       target[p](val);
+                               } else {
+                                       target[p] = val;
+                               }
+                       }
+                       
+                       if (this._autoRotate) {
+                               var ar = this._autoRotate,
+                                       b2, x1, y1, x2, y2, add, conv;
+                               i = ar.length;
+                               while (--i > -1) {
+                                       p = ar[i][2];
+                                       add = ar[i][3] || 0;
+                                       conv = (ar[i][4] === true) ? 1 : _RAD2DEG;
+                                       b = this._beziers[ar[i][0]][curIndex];
+                                       b2 = this._beziers[ar[i][1]][curIndex];
+                                       
+                                       x1 = b.a + (b.b - b.a) * t;
+                                       x2 = b.b + (b.c - b.b) * t;
+                                       x1 += (x2 - x1) * t;
+                                       x2 += ((b.c + (b.d - b.c) * t) - x2) * t;
+                                       
+                                       y1 = b2.a + (b2.b - b2.a) * t;
+                                       y2 = b2.b + (b2.c - b2.b) * t;
+                                       y1 += (y2 - y1) * t;
+                                       y2 += ((b2.c + (b2.d - b2.c) * t) - y2) * t;
+                                       
+                                       val = Math.atan2(y2 - y1, x2 - x1) * conv + add;
+                                       
+                                       if (func[p]) {
+                                               func[p].call(target, val);
+                                       } else {
+                                               target[p] = val;
+                                       }
+                               }
+                       }
+               };
+               
+               p._roundProps = function(lookup, value) {
+                       var op = this._overwriteProps,
+                               i = op.length;
+                       while (--i > -1) {
+                               if (lookup[op[i]] || lookup.bezier || lookup.bezierThrough) {
+                                       this._round[op[i]] = value;
+                               }
+                       }
+               };
+               
+               p._kill = function(lookup) {
+                       var a = this._props, 
+                               p, i;
+                       for (p in this._beziers) {
+                               if (p in lookup) {
+                                       delete this._beziers[p];
+                                       delete this._func[p];
+                                       i = a.length;
+                                       while (--i > -1) {
+                                               if (a[i] === p) {
+                                                       a.splice(i, 1);
+                                               }
+                                       }
+                               }
+                       }
+                       return TweenPlugin.prototype._kill.call(this, lookup);
+               };
+               
+               TweenPlugin.activate([BezierPlugin]);
+               return BezierPlugin;
+               
+       }, true);
+
+}); if (window._gsDefine) { _gsQueue.pop()(); }
\ No newline at end of file
diff --git a/CubeIT/js/gsap/plugins/CSSPlugin.js b/CubeIT/js/gsap/plugins/CSSPlugin.js
new file mode 100644 (file)
index 0000000..1ff2cc5
--- /dev/null
@@ -0,0 +1,2028 @@
+/*!
+ * VERSION: beta 1.675
+ * DATE: 2013-01-09
+ * JavaScript 
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ */
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+       
+       _gsDefine("plugins.CSSPlugin", ["plugins.TweenPlugin","TweenLite"], function(TweenPlugin, TweenLite) {
+               
+               "use strict";
+
+               /** @constructor **/
+               var CSSPlugin = function() {
+                               TweenPlugin.call(this, "css");
+                               this._overwriteProps.length = 0;
+                       },
+                       _hasPriority, //turns true whenever a CSSPropTween instance is created that has a priority other than 0. This helps us discern whether or not we should spend the time organizing the linked list or not after a CSSPlugin's _onInitTween() method is called.
+                       _suffixMap, //we set this in _onInitTween() each time as a way to have a persistent variable we can use in other methods like _parse() without having to pass it around as a parameter and we keep _parse() decoupled from a particular CSSPlugin instance
+                       _cs, //computed style (we store this in a shared variable to conserve memory and make minification tighter
+                       _overwriteProps, //alias to the currently instantiating CSSPlugin's _overwriteProps array. We use this closure in order to avoid having to pass a reference around from method to method and aid in minification.
+                       _specialProps = {},
+                       p = CSSPlugin.prototype = new TweenPlugin("css");
+
+               p.constructor = CSSPlugin;
+               CSSPlugin.version = 1.675;
+               CSSPlugin.API = 2;
+               CSSPlugin.defaultTransformPerspective = 0;
+               p = "px"; //we'll reuse the "p" variable to keep file size down
+               CSSPlugin.suffixMap = {top:p, right:p, bottom:p, left:p, width:p, height:p, fontSize:p, padding:p, margin:p, perspective:p};
+
+
+               var _numExp = /(?:\d|\-\d|\.\d|\-\.\d)+/g,
+                       _relNumExp = /(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,
+                       _valuesExp = /(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi, //finds all the values that begin with numbers or += or -= and then a number. Includes suffixes. We use this to split complex values apart like "1px 5px 20px rgb(255,102,51)"
+                       //_clrNumExp = /(?:\b(?:(?:rgb|rgba)\(.+?\))|\B#.+?\b)/, //only finds rgb(), rgba(), and # (hexadecimal) values but NOT color names like red, blue, etc.
+                       _NaNExp = /[^\d\-\.]/g,
+                       _suffixExp = /(?:\d|\-|\+|=|#|\.)*/g,
+                       _opacityExp = /opacity *= *([^)]*)/,
+                       _opacityValExp = /opacity:([^;]*)/,
+                       _alphaFilterExp = /alpha\(opacity *=.+?\)/i,
+                       _capsExp = /([A-Z])/g,
+                       _camelExp = /-([a-z])/gi,
+                       _urlExp = /(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi, //for pulling out urls from url(...) or url("...") strings (some browsers wrap urls in quotes, some don't when reporting things like backgroundImage)
+                       _camelFunc = function(s, g) { return g.toUpperCase(); },
+                       _horizExp = /(?:Left|Right|Width)/i,
+                       _ieGetMatrixExp = /(M11|M12|M21|M22)=[\d\-\.e]+/gi,
+                       _ieSetMatrixExp = /progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,
+                       _DEG2RAD = Math.PI / 180,
+                       _RAD2DEG = 180 / Math.PI,
+                       _forcePT = {},
+                       _doc = document,
+                       _tempDiv = _doc.createElement("div"),
+                       _tempImg = _doc.createElement("img"),
+                       _internals = CSSPlugin._internals = {_specialProps:_specialProps}, //provides a hook to a few internal methods that we need to access from inside other plugins
+                       _agent = navigator.userAgent,
+                       _autoRound,
+                       _reqSafariFix, //we won't apply the Safari transform fix until we actually come across a tween that affects a transform property (to maintain best performance).
+
+                       _isSafari,
+                       _isFirefox, //Firefox has a bug that causes 3D transformed elements to randomly disappear unless a repaint is forced after each update on each element.
+                       _isSafariLT6, //Safari (and Android 4 which uses a flavor of Safari) has a bug that prevents changes to "top" and "left" properties from rendering properly if changed on the same frame as a transform UNLESS we set the element's WebkitBackfaceVisibility to hidden (weird, I know). Doing this for Android 3 and earlier seems to actually cause other problems, though (fun!)
+                       _ieVers,
+                       _supportsOpacity = (function() { //we set _isSafari, _ieVers, _isFirefox, and _supportsOpacity all in one function here to reduce file size slightly, especially in the minified version.
+                               var i = _agent.indexOf("Android"),
+                                       d = _doc.createElement("div"), a;
+
+                               _isSafari = (_agent.indexOf("Safari") !== -1 && _agent.indexOf("Chrome") === -1 && (i === -1 || Number(_agent.substr(i+8, 1)) > 3));
+                               _isSafariLT6 = (_isSafari && (Number(_agent.substr(_agent.indexOf("Version/")+8, 1)) < 6));
+                               _isFirefox = (_agent.indexOf("Firefox") !== -1);
+
+                               (/MSIE ([0-9]{1,}[\.0-9]{0,})/).exec(_agent);
+                               _ieVers = parseFloat( RegExp.$1 );
+
+                               d.innerHTML = "<a style='top:1px;opacity:.55;'>a</a>";
+                               a = d.getElementsByTagName("a")[0];
+                               return a ? /^0.55/.test(a.style.opacity) : false;
+                       }()),
+                       _getIEOpacity = function(v) {
+                               return (_opacityExp.test( ((typeof(v) === "string") ? v : (v.currentStyle ? v.currentStyle.filter : v.style.filter) || "") ) ? ( parseFloat( RegExp.$1 ) / 100 ) : 1);
+                       },
+                       _log = function(s) {//for logging messages, but in a way that won't throw errors in old versions of IE.
+                               if (window.console) {
+                                       console.log(s);
+                               }
+                       },
+                       _prefixCSS = "", //the non-camelCase vendor prefix like "-o-", "-moz-", "-ms-", or "-webkit-"
+                       _prefix = "", //camelCase vendor prefix like "O", "ms", "Webkit", or "Moz".
+
+                       //@private feed in a camelCase property name like "transform" and it will check to see if it is valid as-is or if it needs a vendor prefix. It returns the corrected camelCase property name (i.e. "WebkitTransform" or "MozTransform" or "transform" or null if no such property is found, like if the browser is IE8 or before, "transform" won't be found at all)
+                       _checkPropPrefix = function(p, e) {
+                               e = e || _tempDiv;
+                               var s = e.style,
+                                       a, i;
+                               if (s[p] !== undefined) {
+                                       return p;
+                               }
+                               p = p.charAt(0).toUpperCase() + p.substr(1);
+                               a = ["O","Moz","ms","Ms","Webkit"];
+                               i = 5;
+                               while (--i > -1 && s[a[i]+p] === undefined) { }
+                               if (i >= 0) {
+                                       _prefix = (i === 3) ? "ms" : a[i];
+                                       _prefixCSS = "-" + _prefix.toLowerCase() + "-";
+                                       return _prefix + p;
+                               }
+                               return null;
+                       },
+
+                       _getComputedStyle = _doc.defaultView ? _doc.defaultView.getComputedStyle : function() {},
+
+                       /**
+                        * @private Returns the css style for a particular property of an element. For example, to get whatever the current "left" css value for an element with an ID of "myElement", you could do:
+                        * var currentLeft = CSSPlugin.getStyle( document.getElementById("myElement"), "left");
+                        *
+                        * @param {!Object} t Target element whose style property you want to query
+                        * @param {!string} p Property name (like "left" or "top" or "marginTop", etc.)
+                        * @param {Object=} cs Computed style object. This just provides a way to speed processing if you're going to get several properties on the same element in quick succession - you can reuse the result of the getComputedStyle() call.
+                        * @param {boolean=} calc If true, the value will not be read directly from the element's "style" property (if it exists there), but instead the getComputedStyle() result will be used. This can be useful when you want to ensure that the browser itself is interpreting the value.
+                        * @param {string=} dflt Default value that should be returned in the place of null, "none", "auto" or "auto auto".
+                        * @return {?string} The current property value
+                        */
+                       _getStyle = CSSPlugin.getStyle = function(t, p, cs, calc, dflt) {
+                               var rv;
+                               if (!_supportsOpacity) if (p === "opacity") { //several versions of IE don't use the standard "opacity" property - they use things like filter:alpha(opacity=50), so we parse that here.
+                                       return _getIEOpacity(t);
+                               }
+                               if (!calc && t.style[p]) {
+                                       rv = t.style[p];
+                               } else if ((cs = cs || _getComputedStyle(t, null))) {
+                                       t = cs.getPropertyValue(p.replace(_capsExp, "-$1").toLowerCase());
+                                       rv = (t || cs.length) ? t : cs[p]; //Opera behaves VERY strangely - length is usually 0 and cs[p] is the only way to get accurate results EXCEPT when checking for -o-transform which only works with cs.getPropertyValue()!
+                               } else if (t.currentStyle) {
+                                       cs = t.currentStyle;
+                                       rv = cs[p];
+                               }
+                               return (dflt != null && (!rv || rv === "none" || rv === "auto" || rv === "auto auto")) ? dflt : rv;
+                       },
+
+                       //@private returns at object containing ALL of the style properties in camelCase and their associated values.
+                       _getAllStyles = function(t, cs, keepOverwritten) {
+                               var s = {},
+                                       pt = t._gsOverwrittenClassNamePT,
+                                       i, tr;
+
+                               if (pt && !keepOverwritten) {
+                                       while (pt) {
+                                               pt.setRatio(0);
+                                               pt = pt._next;
+                                       }
+                                       t._gsOverwrittenClassNamePT = null;
+                               }
+
+                               if ((cs = cs || _getComputedStyle(t, null))) {
+                                       if ((i = cs.length)) {
+                                               while (--i > -1) {
+                                                       s[cs[i].replace(_camelExp, _camelFunc)] = cs.getPropertyValue(cs[i]);
+                                               }
+                                       } else { //Opera behaves differently - cs.length is always 0, so we must do a for...in loop.
+                                               for (i in cs) {
+                                                       s[i] = cs[i];
+                                               }
+                                       }
+                               } else if ((cs = t.currentStyle || t.style)) {
+                                       for (i in cs) {
+                                               s[i.replace(_camelExp, _camelFunc)] = cs[i];
+                                       }
+                               }
+                               if (!_supportsOpacity) {
+                                       s.opacity = _getIEOpacity(t);
+                               }
+                               tr = _getTransform(t, cs, false);
+                               s.rotation = tr.rotation * _RAD2DEG;
+                               s.skewX = tr.skewX * _RAD2DEG;
+                               s.scaleX = tr.scaleX;
+                               s.scaleY = tr.scaleY;
+                               s.x = tr.x;
+                               s.y = tr.y;
+                               if (_supports3D) {
+                                       s.z = tr.z;
+                                       s.rotationX = tr.rotationX * _RAD2DEG;
+                                       s.rotationY = tr.rotationY * _RAD2DEG;
+                                       s.scaleZ = tr.scaleZ;
+                               }
+                               if (s.filters) {
+                                       delete s.filters;
+                               }
+                               return s;
+                       },
+
+                       //@private analyzes two style objects (as returned by _getAllStyles()) and only looks for differences between them that contain tweenable values (like a number or color). It returns an object a "difs" property which refers to an object containing only those isolated properties and values for tweening, and a "firstMPT" property which refers to the first MiniPropTween instance in a linked list that recorded all the starting values of the different properties so that we can revert to them at the end or beginning of the tween - we don't want the cascading to get messed up
+                       _cssDif = function(t, s1, s2, vars) {
+                               var difs = {},
+                                       style = t.style,
+                                       val, p, mpt;
+                               for (p in s2) {
+                                       if (p !== "cssText") if (p !== "length") if (isNaN(p)) if (s1[p] !== (val = s2[p])) if (p.indexOf("Origin") === -1) if (typeof(val) === "number" || typeof(val) === "string") {
+                                               difs[p] = ((val === "" || val === "auto" || val === "none") && typeof(s1[p]) === "string" && s1[p].replace(_NaNExp, "") !== "") ? 0 : val; //if the ending value is defaulting ("" or "auto"), we check the starting value and if it can be parsed into a number (a string which could have a suffix too, like 700px), then we swap in 0 for "" or "auto" so that things actually tween.
+                                               if (style[p] !== undefined) {
+                                                       mpt = new MiniPropTween(style, p, style[p], mpt);
+                                               }
+                                       }
+                               }
+                               if (vars) {
+                                       for (p in vars) { //copy properties (except className)
+                                               if (p !== "className") {
+                                                       difs[p] = vars[p];
+                                               }
+                                       }
+                               }
+                               return {difs:difs, firstMPT:mpt};
+                       },
+                       _dimensions = {width:["Left","Right"], height:["Top","Bottom"]},
+                       _margins = ["marginLeft","marginRight","marginTop","marginBottom"],
+
+                       /**
+                        * @private Gets the width or height of an element
+                        * @param {!Object} t Target element
+                        * @param {!string} p Property name ("width" or "height")
+                        * @param {Object=} cs Computed style object (if one exists). Just a speed optimization.
+                        * @return {number} Dimension (in pixels)
+                        */
+                       _getDimension = function(t, p, cs) {
+                               var v = parseFloat((p === "width") ? t.offsetWidth : t.offsetHeight),
+                                       a = _dimensions[p],
+                                       i = a.length;
+                               cs = cs || _getComputedStyle(t, null);
+                               while (--i > -1) {
+                                       v -= parseFloat( _getStyle(t, "padding" + a[i], cs, true) ) || 0;
+                                       v -= parseFloat( _getStyle(t, "border" + a[i] + "Width", cs, true) ) || 0;
+                               }
+                               return v;
+                       },
+
+                       /**
+                        * @private Pass the target element, the property name, the numeric value, and the suffix (like "%", "em", "px", etc.) and it will spit back the equivalent pixel number.
+                        * @param {!Object} t Target element
+                        * @param {!string} p Property name (like "left", "top", "marginLeft", etc.)
+                        * @param {!number} v Value
+                        * @param {string=} sfx Suffix (like "px" or "%" or "em")
+                        * @param {boolean=} recurse If true, the call is a recursive one. In some browsers (like IE7/8), occasionally the value isn't accurately reported initially, but if we run the function again it will take effect.
+                        * @return {number} value in pixels
+                        */
+                       _convertToPixels = function(t, p, v, sfx, recurse) {
+                               if (sfx === "px" || !sfx) { return v; }
+                               if (sfx === "auto" || !v) { return 0; }
+                               var horiz = _horizExp.test(p),
+                                       node = t,
+                                       style = _tempDiv.style,
+                                       neg = (v < 0),
+                                       pix;
+                               if (neg) {
+                                       v = -v;
+                               }
+                               if (sfx === "%" && p.indexOf("border") !== -1) {
+                                       pix = (v / 100) * (horiz ? t.clientWidth : t.clientHeight);
+                               } else {
+                                       style.cssText = "border-style:solid; border-width:0; position:absolute; line-height:0;";
+                                       if (sfx === "%" || sfx === "em" || !node.appendChild) {
+                                               node = t.parentNode || _doc.body;
+                                               style[(horiz ? "width" : "height")] = v + sfx;
+                                       } else {
+                                               style[(horiz ? "borderLeftWidth" : "borderTopWidth")] = v + sfx;
+                                       }
+                                       node.appendChild(_tempDiv);
+                                       pix = parseFloat(_tempDiv[(horiz ? "offsetWidth" : "offsetHeight")]);
+                                       node.removeChild(_tempDiv);
+                                       if (pix === 0 && !recurse) {
+                                               pix = _convertToPixels(t, p, v, sfx, true);
+                                       }
+                               }
+                               return neg ? -pix : pix;
+                       },
+
+                       //@private Parses position-related complex strings like "top left" or "50px 10px" or "70% 20%", etc. which are used for things like transformOrigin or backgroundPosition. Optionally decorates a supplied object (recObj) with the following properties: "ox" (offsetX), "oy" (offsetY), "oxp" (if true, "ox" is a percentage not a pixel value), and "oxy" (if true, "oy" is a percentage not a pixel value)
+                       _parsePosition = function(v, recObj) {
+                               if (v == null || v === "" || v === "auto" || v === "auto auto") { //note: Firefox uses "auto auto" as default whereas Chrome uses "auto".
+                                       v = "0 0";
+                               }
+                               var a = v.split(" "),
+                                       x = (v.indexOf("left") !== -1) ? "0%" : (v.indexOf("right") !== -1) ? "100%" : a[0],
+                                       y = (v.indexOf("top") !== -1) ? "0%" : (v.indexOf("bottom") !== -1) ? "100%" : a[1];
+                               if (y == null) {
+                                       y = "0";
+                               } else if (y === "center") {
+                                       y = "50%";
+                               }
+                               if (x === "center" || isNaN(parseFloat(x))) { //remember, the user could flip-flop the values and say "bottom center" or "center bottom", etc. "center" is ambiguous because it could be used to describe horizontal or vertical, hence the isNaN().
+                                       x = "50%";
+                               }
+                               if (recObj) {
+                                       recObj.oxp = (x.indexOf("%") !== -1);
+                                       recObj.oyp = (y.indexOf("%") !== -1);
+                                       recObj.oxr = (x.charAt(1) === "=");
+                                       recObj.oyr = (y.charAt(1) === "=");
+                                       recObj.ox = parseFloat(x.replace(_NaNExp, ""));
+                                       recObj.oy = parseFloat(y.replace(_NaNExp, ""));
+                               }
+                               return x + " " + y + ((a.length > 2) ? " " + a[2] : "");
+                       },
+
+                       /**
+                        * @private Takes an ending value (typically a string, but can be a number) and a starting value and returns the change between the two, looking for relative value indicators like += and -= and it also ignores suffixes (but make sure the ending value starts with a number or +=/-= and that the starting value is a NUMBER!)
+                        * @param {(number|string)} e End value which is typically a string, but could be a number
+                        * @param {(number|string)} b Beginning value which is typically a string but could be a number
+                        * @return {number} Amount of change between the beginning and ending values (relative values that have a "+=" or "-=" are recognized)
+                        */
+                       _parseChange = function(e, b) {
+                               return (typeof(e) === "string" && e.charAt(1) === "=") ? parseInt(e.charAt(0) + "1", 10) * parseFloat(e.substr(2)) : parseFloat(e) - parseFloat(b);
+                       },
+
+                       /**
+                        * @private Takes a value and a default number, checks if the value is relative, null, or numeric and spits back a normalized number accordingly. Primarily used in the _parseTransform() function.
+                        * @param {Object} v Value to be parsed
+                        * @param {!number} d Default value (which is also used for relative calculations if "+=" or "-=" is found in the first parameter)
+                        * @return {number} Parsed value
+                        */
+                       _parseVal = function(v, d) {
+                               return (v == null) ? d : (typeof(v) === "string" && v.charAt(1) === "=") ? parseInt(v.charAt(0) + "1", 10) * Number(v.substr(2)) + d : parseFloat(v);
+                       },
+
+                       /**
+                        * @private Translates strings like "40deg" or "40" or 40rad" or "+=40deg" to a numeric radian angle, optionally relative to a default value (if "+=" or "-=" prefix is found)
+                        * @param {Object} v Value to be parsed
+                        * @param {!number} d Default value (which is also used for relative calculations if "+=" or "-=" is found in the first parameter)
+                        * @return {number} parsed angle in radians
+                        */
+                       _parseAngle = function(v, d) {
+                               if (v == null) {
+                                       return d;
+                               }
+                               var m = (v.indexOf("rad") === -1) ? _DEG2RAD : 1,
+                                       r = (v.charAt(1) === "=");
+                               v = Number(v.replace(_NaNExp, "")) * m;
+                               return r ? v + d : v;
+                       },
+
+                       /**
+                        * @private Translates an ending rotation value (could be a string or number, relative or not) into a radian number representing the shortest direction (no more than 180 degrees away from the beginning, or Math.PI radians). For example, if b is 0 and e is "270deg", this method would return -Math.PI/2 (-90 degrees).
+                        * @param {(number|string)} e ending/destination rotation value (can be a number or string. If a string, it can be relative or not)
+                        * @param {number} b beginning value
+                        * @return {number} rotation value in radians
+                        */
+                       _parseShortRotation = function(e, b) {
+                               var r = (typeof(e) === "number") ? e * _DEG2RAD : _parseAngle(e, b),
+                                       dif = (r - b) % (Math.PI * 2);
+                               if (dif !== dif % Math.PI) {
+                                       dif += Math.PI * ((dif < 0) ? 2 : -2);
+                               }
+                               return b + dif;
+                       },
+
+                       _colorLookup = {aqua:[0,255,255],
+                               lime:[0,255,0],
+                               silver:[192,192,192],
+                               black:[0,0,0],
+                               maroon:[128,0,0],
+                               teal:[0,128,128],
+                               blue:[0,0,255],
+                               navy:[0,0,128],
+                               white:[255,255,255],
+                               fuchsia:[255,0,255],
+                               olive:[128,128,0],
+                               yellow:[255,255,0],
+                               orange:[255,165,0],
+                               gray:[128,128,128],
+                               purple:[128,0,128],
+                               green:[0,128,0],
+                               red:[255,0,0],
+                               pink:[255,192,203],
+                               cyan:[0,255,255],
+                               transparent:[255,255,255,0]},
+
+                       /**
+                        * @private Parses a color (like #9F0, #FF9900, or rgb(255,51,153)) into an array with 3 elements for red, green, and blue. Also handles rgba() values (splits into array of 4 elements of course)
+                        * @param {(string|number)} v The value the should be parsed which could be a string like #9F0 or rgb(255,102,51) or rgba(255,0,0,0.5) or it could be a number like 0xFF00CC or even a named color like red, blue, purple, etc.
+                        * @return {Array.<number>} An array containing red, green, and blue (and optionally alpha) in that order.
+                        */
+                       _parseColor = function(v) {
+                               if (!v || v === "") {
+                                       return _colorLookup.black;
+                               } else if (_colorLookup[v]) {
+                                       return _colorLookup[v];
+                               } else if (typeof(v) === "number") {
+                                       return [v >> 16, (v >> 8) & 255, v & 255];
+                               } else if (v.charAt(0) === "#") {
+                                       if (v.length === 4) { //for shorthand like #9F0
+                                               var c1 = v.charAt(1),
+                                                       c2 = v.charAt(2),
+                                                       c3 = v.charAt(3);
+                                               v = "#" + c1 + c1 + c2 + c2 + c3 + c3;
+                                       }
+                                       v = parseInt(v.substr(1), 16);
+                                       return [v >> 16, (v >> 8) & 255, v & 255];
+                               }
+                               v = v.match(_numExp)  || _colorLookup.transparent;
+                               v[0] = Number(v[0]);
+                               v[1] = Number(v[1]);
+                               v[2] = Number(v[2]);
+                               if (v.length > 3) {
+                                       v[3] = Number(v[3]);
+                               }
+                               return v;
+                       },
+                       _colorExp = "(?:\\b(?:(?:rgb|rgba)\\(.+?\\))|\\B#.+?\\b"; //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.
+
+               for (p in _colorLookup) {
+                       _colorExp += "|" + p + "\\b";
+               }
+               _colorExp = new RegExp(_colorExp+")", "gi");
+
+               /**
+                * @private Returns a formatter function that handles taking a string (or number in some cases) and returning a consistently formatted one in terms of delimiters, quantity of values, etc. For example, we may get boxShadow values defined as "0px red" or "0px 0px 10px rgb(255,0,0)" or "0px 0px 20px 20px #F00" and we need to ensure that what we get back is described with 4 numbers and a color. This allows us to feed it into the _parseComplex() method and split the values up appropriately. The neat thing about this _getFormatter() function is that the dflt defines a pattern as well as a default, so for example, _getFormatter("0px 0px 0px 0px #777", true) not only sets the default as 0px for all distances and #777 for the color, but also sets the pattern such that 4 numbers and a color will always get returned.
+                * @param {!string} dflt The default value and pattern to follow. So "0px 0px 0px 0px #777" will ensure that 4 numbers and a color will always get returned.
+                * @param {boolean=} clr If true, the values should be searched for color-related data. For example, boxShadow values typically contain a color whereas borderRadius don't.
+                * @param {boolean=} collapsible If true, the value is a top/left/right/bottom style one that acts like margin or padding, where if only one value is received, it's used for all 4; if 2 are received, the first is duplicated for 3rd (bottom) and the 2nd is duplicated for the 4th spot (left), etc.
+                * @return {Function} formatter function
+                */
+               var _getFormatter = function(dflt, clr, collapsible) {
+                               if (dflt == null) {
+                                       return function(v) {return v;};
+                               }
+                               var dColor = clr ? (dflt.match(_colorExp) || [""])[0] : "",
+                                       dVals = dflt.split(dColor).join("").match(_valuesExp) || [],
+                                       pfx = dflt.substr(0, dflt.indexOf(dVals[0])),
+                                       sfx = (dflt.charAt(dflt.length - 1) === ")") ? ")" : "",
+                                       delim = (dflt.indexOf(" ") !== -1) ? " " : ",",
+                                       numVals = dVals.length,
+                                       dSfx = (numVals > 0) ? dVals[0].replace(_numExp, "") : "";
+                               if (clr) {
+                                       return function(v) {
+                                               if (typeof(v) === "number") {
+                                                       v += dSfx;
+                                               }
+                                               var color = (v.match(_colorExp) || [dColor])[0],
+                                                       vals = v.split(color).join("").match(_valuesExp) || [],
+                                                       i = vals.length;
+                                               if (numVals > i--) {
+                                                       while (++i < numVals) {
+                                                               vals[i] = collapsible ? vals[(((i - 1) / 2) >> 0)] : dVals[i];
+                                                       }
+                                               }
+                                               return pfx + vals.join(delim) + delim + color + sfx;
+                                       };
+
+                               }
+                               return function(v) {
+                                       if (typeof(v) === "number") {
+                                               v += dSfx;
+                                       }
+                                       var vals = v.match(_valuesExp) || [],
+                                               i = vals.length;
+                                       if (numVals > i--) {
+                                               while (++i < numVals) {
+                                                       vals[i] = collapsible ? vals[(((i - 1) / 2) >> 0)] : dVals[i];
+                                               }
+                                       }
+                                       return pfx + vals.join(delim) + sfx;
+                               };
+                       },
+
+                       /**
+                        * @private returns a formatter function that's used for edge-related values like marginTop, marginLeft, paddingBottom, paddingRight, etc. Just pass a comma-delimited list of property names related to the edges.
+                        * @param {!string} props a comma-delimited list of property names in order from top to left, like "marginTop,marginRight,marginBottom,marginLeft"
+                        * @return {Function} a formatter function
+                        */
+                       _getEdgeParser = function(props) {
+                               props = props.split(",");
+                               return function(t, e, p, cssp, pt, plugin, vars) {
+                                       var a = (e + "").split(" "),
+                                               i;
+                                       vars = {};
+                                       for (i = 0; i < 4; i++) {
+                                               vars[props[i]] = a[i] = a[i] || a[(((i - 1) / 2) >> 0)];
+                                       }
+                                       return cssp.parse(t, vars, pt, plugin);
+                               };
+                       },
+
+                       //@private used when other plugins must tween values first, like BezierPlugin or ThrowPropsPlugin, etc. That plugin's setRatio() gets called first so that the values are updated, and then we loop through the MiniPropTweens  which handle copying the values into their appropriate slots so that they can then be applied correctly in the main CSSPlugin setRatio() method. Remember, we typically create a proxy object that has a bunch of uniquely-named properties that we feed to the sub-plugin and it does its magic normally, and then we must interpret those values and apply them to the css because often numbers must get combined/concatenated, suffixes added, etc. to work with css, like boxShadow could have 4 values plus a color.
+                       _setPluginRatio = _internals._setPluginRatio = function(v) {
+                               this.plugin.setRatio(v);
+                               var d = this.data,
+                                       proxy = d.proxy,
+                                       mpt = d.firstMPT,
+                                       min = 0.000001,
+                                       val, pt, i, str;
+                               while (mpt) {
+                                       val = proxy[mpt.v];
+                                       if (mpt.r) {
+                                               val = (val > 0) ? (val + 0.5) >> 0 : (val - 0.5) >> 0;
+                                       } else if (val < min && val > -min) {
+                                               val = 0;
+                                       }
+                                       mpt.t[mpt.p] = val;
+                                       mpt = mpt._next;
+                               }
+                               if (d.autoRotate) {
+                                       d.autoRotate.rotation = proxy.rotation;
+                               }
+                               //at the end, we must set the CSSPropTween's "e" (end) value dynamically here because that's what is used in the final setRatio() method.
+                               if (v === 1) {
+                                       mpt = d.firstMPT;
+                                       while (mpt) {
+                                               pt = mpt.t;
+                                               if (!pt.type) {
+                                                       pt.e = pt.s + pt.xs0;
+                                               } else if (pt.type === 1) {
+                                                       str = pt.xs0 + pt.s + pt.xs1;
+                                                       for (i = 1; i < pt.l; i++) {
+                                                               str += pt["xn"+i] + pt["xs"+(i+1)];
+                                                       }
+                                                       pt.e = str;
+                                               }
+                                               mpt = mpt._next;
+                                       }
+                               }
+                       },
+
+                       /**
+                        * @private @constructor Used by a few SpecialProps to hold important values for proxies. For example, _parseToProxy() creates a MiniPropTween instance for each property that must get tweened on the proxy, and we record the original property name as well as the unique one we create for the proxy, plus whether or not the value needs to be rounded plus the original value.
+                        * @param {!Object} t target object whose property we're tweening (often a CSSPropTween)
+                        * @param {!string} p property name
+                        * @param {(number|string|object)} v value
+                        * @param {MiniPropTween=} next next MiniPropTween in the linked list
+                        * @param {boolean=} r if true, the tweened value should be rounded to the nearest integer
+                        */
+                       MiniPropTween = function(t, p, v, next, r) {
+                               this.t = t;
+                               this.p = p;
+                               this.v = v;
+                               this.r = r;
+                               if (next) {
+                                       next._prev = this;
+                                       this._next = next;
+                               }
+                       },
+
+                       /**
+                        * @private Most other plugins (like BezierPlugin and ThrowPropsPlugin and others) can only tween numeric values, but CSSPlugin must accommodate special values that have a bunch of extra data (like a suffix or strings between numeric values, etc.). For example, boxShadow has values like "10px 10px 20px 30px rgb(255,0,0)" which would utterly confuse other plugins. This method allows us to split that data apart and grab only the numeric data and attach it to uniquely-named properties of a generic proxy object ({}) so that we can feed that to virtually any plugin to have the numbers tweened. However, we must also keep track of which properties from the proxy go with which CSSPropTween values and instances. So we create a linked list of MiniPropTweens. Each one records a target (the original CSSPropTween), property (like "s" or "xn1" or "xn2") that we're tweening and the unique property name that was used for the proxy (like "boxShadow_xn1" and "boxShadow_xn2") and whether or not they need to be rounded. That way, in the _setPluginRatio() method we can simply copy the values over from the proxy to the CSSPropTween instance(s). Then, when the main CSSPlugin setRatio() method runs and applies the CSSPropTween values accordingly, they're updated nicely. So the external plugin tweens the numbers, _setPluginRatio() copies them over, and setRatio() acts normally, applying css-specific values to the element.
+                        * This method returns an object that has the following properties:
+                        *  - proxy: a generic object containing the starting values for all the properties that will be tweened by the external plugin.  This is what we feed to the external _onInitTween() as the target
+                        *  - end: a generic object containing the ending values for all the properties that will be tweened by the external plugin. This is what we feed to the external plugin's _onInitTween() as the destination values
+                        *  - firstMPT: the first MiniPropTween in the linked list
+                        *  - pt: the first CSSPropTween in the linked list that was created when parsing. If shallow is true, this linked list will NOT attach to the one passed into the _parseToProxy() as the "pt" (4th) parameter.
+                        * @param {!Object} t target object to be tweened
+                        * @param {!(Object|string)} vars the object containing the information about the tweening values (typically the end/destination values) that should be parsed
+                        * @param {!CSSPlugin} cssp The CSSPlugin instance
+                        * @param {CSSPropTween=} pt the next CSSPropTween in the linked list
+                        * @param {TweenPlugin=} plugin the external TweenPlugin instance that will be handling tweening the numeric values
+                        * @param {boolean=} shallow if true, the resulting linked list from the parse will NOT be attached to the CSSPropTween that was passed in as the "pt" (4th) parameter.
+                        * @return An object containing the following properties: proxy, end, firstMPT, and pt (see above for descriptions)
+                        */
+                       _parseToProxy = _internals._parseToProxy = function(t, vars, cssp, pt, plugin, shallow) {
+                               var bpt = pt,
+                                       start = {},
+                                       end = {},
+                                       transform = cssp._transform,
+                                       oldForce = _forcePT,
+                                       i, p, xp, mpt, firstPT;
+                               cssp._transform = null;
+                               _forcePT = vars;
+                               pt = firstPT = cssp.parse(t, vars, pt, plugin);
+                               _forcePT = oldForce;
+                               //break off from the linked list so the new ones are isolated.
+                               if (shallow) {
+                                       cssp._transform = transform;
+                                       if (bpt) {
+                                               bpt._prev = null;
+                                               if (bpt._prev) {
+                                                       bpt._prev._next = null;
+                                               }
+                                       }
+                               }
+                               while (pt && pt !== bpt) {
+                                       if (pt.type <= 1) {
+                                               p = pt.p;
+                                               end[p] = pt.s + pt.c;
+                                               start[p] = pt.s;
+                                               if (!shallow) {
+                                                       mpt = new MiniPropTween(pt, "s", p, mpt, pt.r);
+                                                       pt.c = 0;
+                                               }
+                                               if (pt.type === 1) {
+                                                       i = pt.l;
+                                                       while (--i > 0) {
+                                                               xp = "xn" + i;
+                                                               p = pt.p + "_" + xp;
+                                                               end[p] = pt.data[xp];
+                                                               start[p] = pt[xp];
+                                                               if (!shallow) {
+                                                                       mpt = new MiniPropTween(pt, xp, p, mpt, pt.rxp[xp]);
+                                                               }
+                                                       }
+                                               }
+                                       }
+                                       pt = pt._next;
+                               }
+                               return {proxy:start, end:end, firstMPT:mpt, pt:firstPT};
+                       },
+
+
+
+                       /**
+                        * @constructor Each property that is tweened has at least one CSSPropTween associated with it. These instances store important information like the target, property, starting value, amount of change, etc. They can also optionally have a number of "extra" strings and numeric values named xs1, xn1, xs2, xn2, xs3, xn3, etc. where "s" indicates string and "n" indicates number. These can be pieced together in a complex-value tween (type:1) that has alternating types of data like a string, number, string, number, etc. For example, boxShadow could be "5px 5px 8px rgb(102, 102, 51)". In that value, there are 6 numbers that may need to tween and then pieced back together into a string again with spaces, suffixes, etc. xs0 is special in that it stores the suffix for standard (type:0) tweens, -OR- the first string (prefix) in a complex-value (type:1) CSSPropTween -OR- it can be the non-tweening value in a type:-1 CSSPropTween. We do this to conserve memory.
+                        * CSSPropTweens have the following optional properties as well (not defined through the constructor):
+                        *  - l: Length in terms of the number of extra properties that the CSSPropTween has (default: 0). For example, for a boxShadow we may need to tween 5 numbers in which case l would be 5; Keep in mind that the start/end values for the first number that's tweened are always stored in the s and c properties to conserve memory. All additional values thereafter are stored in xn1, xn2, etc.
+                        *  - xfirst: The first instance of any sub-CSSPropTweens that are tweening properties of this instance. For example, we may split up a boxShadow tween so that there's a main CSSPropTween of type:1 that has various xs* and xn* values associated with the h-shadow, v-shadow, blur, color, etc. Then we spawn a CSSPropTween for each of those that has a higher priority and runs BEFORE the main CSSPropTween so that the values are all set by the time it needs to re-assemble them. The xfirst gives us an easy way to identify the first one in that chain which typically ends at the main one (because they're all prepende to the linked list)
+                        *  - plugin: The TweenPlugin instance that will handle the tweening of any complex values. For example, sometimes we don't want to use normal subtweens (like xfirst refers to) to tween the values - we might want ThrowPropsPlugin or BezierPlugin some other plugin to do the actual tweening, so we create a plugin instance and store a reference here. We need this reference so that if we get a request to round values or disable a tween, we can pass along that request.
+                        *  - data: Arbitrary data that needs to be stored with the CSSPropTween. Typically if we're going to have a plugin handle the tweening of a complex-value tween, we create a generic object that stores the END values that we're tweening to and the CSSPropTween's xs1, xs2, etc. have the starting values. We store that object as data. That way, we can simply pass that object to the plugin and use the CSSPropTween as the target.
+                        *  - setRatio: Only used for type:2 tweens that require custom functionality. In this case, we call the CSSPropTween's setRatio() method and pass the ratio each time the tween updates. This isn't quite as efficient as doing things directly in the CSSPlugin's setRatio() method, but it's very convenient and flexible.
+                        * @param {!Object} t Target object whose property will be tweened. Often a DOM element, but not always. It could be anything.
+                        * @param {string} p Property to tween (name). For example, to tween element.width, p would be "width".
+                        * @param {number} s Starting numeric value
+                        * @param {number} c Change in numeric value over the course of the entire tween. For example, if element.width starts at 5 and should end at 100, c would be 95.
+                        * @param {CSSPropTween=} next The next CSSPropTween in the linked list. If one is defined, we will define its _prev as the new instance, and the new instance's _next will be pointed at it.
+                        * @param {number=} type The type of CSSPropTween where -1 = a non-tweening value, 0 = a standard simple tween, 1 = a complex value (like one that has multiple numbers in a comma- or space-delimited string like border:"1px solid red"), and 2 = one that uses a custom setRatio function that does all of the work of applying the values on each update.
+                        * @param {string=} n Name of the property that should be used for overwriting purposes which is typically the same as p but not always. For example, we may need to create a subtween for the 2nd part of a "clip:rect(...)" tween in which case "p" might be xs1 but "n" is still "clip"
+                        * @param {boolean=} r If true, the value(s) should be rounded
+                        * @param {number=} pr Priority in the linked list order. Higher priority CSSPropTweens will be updated before lower priority ones. The default priority is 0.
+                        * @param {string=} b Beginning value. We store this to ensure that it is EXACTLY what it was when the tween began without any risk of interpretation issues.
+                        * @param {string=} e Ending value. We store this to ensure that it is EXACTLY what the user defined at the end of the tween without any risk of interpretation issues.
+                        */
+                       CSSPropTween = _internals.CSSPropTween = function(t, p, s, c, next, type, n, r, pr, b, e) {
+                               this.t = t; //target
+                               this.p = p; //property
+                               this.s = s; //starting value
+                               this.c = c; //change value
+                               this.n = n || "css_" + p; //name that this CSSPropTween should be associated to (usually the same as p, but not always - n is what overwriting looks at)
+                               if (!(t instanceof CSSPropTween)) {
+                                       _overwriteProps.push(this.n);
+                               }
+                               this.r = r; //round (boolean)
+                               this.type = type || 0; //0 = normal tween, -1 = non-tweening (in which case xs0 will be applied to the target's property, like tp.t[tp.p] = tp.xs0), 1 = complex-value SpecialProp, 2 = custom setRatio() that does all the work
+                               if (pr) {
+                                       this.pr = pr;
+                                       _hasPriority = true;
+                               }
+                               this.b = (b === undefined) ? s : b;
+                               this.e = (e === undefined) ? s + c : e;
+                               if (next) {
+                                       this._next = next;
+                                       next._prev = this;
+                               }
+                       },
+
+                       /**
+                        * Takes a target, the beginning value and ending value (as strings) and parses them into a CSSPropTween (possibly with child CSSPropTweens) that accommodates multiple numbers, colors, comma-delimited values, etc. For example:
+                        * sp.parseComplex(element, "boxShadow", "5px 10px 20px rgb(255,102,51)", "0px 0px 0px red", true, "0px 0px 0px rgb(0,0,0,0)", pt);
+                        * It will walk through the beginning and ending values (which should be in the same format with the same number and type of values) and figure out which parts are numbers, what strings separate the numeric/tweenable values, and then create the CSSPropTweens accordingly. If a plugin is defined, no child CSSPropTweens will be created. Instead, the ending values will be stored in the "data" property of the returned CSSPropTween like: {s:-5, xn1:-10, xn2:-20, xn3:255, xn4:0, xn5:0} so that it can be fed to any other plugin and it'll be plain numeric tweens but the recomposition of the complex value will be handled inside CSSPlugin's setRatio().
+                        * If a setRatio is defined, the type of the CSSPropTween will be set to 2 and recomposition of the values will be the responsibility of that method.
+                        *
+                        * @param {!Object} t Target whose property will be tweened
+                        * @param {!string} p Property that will be tweened (its name, like "left" or "backgroundColor" or "boxShadow")
+                        * @param {string} b Beginning value
+                        * @param {string} e Ending value
+                        * @param {boolean} clrs If true, the value could contain a color value like "rgb(255,0,0)" or "#F00" or "red". The default is false, so no colors will be recognized (a performance optimization)
+                        * @param {(string|number|Object)} dflt The default beginning value that should be used if no valid beginning value is defined or if the number of values inside the complex beginning and ending values don't match
+                        * @param {?CSSPropTween} pt CSSPropTween instance that is the current head of the linked list (we'll prepend to this).
+                        * @param {number=} pr Priority in the linked list order. Higher priority properties will be updated before lower priority ones. The default priority is 0.
+                        * @param {TweenPlugin=} plugin If a plugin should handle the tweening of extra properties, pass the plugin instance here. If one is defined, then NO subtweens will be created for any extra properties (the properties will be created - just not additional CSSPropTween instances to tween them) because the plugin is expected to do so. However, the end values WILL be populated in the "data" property, like {s:100, xn1:50, xn2:300}
+                        * @param {function(number)=} setRatio If values should be set in a custom function instead of being pieced together in a type:1 (complex-value) CSSPropTween, define that custom function here.
+                        * @return {CSSPropTween} The first CSSPropTween in the linked list which includes the new one(s) added by the parseComplex() call.
+                        */
+                       _parseComplex = CSSPlugin.parseComplex = function(t, p, b, e, clrs, dflt, pt, pr, plugin, setRatio) {
+                               //DEBUG: _log("parseComplex: "+p+", b: "+b+", e: "+e);
+                               pt = new CSSPropTween(t, p, 0, 0, pt, (setRatio ? 2 : 1), null, false, pr, b, e);
+                               var ba = b.split(", ").join(",").split(" "), //beginning array
+                                       ea = (e + "").split(", ").join(",").split(" "), //ending array
+                                       l = ba.length,
+                                       autoRound = (_autoRound !== false),
+                                       i, xi, ni, bv, ev, bnums, enums, bn, rgba, temp, cv, str;
+                               if (l !== ea.length) {
+                                       //DEBUG: _log("mismatched formatting detected on " + p + " (" + b + " vs " + e + ")");
+                                       ba = (dflt || "").split(" ");
+                                       l = ba.length;
+                               }
+                               pt.plugin = plugin;
+                               pt.setRatio = setRatio;
+                               for (i = 0; i < l; i++) {
+                                       bv = ba[i];
+                                       ev = ea[i];
+                                       bn = parseFloat(bv);
+
+                                       //if the value begins with a number (most common). It's fine if it has a suffix like px
+                                       if (bn || bn === 0) {
+                                               pt.appendXtra("", bn, _parseChange(ev, bn), ev.replace(_relNumExp, ""), (autoRound && ev.indexOf("px") !== -1), true);
+
+                                       //if the value is a color
+                                       } else if (clrs && (bv.charAt(0) === "#" || bv.indexOf("rgb") === 0 || _colorLookup[bv])) {
+                                               bv = _parseColor(bv);
+                                               ev = _parseColor(ev);
+                                               rgba = (bv.length + ev.length > 6);
+
+                                               if (rgba && !_supportsOpacity && ev[3] === 0) { //older versions of IE don't support rgba(), so if the destination alpha is 0, just use "transparent" for the end color
+                                                       pt["xs" + pt.l] += pt.l ? " transparent" : "transparent";
+                                                       pt.e = pt.e.split(ea[i]).join("transparent");
+                                               } else {
+                                                       if (!_supportsOpacity) { //old versions of IE don't support rgba().
+                                                               rgba = false;
+                                                       }
+                                                       pt.appendXtra((rgba ? "rgba(" : "rgb("), bv[0], ev[0] - bv[0], ",", true, true)
+                                                               .appendXtra("", bv[1], ev[1] - bv[1], ",", true)
+                                                               .appendXtra("", bv[2], ev[2] - bv[2], (rgba ? "," : ")"), true);
+                                                       if (rgba) {
+                                                               bv = (bv.length < 4) ? 1 : bv[3];
+                                                               pt.appendXtra("", bv, ((ev.length < 4) ? 1 : ev[3]) - bv, ")", false);
+                                                       }
+                                               }
+
+                                       } else {
+                                               bnums = bv.match(_numExp); //gets each group of numbers in the beginning value string and drops them into an array
+
+                                               //if no number is found, treat it as a non-tweening value and just append the string to the current xs.
+                                               if (!bnums) {
+                                                       pt["xs" + pt.l] += pt.l ? " " + bv : bv;
+
+                                               //loop through all the numbers that are found and construct the extra values on the pt.
+                                               } else {
+                                                       enums = ev.match(_relNumExp); //get each group of numbers in the end value string and drop them into an array. We allow relative values too, like +=50 or -=.5
+                                                       if (!enums || enums.length !== bnums.length) {
+                                                               //DEBUG: _log("mismatched formatting detected on " + p + " (" + b + " vs " + e + ")");
+                                                               return pt;
+                                                       }
+                                                       ni = 0;
+                                                       for (xi = 0; xi < bnums.length; xi++) {
+                                                               cv = bnums[xi];
+                                                               temp = bv.indexOf(cv, ni);
+                                                               pt.appendXtra(bv.substr(ni, temp - ni), Number(cv), _parseChange(enums[xi], cv), "", (autoRound && bv.substr(temp + cv.length, 2) === "px"), (xi === 0));
+                                                               ni = temp + cv.length;
+                                                       }
+                                                       pt["xs" + pt.l] += bv.substr(ni);
+                                               }
+                                       }
+                               }
+                               //if there are relative values ("+=" or "-=" prefix), we need to adjust the ending value to eliminate the prefixes and combine the values properly.
+                               if (e.indexOf("=") !== -1) if (pt.data) {
+                                       str = pt.xs0 + pt.data.s;
+                                       for (i = 1; i < pt.l; i++) {
+                                               str += pt["xs" + i] + pt.data["xn" + i];
+                                       }
+                                       pt.e = str + pt["xs" + i];
+                               }
+                               if (!pt.l) {
+                                       pt.type = -1;
+                                       pt.xs0 = pt.e;
+                               }
+                               return pt.xfirst || pt;
+                       },
+                       i = 9;
+
+
+               p = CSSPropTween.prototype;
+               p.l = p.pr = 0; //length (number of extra properties like xn1, xn2, xn3, etc.
+               while (--i > 0) {
+                       p["xn" + i] = 0;
+                       p["xs" + i] = "";
+               }
+               p.xs0 = "";
+               p._next = p._prev = p.xfirst = p.data = p.plugin = p.setRatio = p.rxp = null;
+
+
+               /**
+                * Appends and extra tweening value to a CSSPropTween and automatically manages any prefix and suffix strings. The first extra value is stored in the s and c of the main CSSPropTween instance, but thereafter any extras are stored in the xn1, xn2, xn3, etc. The prefixes and suffixes are stored in the xs0, xs1, xs2, etc. properties. For example, if I walk through a clip value like "rect(10px, 5px, 0px, 20px)", the values would be stored like this:
+                * xs0:"rect(", s:10, xs1:"px, ", xn1:5, xs2:"px, ", xn2:0, xs3:"px, ", xn3:20, xn4:"px)"
+                * And they'd all get joined together when the CSSPlugin renders (in the setRatio() method).
+                * @param {string=} pfx Prefix (if any)
+                * @param {!number} s Starting value
+                * @param {!number} c Change in numeric value over the course of the entire tween. For example, if the start is 5 and the end is 100, the change would be 95.
+                * @param {string=} sfx Suffix (if any)
+                * @param {boolean=} r Round (if true).
+                * @param {boolean=} pad If true, this extra value should be separated by the previous one by a space. If there is no previous extra and pad is true, it will automatically drop the space.
+                * @return {CSSPropTween} returns itself so that multiple methods can be chained together.
+                */
+               p.appendXtra = function(pfx, s, c, sfx, r, pad) {
+                       var pt = this,
+                               l = pt.l;
+                       pt["xs" + l] += (pad && l) ? " " + pfx : pfx || "";
+                       if (!c) if (l !== 0 && !pt.plugin) { //typically we'll combine non-changing values right into the xs to optimize performance, but we don't combine them when there's a plugin that will be tweening the values because it may depend on the values being split apart, like for a bezier, if a value doesn't change between the first and second iteration but then it does on the 3rd, we'll run into trouble because there's no xn slot for that value!
+                               pt["xs" + l] += s + (sfx || "");
+                               return pt;
+                       }
+                       pt.l++;
+                       pt.type = pt.setRatio ? 2 : 1;
+                       pt["xs" + pt.l] = sfx || "";
+                       if (l > 0) {
+                               pt.data["xn" + l] = s + c;
+                               pt.rxp["xn" + l] = r; //round extra property (we need to tap into this in the _parseToProxy() method)
+                               pt["xn" + l] = s;
+                               if (!pt.plugin) {
+                                       pt.xfirst = new CSSPropTween(pt, "xn" + l, s, c, pt.xfirst || pt, 0, pt.n, r, pt.pr);
+                                       pt.xfirst.xs0 = 0; //just to ensure that the property stays numeric which helps modern browsers speed up processing. Remember, in the setRatio() method, we do pt.t[pt.p] = val + pt.xs0 so if pt.xs0 is "" (the default), it'll cast the end value as a string. When a property is a number sometimes and a string sometimes, it prevents the compiler from locking in the data type, slowing things down slightly.
+                               }
+                               return pt;
+                       }
+                       pt.data = {s:s + c};
+                       pt.rxp = {};
+                       pt.s = s;
+                       pt.c = c;
+                       pt.r = r;
+                       return pt;
+               };
+
+               /**
+                * @constructor A SpecialProp is basically a css property that needs to be treated in a non-standard way, like if it may contain a complex value like boxShadow:"5px 10px 15px rgb(255, 102, 51)" or if it is associated with another plugin like ThrowPropsPlugin or BezierPlugin. Every SpecialProp is associated with a particular property name like "boxShadow" or "throwProps" or "bezier" and it will intercept those values in the vars object that's passed to the CSSPlugin and handle them accordingly.
+                * @param {!string} p Property name (like "boxShadow" or "throwProps")
+                * @param {(string|number)=} dflt Default starting value.
+                * @param {function(Object, Object, Object, Object):CSSPropTween=} parser A function that should be called when the associated property name is found in the vars. This function should return a CSSPropTween instance and it should ensure that it is properly inserted into the linked list. It will receive 4 paramters: 1) The target, 2) The value defined in the vars, 3) The CSSPlugin instance (whose _firstPT should be used for the linked list), and 4) A computed style object if one was calculated (this is a speed optimization that allows retrieval of starting values quicker)
+                * @param {boolean=} vpfx If true, the property will be checked to see if a vendor prefix is necessary and if so, it will be used.
+                * @param {boolean=} clrs If true, the special property may contain color values. Many do not in which case we can skip some processing steps when analyzing the starting/ending values.
+                * @param {function(string):string=} formatter Function that takes a string (beginning or ending value) and formats it correctly, like for boxShadow it could take "5px 5px red" and format it to "5px 5px 0px 0px red" so that both the beginning and ending values have a common order and quantity of values.
+                * @param {number=} pr Priority in the linked list order. Higher priority SpecialProps will be updated before lower priority ones. The default priority is 0.
+                */
+               var SpecialProp = function(p, dflt, parser, vpfx, clrs, formatter, pr) {
+                               this.p = vpfx ? _checkPropPrefix(p) || p : p;
+                               _specialProps[p] = _specialProps[this.p] = this;
+                               this.format = formatter || _getFormatter(dflt, clrs);
+                               if (parser) {
+                                       this.parse = parser;
+                               }
+                               this.clrs = clrs;
+                               this.dflt = dflt;
+                               this.pr = pr || 0;
+                       },
+
+                       //shortcut for creating a new SpecialProp that can accept multiple properties as a comma-delimited list (helps minification). dflt can be an array for multiple values (we don't do a comma-delimited list because the default value may contain commas, like rect(0px,0px,0px,0px)). We attach this method to the SpecialProp class/object instead of using a private _createSpecialProp() method so that we can tap into it externally if necessary, like from another plugin.
+                       _registerComplexSpecialProp = _internals._registerComplexSpecialProp = function(p, dflt, parser, vpfx, clrs, formatter, pr) {
+                               var a = p.split(","),
+                                       da = (dflt instanceof Array) ? dflt : [dflt],
+                                       i = a.length,
+                                       temp;
+                               while (--i > -1) {
+                                       temp = new SpecialProp(a[i], da[i], parser, (vpfx && i === 0), clrs, formatter, pr);
+                               }
+                       },
+                       //creates a placeholder special prop for a plugin so that the property gets caught the first time a tween of it is attempted, and at that time it makes the plugin register itself, thus taking over for all future tweens of that property. This allows us to not mandate that things load in a particular order and it also allows us to log() an error that informs the user when they attempt to tween an external plugin-related property without loading its .js file.
+                       _registerPluginProp = function(p) {
+                               if (!_specialProps[p]) {
+                                       var pluginName = p.charAt(0).toUpperCase() + p.substr(1) + "Plugin";
+                                       _registerComplexSpecialProp(p, null, function(t, e, p, cssp, pt, plugin, vars) {
+                                               var pluginClass = window.com.greensock.plugins[pluginName];
+                                               if (!pluginClass) {
+                                                       _log("Error: " + pluginName + " js file not loaded.");
+                                                       return pt;
+                                               }
+                                               pluginClass._cssRegister();
+                                               return _specialProps[p].parse(t, e, p, cssp, pt, plugin, vars);
+                                       });
+                               }
+                       };
+
+
+               p = SpecialProp.prototype;
+
+               /**
+                * Alias for _parseComplex() that automatically plugs in certain values for this SpecialProp, like its property name, whether or not colors should be sensed, the default value, and priority.
+                * @param {!Object} t target element
+                * @param {(string|number|object)} b beginning value
+                * @param {(string|number|object)} e ending (destination) value
+                * @param {CSSPropTween=} pt next CSSPropTween in the linked list
+                * @param {TweenPlugin=} plugin If another plugin will be tweening the complex value, that TweenPlugin instance goes here.
+                * @param {function=} setRatio If a custom setRatio() method should be used to handle this complex value, that goes here.
+                * @return {CSSPropTween=} First CSSPropTween in the linked list
+                */
+               p.parseComplex = function(t, b, e, pt, plugin, setRatio) {
+                       return _parseComplex(t, this.p, b, e, this.clrs, this.dflt, pt, this.pr, plugin, setRatio);
+               };
+
+               /**
+                * Accepts a target and end value and spits back a CSSPropTween that has been inserted into the CSSPlugin's linked list and conforms with all the conventions we use internally, like type:-1, 0, 1, or 2, setting up any extra property tweens, priority, etc. For example, if we have a boxShadow SpecialProp and call:
+                * this._firstPT = sp.parse(element, "5px 10px 20px rgb(2550,102,51)", "boxShadow", this);
+                * It should figure out the starting value of the element's boxShadow, compare it to the provided end value and create all the necessary CSSPropTweens of the appropriate types to tween the boxShadow. The CSSPropTween that gets spit back should already be inserted into the linked list (the 4th parameter is the current head, so prepend to that).
+                * @param {!Object) t Target object whose property is being tweened
+                * @param {Object} e End value as provided in the vars object (typically a string, but not always - like a throwProps would be an object).
+                * @param {!string} p Property name
+                * @param {!CSSPlugin} cssp The CSSPlugin instance that should be associated with this tween.
+                * @param {?CSSPropTween} pt The CSSPropTween that is the current head of the linked list (we'll prepend to it)
+                * @param {TweenPlugin=} plugin If a plugin will be used to tween the parsed value, this is the plugin instance.
+                * @param {Object=} vars Original vars object that contains the data for parsing.
+                * @return {CSSPropTween} The first CSSPropTween in the linked list which includes the new one(s) added by the parse() call.
+                */
+               p.parse = function(t, e, p, cssp, pt, plugin, vars) {
+                       return this.parseComplex(t.style, this.format(_getStyle(t, p, _cs, false, this.dflt)), this.format(e), pt, plugin);
+               };
+
+               /**
+                * Registers a special property that should be intercepted from any "css" objects defined in tweens. This allows you to handle them however you want without CSSPlugin doing it for you. The 2nd parameter should be a function that accepts 3 parameters:
+                *  1) Target object whose property should be tweened (typically a DOM element)
+                *  2) The end/destination value (could be a string, number, object, or whatever you want)
+                *  3) The tween instance (you probably don't need to worry about this, but it can be useful for looking up information like the duration)
+                *
+                * Then, your function should return a function which will be called each time the tween gets rendered, passing a numeric "ratio" parameter to your function that indicates the change factor (usually between 0 and 1). For example:
+                *
+                * CSSPlugin.registerSpecialProp("myCustomProp", function(target, value, tween) {
+                *      var start = target.style.width;
+                *      return function(ratio) {
+                *              target.style.width = (start + value * ratio) + "px";
+                *              console.log("set width to " + target.style.width);
+                *          }
+                * }, 0);
+                *
+                * Then, when I do this tween, it will trigger my special property:
+                *
+                * TweenLite.to(element, 1, {css:{myCustomProp:100}});
+                *
+                * In the example, of course, we're just changing the width, but you can do anything you want.
+                *
+                * @param {!string} name Property name (or comma-delimited list of property names) that should be intercepted and handled by your function. For example, if I define "myCustomProp", then it would handle that portion of the following tween: TweenLite.to(element, 1, {css:{myCustomProp:100}})
+                * @param {!function(Object, Object, Object, string):function(number)} onInitTween The function that will be called when a tween of this special property is performed. The function will receive 4 parameters: 1) Target object that should be tweened, 2) Value that was passed to the tween, 3) The tween instance itself (rarely used), and 4) The property name that's being tweened. Your function should return a function that should be called on every update of the tween. That function will receive a single parameter that is a "change factor" value (typically between 0 and 1) indicating the amount of change as a ratio. You can use this to determine how to set the values appropriately in your function.
+                * @param {number=} priority Priority that helps the engine determine the order in which to set the properties (default: 0). Higher priority properties will be updated before lower priority ones.
+                */
+               CSSPlugin.registerSpecialProp = function(name, onInitTween, priority) {
+                       _registerComplexSpecialProp(name, null, function(t, e, p, cssp, pt, plugin, vars) {
+                               var rv = new CSSPropTween(t, p, 0, 0, pt, 2, p, false, priority);
+                               rv.plugin = plugin;
+                               rv.setRatio = onInitTween(t, e, cssp._tween, p);
+                               return rv;
+                       }, false, false, null, priority);
+               };
+               
+               
+
+
+
+
+
+
+               //transform-related methods and properties
+               var _transformProps = ["scaleX","scaleY","scaleZ","x","y","z","skewX","rotation","rotationX","rotationY","perspective"],
+                       _transformProp = _checkPropPrefix("transform"), //the Javascript (camelCase) transform property, like msTransform, WebkitTransform, MozTransform, or OTransform.
+                       _transformPropCSS = _prefixCSS + "transform",
+                       _transformOriginProp = _checkPropPrefix("transformOrigin"),
+                       _supports3D = (_checkPropPrefix("perspective") !== null),
+
+                       /**
+                        * Parses the transform values for an element, returning an object with x, y, z, scaleX, scaleY, scaleZ, rotation, rotationX, rotationY, skewX, and skewY properties. Note: by default (for performance reasons), all skewing is combined into skewX and rotation but skewY still has a place in the transform object so that we can record how much of the skew is attributed to skewX vs skewY. Remember, a skewY of 10 looks the same as a rotation of 10 and skewX of -10.
+                        * @param {!Object} t target element
+                        * @param {Object=} cs computed style object (optional)
+                        * @param {boolean=} rec if true, the transform values will be recorded to the target element's _gsTransform object, like target._gsTransform = {x:0, y:0, z:0, scaleX:1...}
+                        * @return {object} object containing all of the transform properties/values like {x:0, y:0, z:0, scaleX:1...}
+                        */
+                       _getTransform = function(t, cs, rec) {
+                               var tm = rec ? t._gsTransform || {skewY:0} : {skewY:0},
+                                       invX = (tm.scaleX < 0), //in order to interpret things properly, we need to know if the user applied a negative scaleX previously so that we can adjust the rotation and skewX accordingly. Otherwise, if we always interpret a flipped matrix as affecting scaleY and the user only wants to tween the scaleX on multiple sequential tweens, it would keep the negative scaleY without that being the user's intent.
+                                       min = 0.00002,
+                                       rnd = 100000,
+                                       minPI = -Math.PI + 0.0001,
+                                       maxPI = Math.PI - 0.0001,
+                                       zOrigin = _supports3D ? parseFloat(_getStyle(t, _transformOriginProp, cs, false, "0 0 0").split(" ")[2]) || tm.zOrigin  || 0 : 0,
+                                       s, m, i, n, scaleX, scaleY, rotation, skewX, difX, difY, difR, difS;
+                               if (_transformProp) {
+                                       s = _getStyle(t, _transformPropCSS, cs, true);
+                               } else if (t.currentStyle) {
+                                       //for older versions of IE, we need to interpret the filter portion that is in the format: progid:DXImageTransform.Microsoft.Matrix(M11=6.123233995736766e-17, M12=-1, M21=1, M22=6.123233995736766e-17, sizingMethod='auto expand') Notice that we need to swap b and c compared to a normal matrix.
+                                       s = t.currentStyle.filter.match(_ieGetMatrixExp);
+                                       s = (s && s.length === 4) ? s[0].substr(4) + "," + Number(s[2].substr(4)) + "," + Number(s[1].substr(4)) + "," + s[3].substr(4) + "," + (tm ? tm.x : 0) + "," + (tm ? tm.y : 0) : null;
+                               }
+                               //split the matrix values out into an array (m for matrix)
+                               m = (s || "").match(/(?:\-|\b)[\d\-\.e]+\b/gi) || [];
+                               i = m.length;
+                               while (--i > -1) {
+                                       n = Number(m[i]);
+                                       m[i] = ((n * rnd + ((n < 0) ? -0.5 : 0.5)) >> 0) / rnd; //convert strings to Numbers and round to 5 decimal places to avoid issues with tiny numbers
+                               }
+                               if (m.length === 16) {
+
+                                       //we'll only look at these position-related 6 variables first because if x/y/z all match, it's relatively safe to assume we don't need to re-parse everything which risks losing important rotational information (like rotationX:180 plus rotationY:180 would look the same as rotation:180 - there's no way to know for sure which direction was taken based solely on the matrix3d() values)
+                                       var a13 = m[8], a23 = m[9], a33 = m[10],
+                                               a14 = m[12], a24 = m[13], a34 = m[14];
+
+                                       //we manually compensate for non-zero z component of transformOrigin to work around bugs in Safari
+                                       if (tm.zOrigin) {
+                                               a34 = -tm.zOrigin;
+                                               a14 = a13*a34-m[12];
+                                               a24 = a23*a34-m[13];
+                                               a34 = a33*a34+tm.zOrigin-m[14];
+                                       }
+
+                                       //only parse from the matrix if we MUST because not only is it usually unnecessary due to the fact that we store the values in the _gsTransform object, but also because it's impossible to accurately interpret rotationX, rotationY, and rotationZ if all are applied, so it's much better to rely on what we store. However, we must parse the first time that an object is tweened. We also assume that if the position has changed, the user must have done some styling changes outside of CSSPlugin, thus we force a parse in that scenario.
+                                       if (!rec || a14 !== tm.x || a24 !== tm.y || a34 !== tm.z) {
+                                               var a11 = m[0], a21 = m[1], a31 = m[2], a41 = m[3],
+                                                       a12 = m[4], a22 = m[5], a32 = m[6], a42 = m[7],
+                                                       a43 = m[11],
+                                                       angle = tm.rotationX = Math.atan2(a32, a33),
+                                                       xFlip = (angle < minPI || angle > maxPI),
+                                                       t1, t2, t3, t4, cos, sin, yFlip, zFlip;
+                                               //rotationX
+                                               if (angle) {
+                                                       cos = Math.cos(-angle);
+                                                       sin = Math.sin(-angle);
+                                                       t1 = a12*cos+a13*sin;
+                                                       t2 = a22*cos+a23*sin;
+                                                       t3 = a32*cos+a33*sin;
+                                                       t4 = a42*cos+a43*sin;
+                                                       a13 = a12*-sin+a13*cos;
+                                                       a23 = a22*-sin+a23*cos;
+                                                       a33 = a32*-sin+a33*cos;
+                                                       a43 = a42*-sin+a43*cos;
+                                                       a12 = t1;
+                                                       a22 = t2;
+                                                       a32 = t3;
+                                                       //a42 = t4;
+                                               }
+                                               //rotationY
+                                               angle = tm.rotationY = Math.atan2(a13, a11);
+                                               if (angle) {
+                                                       yFlip = (angle < minPI || angle > maxPI);
+                                                       cos = Math.cos(-angle);
+                                                       sin = Math.sin(-angle);
+                                                       t1 = a11*cos-a13*sin;
+                                                       t2 = a21*cos-a23*sin;
+                                                       t3 = a31*cos-a33*sin;
+                                                       t4 = a41*cos-a43*sin;
+                                                       //a13 = a11*sin+a13*cos;
+                                                       a23 = a21*sin+a23*cos;
+                                                       a33 = a31*sin+a33*cos;
+                                                       a43 = a41*sin+a43*cos;
+                                                       a11 = t1;
+                                                       a21 = t2;
+                                                       a31 = t3;
+                                                       //a41 = t4;
+                                               }
+                                               //rotationZ
+                                               angle = tm.rotation = Math.atan2(a21, a22);
+                                               if (angle) {
+                                                       zFlip = (angle < minPI || angle > maxPI);
+                                                       cos = Math.cos(-angle);
+                                                       sin = Math.sin(-angle);
+                                                       a11 = a11*cos+a12*sin;
+                                                       t2 = a21*cos+a22*sin;
+                                                       a22 = a21*-sin+a22*cos;
+                                                       a32 = a31*-sin+a32*cos;
+                                                       a21 = t2;
+                                               }
+
+                                               if (zFlip && xFlip) {
+                                                       tm.rotation = tm.rotationX = 0;
+                                               } else if (zFlip && yFlip) {
+                                                       tm.rotation = tm.rotationY = 0;
+                                               } else if (yFlip && xFlip) {
+                                                       tm.rotationY = tm.rotationX = 0;
+                                               }
+
+                                               tm.scaleX = ((Math.sqrt(a11 * a11 + a21 * a21) * rnd + 0.5) >> 0) / rnd;
+                                               tm.scaleY = ((Math.sqrt(a22 * a22 + a23 * a23) * rnd + 0.5) >> 0) / rnd;
+                                               tm.scaleZ = ((Math.sqrt(a32 * a32 + a33 * a33) * rnd + 0.5) >> 0) / rnd;
+                                               tm.skewX = 0;
+                                               tm.perspective = a43 ? 1 / a43 : 0;
+                                               tm.x = a14;
+                                               tm.y = a24;
+                                               tm.z = a34;
+                                       }
+
+                               } else if (!_supports3D || m.length === 0 || tm.x !== m[4] || tm.y !== m[5] || (!tm.rotationX && !tm.rotationY)) { //sometimes a 6-element matrix is returned even when we performed 3D transforms, like if rotationX and rotationY are 180. In cases like this, we still need to honor the 3D transforms. If we just rely on the 2D info, it could affect how the data is interpreted, like scaleY might get set to -1 or rotation could get offset by 180 degrees. For example, do a TweenLite.to(element, 1, {css:{rotationX:180, rotationY:180}}) and then later, TweenLite.to(element, 1, {css:{rotationX:0}}) and without this conditional logic in place, it'd jump to a state of being unrotated when the 2nd tween starts. Then again, we need to honor the fact that the user COULD alter the transforms outside of CSSPlugin, like by manually applying new css, so we try to sense that by looking at x and y because if those changed, we know the changes were made outside CSSPlugin and we force a reinterpretation of the matrix values.
+                                       var k = (m.length >= 6),
+                                               a = k ? m[0] : 1,
+                                               b = m[1] || 0,
+                                               c = m[2] || 0,
+                                               d = k ? m[3] : 1;
+
+                                       tm.x = m[4] || 0;
+                                       tm.y = m[5] || 0;
+                                       scaleX = Math.sqrt(a * a + b * b);
+                                       scaleY = Math.sqrt(d * d + c * c);
+                                       rotation = (a || b) ? Math.atan2(b, a) : tm.rotation || 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).
+                                       skewX = (c || d) ? Math.atan2(c, d) + rotation : tm.skewX || 0;
+                                       difX = scaleX - Math.abs(tm.scaleX || 0);
+                                       difY = scaleY - Math.abs(tm.scaleY || 0);
+                                       if (Math.abs(skewX) > Math.PI / 2 && Math.abs(skewX) < Math.PI * 1.5) {
+                                               if (invX) {
+                                                       scaleX *= -1;
+                                                       skewX += (rotation <= 0) ? Math.PI : -Math.PI;
+                                                       rotation += (rotation <= 0) ? Math.PI : -Math.PI;
+                                               } else {
+                                                       scaleY *= -1;
+                                                       skewX += (skewX <= 0) ? Math.PI : -Math.PI;
+                                               }
+                                       }
+                                       difR = (rotation - tm.rotation) % Math.PI; //note: matching ranges would be very small (+/-0.0001) or very close to Math.PI (+/-3.1415).
+                                       difS = (skewX - tm.skewX) % Math.PI;
+                                       //if there's already a recorded _gsTransform in place for the target, we should leave those values in place unless we know things changed for sure (beyond a super small amount). This gets around ambiguous interpretations, like if scaleX and scaleY are both -1, the matrix would be the same as if the rotation was 180 with normal scaleX/scaleY. If the user tweened to particular values, those must be prioritized to ensure animation is consistent.
+                                       if (tm.skewX === undefined || difX > min || difX < -min || difY > min || difY < -min || (difR > minPI && difR < maxPI && (difR * rnd) >> 0 !== 0) || (difS > minPI && difS < maxPI && (difS * rnd) >> 0 !== 0)) {
+                                               tm.scaleX = scaleX;
+                                               tm.scaleY = scaleY;
+                                               tm.rotation = rotation;
+                                               tm.skewX = skewX;
+                                       }
+                                       if (_supports3D) {
+                                               tm.rotationX = tm.rotationY = tm.z = 0;
+                                               tm.perspective = parseFloat(CSSPlugin.defaultTransformPerspective) || 0;
+                                               tm.scaleZ = 1;
+                                       }
+                               }
+                               tm.zOrigin = zOrigin;
+
+                               //some browsers have a hard time with very small values like 2.4492935982947064e-16 (notice the "e-" towards the end) and would render the object slightly off. So we round to 0 in these cases. The conditional logic here is faster than calling Math.abs(). Also, browsers tend to render a SLIGHTLY rotated object in a fuzzy way, so we need to snap to exactly 0 when appropriate.
+                               for (i in tm) {
+                                       if (tm[i] < min) if (tm[i] > -min) {
+                                               tm[i] = 0;
+                                       }
+                                       //alternate method rounds to 5 decimal places: tm[i] = ((tm[i] * rnd) >> 0) / rnd;
+                               }
+                               //DEBUG: _log("parsed rotation: "+(tm.rotationX*_RAD2DEG)+", "+(tm.rotationY*_RAD2DEG)+", "+(tm.rotation*_RAD2DEG)+", scale: "+tm.scaleX+", "+tm.scaleY+", "+tm.scaleZ+", position: "+tm.x+", "+tm.y+", "+tm.z+", perspective: "+tm.perspective);
+                               if (rec) {
+                                       t._gsTransform = tm; //record to the object's _gsTransform which we use so that tweens can control individual properties independently (we need all the properties to accurately recompose the matrix in the setRatio() method)
+                               }
+                               return tm;
+                       },
+                       //for setting 2D transforms in IE6, IE7, and IE8 (must use a "filter" to emulate the behavior of modern day browser transforms)
+                       _setIETransformRatio = function(v) {
+                               var t = this.data, //refers to the element's _gsTransform object
+                                       ang = -t.rotation,
+                                       skew = ang + t.skewX,
+                                       rnd = 100000,
+                                       a = ((Math.cos(ang) * t.scaleX * rnd) >> 0) / rnd,
+                                       b = ((Math.sin(ang) * t.scaleX * rnd) >> 0) / rnd,
+                                       c = ((Math.sin(skew) * -t.scaleY * rnd) >> 0) / rnd,
+                                       d = ((Math.cos(skew) * t.scaleY * rnd) >> 0) / rnd,
+                                       style = this.t.style,
+                                       cs = this.t.currentStyle,
+                                       filters, val;
+                               if (!cs) {
+                                       return;
+                               }
+                               val = b; //just for swapping the variables an inverting them (reused "val" to avoid creating another variable in memory). IE's filter matrix uses a non-standard matrix configuration (angle goes the opposite way, and b and c are reversed and inverted)
+                               b = -c;
+                               c = -val;
+                               filters = cs.filter;
+                               style.filter = ""; //remove filters so that we can accurately measure offsetWidth/offsetHeight
+                               var w = this.t.offsetWidth,
+                                       h = this.t.offsetHeight,
+                                       clip = (cs.position !== "absolute"),
+                                       m = "progid:DXImageTransform.Microsoft.Matrix(M11=" + a + ", M12=" + b + ", M21=" + c + ", M22=" + d,
+                                       ox = t.x,
+                                       oy = t.y,
+                                       dx, dy;
+
+                               //if transformOrigin is being used, adjust the offset x and y
+                               if (t.ox != null) {
+                                       dx = ((t.oxp) ? w * t.ox * 0.01 : t.ox) - w / 2;
+                                       dy = ((t.oyp) ? h * t.oy * 0.01 : t.oy) - h / 2;
+                                       ox += dx - (dx * a + dy * b);
+                                       oy += dy - (dx * c + dy * d);
+                               }
+
+                               if (!clip) {
+                                       var mult = (_ieVers < 8) ? 1 : -1, //in Internet Explorer 7 and before, the box model is broken, causing the browser to treat the width/height of the actual rotated filtered image as the width/height of the box itself, but Microsoft corrected that in IE8. We must use a negative offset in IE8 on the right/bottom
+                                               marg, prop, dif;
+                                       dx = t.ieOffsetX || 0;
+                                       dy = t.ieOffsetY || 0;
+                                       t.ieOffsetX = Math.round((w - ((a < 0 ? -a : a) * w + (b < 0 ? -b : b) * h)) / 2 + ox);
+                                       t.ieOffsetY = Math.round((h - ((d < 0 ? -d : d) * h + (c < 0 ? -c : c) * w)) / 2 + oy);
+                                       for (i = 0; i < 4; i++) {
+                                               prop = _margins[i];
+                                               marg = cs[prop];
+                                               //we need to get the current margin in case it is being tweened separately (we want to respect that tween's changes)
+                                               val = (marg.indexOf("px") !== -1) ? parseFloat(marg) : _convertToPixels(this.t, prop, parseFloat(marg), marg.replace(_suffixExp, "")) || 0;
+                                               if (val !== t[prop]) {
+                                                       dif = (i < 2) ? -t.ieOffsetX : -t.ieOffsetY; //if another tween is controlling a margin, we cannot only apply the difference in the ieOffsets, so we essentially zero-out the dx and dy here in that case. We record the margin(s) later so that we can keep comparing them, making this code very flexible.
+                                               } else {
+                                                       dif = (i < 2) ? dx - t.ieOffsetX : dy - t.ieOffsetY;
+                                               }
+                                               style[prop] = (t[prop] = Math.round( val - dif * ((i === 0 || i === 2) ? 1 : mult) )) + "px";
+                                       }
+                                       m += ", sizingMethod='auto expand')";
+                               } else {
+                                       dx = (w / 2);
+                                       dy = (h / 2);
+                                       //translate to ensure that transformations occur around the correct origin (default is center).
+                                       m += ", Dx=" + (dx - (dx * a + dy * b) + ox) + ", Dy=" + (dy - (dx * c + dy * d) + oy) + ")";
+                               }
+                               if (filters.indexOf("DXImageTransform.Microsoft.Matrix(") !== -1) {
+                                       style.filter = filters.replace(_ieSetMatrixExp, m);
+                               } else {
+                                       style.filter = m + " " + filters; //we must always put the transform/matrix FIRST (before alpha(opacity=xx)) to avoid an IE bug that slices part of the object when rotation is applied with alpha.
+                               }
+
+                               //at the end or beginning of the tween, if the matrix is normal (1, 0, 0, 1) and opacity is 100 (or doesn't exist), remove the filter to improve browser performance.
+                               if (v === 0 || v === 1) if (a === 1) if (b === 0) if (c === 0) if (d === 1) if (!clip || m.indexOf("Dx=0, Dy=0") !== -1) if (!_opacityExp.test(filters) || parseFloat(RegExp.$1) === 100) if (filters.indexOf("gradient(") === -1) {
+                                       style.removeAttribute("filter");
+                               }
+                       },
+                       _set3DTransformRatio = function(v) {
+                               var t = this.data, //refers to the element's _gsTransform object
+                                       style = this.t.style,
+                                       perspective = t.perspective,
+                                       a11 = t.scaleX, a12 = 0, a13 = 0, a14 = 0,
+                                       a21 = 0, a22 = t.scaleY, a23 = 0, a24 = 0,
+                                       a31 = 0, a32 = 0, a33 = t.scaleZ, a34 = 0,
+                                       a41 = 0, a42 = 0, a43 = (perspective) ? -1 / perspective : 0,
+                                       angle = t.rotation,
+                                       zOrigin = t.zOrigin,
+                                       cma = ",",
+                                       rnd = 100000,
+                                       cos, sin, t1, t2, t3, t4, top, n, sfx;
+                               if (_isFirefox) { //Firefox has a bug that causes 3D elements to randomly disappear during animation unless a repaint is forced. One way to do this is change "top" by 0.05 which is imperceptible, so we go back and forth. Another way is to change the display to "none", read the clientTop, and then revert the display but that is much slower.
+                                       top = _getStyle(this.t, "top", null, false, "0");
+                                       n = parseFloat(top) || 0;
+                                       sfx = top.substr((n + "").length);
+                                       t._ffFix = !t._ffFix;
+                                       style.top = (t._ffFix ? n + 0.05 : n - 0.05) + ((sfx === "") ? "px" : sfx);
+                               }
+
+                               if (angle) {
+                                       cos = Math.cos(angle);
+                                       sin = Math.sin(angle);
+                                       t1 = a11*cos;
+                                       t2 = a22*sin;
+                                       a12 = a11*-sin;
+                                       a22 = a22*cos;
+                                       a11 = t1;
+                                       a21 = t2;
+                               }
+                               angle = t.rotationY;
+                               if (angle) {
+                                       cos = Math.cos(angle);
+                                       sin = Math.sin(angle);
+                                       t1 = a11*cos;
+                                       t2 = a21*cos;
+                                       t3 = a33*-sin;
+                                       t4 = a43*-sin;
+                                       a13 = a11*sin;
+                                       a23 = a21*sin;
+                                       a33 = a33*cos;
+                                       a43 *= cos;
+                                       a11 = t1;
+                                       a21 = t2;
+                                       a31 = t3;
+                                       a41 = t4;
+                               }
+                               angle = t.rotationX;
+                               if (angle) {
+                                       cos = Math.cos(angle);
+                                       sin = Math.sin(angle);
+                                       t1 = a12*cos+a13*sin;
+                                       t2 = a22*cos+a23*sin;
+                                       t3 = a32*cos+a33*sin;
+                                       t4 = a42*cos+a43*sin;
+                                       a13 = a12*-sin+a13*cos;
+                                       a23 = a22*-sin+a23*cos;
+                                       a33 = a32*-sin+a33*cos;
+                                       a43 = a42*-sin+a43*cos;
+                                       a12 = t1;
+                                       a22 = t2;
+                                       a32 = t3;
+                                       a42 = t4;
+                               }
+                               if (zOrigin) {
+                                       a34 -= zOrigin;
+                                       a14 = a13*a34;
+                                       a24 = a23*a34;
+                                       a34 = a33*a34+zOrigin;
+                               }
+                               a14 += t.x;
+                               a24 += t.y;
+                               a34 = (((a34 + t.z) * rnd) >> 0) / rnd;
+
+                               style[_transformProp] = "matrix3d(" + (((a11 * rnd) >> 0) / rnd) + cma + (((a21 * rnd) >> 0) / rnd) + cma + (((a31 * rnd) >> 0) / rnd) + cma + (((a41 * rnd) >> 0) / rnd) + cma + (((a12 * rnd) >> 0) / rnd) + cma + (((a22 * rnd) >> 0) / rnd) + cma + (((a32 * rnd) >> 0) / rnd) + cma + (((a42 * rnd) >> 0) / rnd) + cma + (((a13 * rnd) >> 0) / rnd) + cma + (((a23 * rnd) >> 0) / rnd) + cma + (((a33 * rnd) >> 0) / rnd) + cma + (((a43 * rnd) >> 0) / rnd) + cma + (((a14 * rnd) >> 0) / rnd) + cma + (((a24 * rnd) >> 0) / rnd) + cma + a34 + cma + (perspective ? (1 + (-a34 / perspective)) : 1) + ")";
+
+                               /* alternate version that is more concise but not as fast in most scenarios. We chose the more verbose matrix3d() technique for maximum performance.
+                               var t = this.data, //refers to the element's _gsTransform object
+                                       style = this.t.style,
+                                       s = "",
+                                       rnd = 10000,
+                                       zOrigin = (((t.zOrigin * rnd) >> 0) / rnd),
+                                       top, n, sfx;
+                               if (_isFirefox) { //Firefox has a bug that causes 3D elements to randomly disappear during animation unless a repaint is forced. One way to do this is change "top" by 0.05 which is imperceptible, so we go back and forth. Another way is to change the display to "none", read the clientTop, and then revert the display but that is much slower.
+                                       top = style.top + "";
+                                       n = parseFloat(top) || 0;
+                                       sfx = top.substr((n + "").length);
+                                       t._ffFix = !t._ffFix;
+                                       style.top = (t._ffFix ? n + 0.05 : n - 0.05) + ((sfx === "") ? "px" : sfx);
+                               }
+                               if (t.perspective) {
+                                       s = "perspective(" + t.perspective + ") ";
+                               }
+                               if (t.x || t.y || t.z) {
+                                       s += "translate3d(" + (((t.x * rnd) >> 0) / rnd)  + "px," + (((t.y * rnd) >> 0) / rnd)  + "px," + (((t.z * rnd) >> 0) / rnd)  + "px) ";
+                               }
+                               if (zOrigin) {
+                                       s += "translateZ(" + zOrigin + "px) ";
+                               }
+                               if (t.scaleX !== 1 || t.scaleY !== 1 || t.scaleZ !== 1) {
+                                       s += "scale3d(" + (((t.scaleX * rnd) >> 0) / rnd)  + "," + (((t.scaleY * rnd) >> 0) / rnd)  + "," + (((t.scaleZ * rnd) >> 0) / rnd)  + ") ";
+                               }
+                               if (t.rotation) {
+                                       s += "rotateZ(" + (((t.rotation * rnd) >> 0) / rnd)  + "rad) ";
+                               }
+                               if (t.rotationY) {
+                                       s += "rotateY(" + (((t.rotationY * rnd) >> 0) / rnd) + "rad) ";
+                               }
+                               if (t.rotationX) {
+                                       s += "rotateX(" + (((t.rotationX * rnd) >> 0) / rnd) + "rad) ";
+                               }
+                               if (zOrigin) {
+                                       s += "translateZ(" + -zOrigin + "px)";
+                               }
+                               style[_transformProp] = s;
+                               */
+
+                               //alternate way of applying the values (slightly slower but slightly more accurate, although I doubt anyone could ever tell a difference) (add a var min = 0.000001)
+                               //style[_transformProp] = "matrix3d(" + ((a11 < min && a11 > -min) ? 0 : a11) + cma + ((a21 < min && a21 > -min) ? 0 : a21) + cma + ((a31 < min && a31 > -min) ? 0 : a31) + cma + ((a41 < min && a41 > -min) ? 0 : a41) + cma   + ((a12 < min && a12 > -min) ? 0 : a12) + cma   + ((a22 < min && a22 > -min) ? 0 : a22) + cma   + ((a32 < min && a32 > -min) ? 0 : a32) + cma   + ((a42 < min && a42 > -min) ? 0 : a42) + cma   + ((a13 < min && a13 > -min) ? 0 : a13) + cma   + ((a23 < min && a23 > -min) ? 0 : a23) + cma   + ((a33 < min && a33 > -min) ? 0 : a33) + cma   + ((a43 < min && a43 > -min) ? 0 : a43) + cma   + ((a14 < min && a14 > -min) ? 0 : a14) + cma + ((a24 < min && a24 > -min) ? 0 : a24) + cma + a34 + cma + (perspective ? (1 + (-a34 / perspective)) : 1) + ")";
+                       },
+                       _set2DTransformRatio = function(v) {
+                               var t = this.data, //refers to the element's _gsTransform object
+                                       targ = this.t,
+                                       top, n, sfx, ang, skew, rnd, sx, sy;
+                               if (_isFirefox) { //Firefox has a bug that causes transformed elements to randomly disappear during (or after) animation unless a repaint is forced. One way to do this is change "top" by 0.05 which is imperceptible, so we alternate back and forth. Another way is to change the display to "none", read the clientTop, and then revert the display but that is much slower. The bug is present in at least Firefox 17 and 18
+                                       top = _getStyle(targ, "top", null, false, "0");
+                                       n = parseFloat(top) || 0;
+                                       sfx = top.substr((n + "").length);
+                                       t._ffFix = !t._ffFix;
+                                       targ.style.top = (t._ffFix ? n + 0.05 : n - 0.05) + ((sfx === "") ? "px" : sfx);
+                               }
+                               if (!t.rotation && !t.skewX) {
+                                       targ.style[_transformProp] = "matrix(" + t.scaleX + ",0,0," + t.scaleY + "," + t.x + "," + t.y + ")";
+                               } else {
+                                       ang = t.rotation;
+                                       skew = ang - t.skewX;
+                                       rnd = 100000;
+                                       sx = t.scaleX * rnd;
+                                       sy = t.scaleY * rnd;
+                                       //some browsers have a hard time with very small values like 2.4492935982947064e-16 (notice the "e-" towards the end) and would render the object slightly off. So we round to 5 decimal places.
+                                       targ.style[_transformProp] = "matrix(" + (((Math.cos(ang) * sx) >> 0) / rnd) + "," + (((Math.sin(ang) * sx) >> 0) / rnd) + "," + (((Math.sin(skew) * -sy) >> 0) / rnd) + "," + (((Math.cos(skew) * sy) >> 0) / rnd) + "," + t.x + "," + t.y + ")";
+                               }
+                       };
+
+               _registerComplexSpecialProp("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,transformPerspective", null, function(t, e, p, cssp, pt, plugin, vars) {
+                       if (cssp._transform) { return pt; } //only need to parse the transform once, and only if the browser supports it.
+                       var m1 = cssp._transform = _getTransform(t, _cs, true),
+                               style = t.style,
+                               min = 0.000001,
+                               i = _transformProps.length,
+                               v = vars,
+                               m2, rotation, skewY, copy, orig, has3D, hasChange;
+
+                       if (typeof(v.transform) === "string" && _transformProp) { //for values like transform:"rotate(60deg) scale(0.5, 0.8)"
+                               copy = style[_transformProp];
+                               style[_transformProp] = v.transform;
+                               m2 = _getTransform(t, null, false);
+                               style[_transformProp] = copy;
+                       } else if (typeof(v) === "object") { //for values like scaleX, scaleY, rotation, x, y, skewX, and skewY or transform:{...} (object)
+                               rotation = (v.rotation != null) ? v.rotation : (v.rotationZ != null) ? v.rotationZ : m1.rotation * _RAD2DEG;
+                               m2 = {scaleX:_parseVal((v.scaleX != null) ? v.scaleX : v.scale, m1.scaleX),
+                                       scaleY:_parseVal((v.scaleY != null) ? v.scaleY : v.scale, m1.scaleY),
+                                       scaleZ:_parseVal((v.scaleZ != null) ? v.scaleZ : v.scale, m1.scaleZ),
+                                       x:_parseVal(v.x, m1.x),
+                                       y:_parseVal(v.y, m1.y),
+                                       z:_parseVal(v.z, m1.z),
+                                       perspective:_parseVal(v.transformPerspective, m1.perspective)};
+
+                               if (v.shortRotation != null || v.shortRotationZ != null) {
+                                       m2.rotation = _parseShortRotation(v.shortRotation || v.shortRotationZ || 0, m1.rotation);
+                               } else {
+                                       m2.rotation = (typeof(rotation) === "number") ? rotation * _DEG2RAD : _parseAngle(rotation, m1.rotation);
+                               }
+                               if (_supports3D) {
+                                       m2.rotationX = (v.shortRotationX != null) ? _parseShortRotation(v.shortRotationX, m1.rotationX) : (typeof(v.rotationX) === "number") ? v.rotationX * _DEG2RAD : _parseAngle(v.rotationX, m1.rotationX);
+                                       m2.rotationY = (v.shortRotationY != null) ? _parseShortRotation(v.shortRotationY, m1.rotationY) : (typeof(v.rotationY) === "number") ? v.rotationY * _DEG2RAD : _parseAngle(v.rotationY, m1.rotationY);
+                                       if (m2.rotationX < min) if (m2.rotationX > -min) {
+                                               m2.rotationX = 0;
+                                       }
+                                       if (m2.rotationY < min) if (m2.rotationY > -min) {
+                                               m2.rotationY = 0;
+                                       }
+                               }
+                               m2.skewX = (v.skewX == null) ? m1.skewX : (typeof(v.skewX) === "number") ? v.skewX * _DEG2RAD : _parseAngle(v.skewX, m1.skewX);
+
+                               //note: for performance reasons, we combine all skewing into the skewX and rotation values, ignoring skewY but we must still record it so that we can discern how much of the overall skew is attributed to skewX vs. skewY. Otherwise, if the skewY would always act relative (tween skewY to 10deg, for example, multiple times and if we always combine things into skewX, we can't remember that skewY was 10 from last time). Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of -10 degrees.
+                               m2.skewY = (v.skewY == null) ? m1.skewY : (typeof(v.skewY) === "number") ? v.skewY * _DEG2RAD : _parseAngle(v.skewY, m1.skewY);
+                               if ((skewY = m2.skewY - m1.skewY)) {
+                                       m2.skewX += skewY;
+                                       m2.rotation += skewY;
+                               }
+                               //don't allow rotation/skew values to be a SUPER small decimal because when they're translated back to strings for setting the css property, the browser reports them in a funky way, like 1-e7. Of course we could use toFixed() to resolve that issue but that hurts performance quite a bit with all those function calls on every frame, plus it is virtually impossible to discern values that small visually (nobody will notice changing a rotation of 0.0000001 to 0, so the performance improvement is well worth it).
+                               if (m2.skewY < min) if (m2.skewY > -min) {
+                                       m2.skewY = 0;
+                               }
+                               if (m2.skewX < min) if (m2.skewX > -min) {
+                                       m2.skewX = 0;
+                               }
+                               if (m2.rotation < min) if (m2.rotation > -min) {
+                                       m2.rotation = 0;
+                               }
+                       }
+
+                       has3D = (m1.z || m1.rotationX || m1.rotationY || m2.z || m2.rotationX || m2.rotationY || m2.perspective);
+                       if (!has3D && m2.scale != null) {
+                               m2.scaleZ = 1; //no need to tween scaleZ.
+                       }
+
+                       while (--i > -1) {
+                               p = _transformProps[i];
+                               orig = m2[p] - m1[p];
+                               if (orig > min || orig < -min || _forcePT[p] != null) {
+                                       hasChange = true;
+                                       pt = new CSSPropTween(m1, p, m1[p], orig, pt);
+                                       pt.xs0 = 0; //ensures the value stays numeric in setRatio()
+                                       pt.plugin = plugin;
+                                       cssp._overwriteProps.push(pt.n);
+                               }
+                       }
+
+                       orig = v.transformOrigin;
+                       if (orig || (_supports3D && has3D && m1.zOrigin)) { //if anything 3D is happening and there's a transformOrigin with a z component that's non-zero, we must ensure that the transformOrigin's z-component is set to 0 so that we can manually do those calculations to get around Safari bugs. Even if the user didn't specifically define a "transformOrigin" in this particular tween (maybe they did it via css directly).
+                               if (_transformProp) {
+                                       hasChange = true;
+                                       orig = (orig || _getStyle(t, p, _cs, false, "50% 50%")) + ""; //cast as string to avoid errors
+                                       p = _transformOriginProp;
+                                       pt = new CSSPropTween(style, p, 0, 0, pt, -1, "css_transformOrigin");
+                                       pt.b = style[p];
+                                       pt.plugin = plugin;
+                                       if (_supports3D) {
+                                               copy = m1.zOrigin;
+                                               orig = orig.split(" ");
+                                               m1.zOrigin = ((orig.length > 2) ? parseFloat(orig[2]) : copy) || 0; //Safari doesn't handle the z part of transformOrigin correctly, so we'll manually handle it in the _set3DTransformRatio() method.
+                                               pt.xs0 = pt.e = style[p] = orig[0] + " " + (orig[1] || "50%") + " 0px"; //we must define a z value of 0px specifically otherwise iOS 5 Safari will stick with the old one (if one was defined)!
+                                               pt = new CSSPropTween(m1, "zOrigin", 0, 0, pt, -1, pt.n); //we must create a CSSPropTween for the _gsTransform.zOrigin so that it gets reset properly at the beginning if the tween runs backward (as opposed to just setting m1.zOrigin here)
+                                               pt.b = copy;
+                                               pt.xs0 = pt.e = m1.zOrigin;
+                                       } else {
+                                               pt.xs0 = pt.e = style[p] = orig;
+                                       }
+
+                               //for older versions of IE (6-8), we need to manually calculate things inside the setRatio() function. We record origin x and y (ox and oy) and whether or not the values are percentages (oxp and oyp).
+                               } else {
+                                       _parsePosition(orig + "", m1);
+                               }
+                       }
+
+                       if (hasChange) {
+                               cssp._transformType = (has3D || this._transformType === 3) ? 3 : 2; //quicker than calling cssp._enableTransforms();
+                       }
+                       return pt;
+               }, true);
+
+               /* [unused] multiplies 4x4 matricies
+               function multiply3D(a, b) {
+                       var c = [],
+                               a11 = a[0], a21 = a[1], a31 = a[2], a41 = a[3],
+                               a12 = a[4], a22 = a[5], a32 = a[6], a42 = a[7],
+                               a13 = a[8], a23 = a[9], a33 = a[10], a43 = a[11],
+                               a14 = a[12], a24 = a[13], a34 = a[14], a44 = a[15],
+                               b11 = b[0], b21 = b[1], b31 = b[2], b41 = b[3],
+                               b12 = b[4], b22 = b[5], b32 = b[6], b42 = b[7],
+                               b13 = b[8], b23 = b[9], b33 = b[10], b43 = b[11],
+                               b14 = b[12], b24 = b[13], b34 = b[14], b44 = b[15];
+                       c[0] = a11*b11+a12*b21+a13*b31+a14*b41; //a11
+                       c[1] = a21*b11+a22*b21+a23*b31+a24*b41; //a21
+                       c[2] = a31*b11+a32*b21+a33*b31+a34*b41; //a31
+                       c[3] = a41*b11+a42*b21+a43*b31+a44*b41; //a41
+                       c[4] = a11*b12+a12*b22+a13*b32+a14*b42; //a12
+                       c[5] = a21*b12+a22*b22+a23*b32+a24*b42; //a22
+                       c[6] = a31*b12+a32*b22+a33*b32+a34*b42; //a32
+                       c[7] = a41*b12+a42*b22+a43*b32+a44*b42; //a42
+                       c[8] = a11*b13+a12*b23+a13*b33+a14*b43; //a13
+                       c[9] = a21*b13+a22*b23+a23*b33+a24*b43; //a23
+                       c[10] = a31*b13+a32*b23+a33*b33+a34*b43; //a33
+                       c[11] = a41*b13+a42*b23+a43*b33+a44*b43; //a43
+                       c[12] = a11*b14+a12*b24+a13*b34+a14*b44; //a14
+                       c[13] = a21*b14+a22*b24+a23*b34+a24*b44; //a24
+                       c[14] = a31*b14+a32*b24+a33*b34+a34*b44; //a34
+                       c[15] = a41*b14+a42*b24+a43*b34+a44*b44; //a44
+                       return c;
+               }
+               */
+
+
+
+               _registerComplexSpecialProp("boxShadow", "0px 0px 0px 0px #999", null, true, true);
+               _registerComplexSpecialProp("borderRadius", "0px", function(t, e, p, cssp, pt, plugin) {
+                       e = this.format(e);
+                       var props = ["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],
+                               style = t.style,
+                               ea1, i, es2, bs2, bs, es, bn, en, w, h, esfx, bsfx, rel, hn, vn, em;
+                       w = parseFloat(t.offsetWidth);
+                       h = parseFloat(t.offsetHeight);
+                       ea1 = e.split(" ");
+                       for (i = 0; i < props.length; i++) { //if we're dealing with percentages, we must convert things separately for the horizontal and vertical axis!
+                               if (this.p.indexOf("border")) { //older browsers used a prefix
+                                       props[i] = _checkPropPrefix(props[i]);
+                               }
+                               bs = bs2 = _getStyle(t, props[i], _cs, false, "0px");
+                               if (bs.indexOf(" ") !== -1) {
+                                       bs2 = bs.split(" ");
+                                       bs = bs2[0];
+                                       bs2 = bs2[1];
+                               }
+                               es = es2 = ea1[i];
+                               bn = parseFloat(bs);
+                               bsfx = bs.substr((bn + "").length);
+                               rel = (es.charAt(1) === "=");
+                               if (rel) {
+                                       en = parseInt(es.charAt(0)+"1", 10);
+                                       es = es.substr(2);
+                                       en *= parseFloat(es);
+                                       esfx = es.substr((en + "").length - (en < 0 ? 1 : 0)) || "";
+                               } else {
+                                       en = parseFloat(es);
+                                       esfx = es.substr((en + "").length);
+                               }
+                               if (esfx === "") {
+                                       esfx = _suffixMap[p] || bsfx;
+                               }
+                               if (esfx !== bsfx) {
+                                       hn = _convertToPixels(t, "borderLeft", bn, bsfx); //horizontal number (we use a bogus "borderLeft" property just because the _convertToPixels() method searches for the keywords "Left", "Right", "Top", and "Bottom" to determine of it's a horizontal or vertical property, and we need "border" in the name so that it knows it should measure relative to the element itself, not its parent.
+                                       vn = _convertToPixels(t, "borderTop", bn, bsfx); //vertical number
+                                       if (esfx === "%") {
+                                               bs = (hn / w * 100) + "%";
+                                               bs2 = (vn / h * 100) + "%";
+                                       } else if (esfx === "em") {
+                                               em = _convertToPixels(t, "borderLeft", 1, "em");
+                                               bs = (hn / em) + "em";
+                                               bs2 = (vn / em) + "em";
+                                       } else {
+                                               bs = hn + "px";
+                                               bs2 = vn + "px";
+                                       }
+                                       if (rel) {
+                                               es = (parseFloat(bs) + en) + esfx;
+                                               es2 = (parseFloat(bs2) + en) + esfx;
+                                       }
+                               }
+                               pt = _parseComplex(style, props[i], bs + " " + bs2, es + " " + es2, false, "0px", pt);
+                       }
+                       return pt;
+               }, true, false, _getFormatter("0px 0px 0px 0px", false, true));
+               _registerComplexSpecialProp("backgroundPosition", "0 0", function(t, e, p, cssp, pt, plugin) {
+                       var bp = "background-position",
+                               cs = (_cs || _getComputedStyle(t, null)),
+                               bs = this.format( ((cs) ? _ieVers ? cs.getPropertyValue(bp + "-x") + " " + cs.getPropertyValue(bp + "-y") : cs.getPropertyValue(bp) : t.currentStyle.backgroundPositionX + " " + t.currentStyle.backgroundPositionY) || "0 0"), //Internet Explorer doesn't report background-position correctly - we must query background-position-x and background-position-y and combine them (even in IE10). Before IE9, we must do the same with the currentStyle object and use camelCase
+                               es = this.format(e),
+                               ba, ea, i, pct, overlap;
+                       if ((bs.indexOf("%") !== -1) !== (es.indexOf("%") !== -1)) {
+                               ba = bs.split(" ");
+                               ea = es.split(" ");
+                               _tempImg.setAttribute("src", _getStyle(t, "backgroundImage").replace(_urlExp, "")); //set the temp <img>'s src to the background-image so that we can measure its width/height
+                               i = 2;
+                               while (--i > -1) {
+                                       bs = ba[i];
+                                       pct = (bs.indexOf("%") !== -1);
+                                       if (pct !== (ea[i].indexOf("%") !== -1)) {
+                                               overlap = (i === 0) ? t.offsetWidth - _tempImg.width : t.offsetHeight - _tempImg.height;
+                                               ba[i] = pct ? (parseFloat(bs) / 100 * overlap) + "px" : (parseFloat(bs) / overlap * 100) + "%";
+                                       }
+                               }
+                               bs = ba.join(" ");
+                       }
+                       return this.parseComplex(t.style, bs, es, pt, plugin);
+               }, false, false, _parsePosition); //note: backgroundPosition doesn't support interpreting between px and % (start and end values should use the same units) because doing so would require determining the size of the image itself and that can't be done quickly.
+               _registerComplexSpecialProp("backgroundSize", "0 0", null, false, false, _parsePosition);
+               _registerComplexSpecialProp("perspective", "0px", null, true);
+               _registerComplexSpecialProp("perspectiveOrigin", "50% 50%", null, true);
+               _registerComplexSpecialProp("transformStyle", "preserve-3d", null, true);
+               _registerComplexSpecialProp("backfaceVisibility", "visible", null, true);
+               _registerComplexSpecialProp("margin", null, _getEdgeParser("marginTop,marginRight,marginBottom,marginLeft"));
+               _registerComplexSpecialProp("padding", null, _getEdgeParser("paddingTop,paddingRight,paddingBottom,paddingLeft"));
+               _registerComplexSpecialProp("clip", "rect(0px,0px,0px,0px)");
+               _registerComplexSpecialProp("textShadow", "0px 0px 0px #999", null, false, true);
+               _registerComplexSpecialProp("autoRound", null, function(t, e, p, cssp, pt) {return pt;}); //just so that we can ignore "autoRound"
+               _registerComplexSpecialProp("border", "0px solid #000", function(t, e, p, cssp, pt, plugin) {
+                               return this.parseComplex(t.style, this.format(_getStyle(t, "borderTopWidth", _cs, false, "0px") + " " + _getStyle(t, "borderTopStyle", _cs, false, "solid") + " " + _getStyle(t, "borderTopColor", _cs, false, "#000")), this.format(e), pt, plugin);
+                       }, false, true, function(v) {
+                               var a = v.split(" ");
+                               return a[0] + " " + (a[1] || "solid") + " " + (v.match(_colorExp) || ["#000"])[0];
+                       });
+
+
+               //opacity-related
+               var _setIEOpacityRatio = function(v) {
+                               var t = this.t, //refers to the element's style property
+                                       filters = t.filter,
+                                       val = (this.s + this.c * v) >> 0,
+                                       skip;
+                               if (val === 100) { //for older versions of IE that need to use a filter to apply opacity, we should remove the filter if opacity hits 1 in order to improve performance, but make sure there isn't a transform (matrix) or gradient in the filters.
+                                       if (filters.indexOf("atrix(") === -1 && filters.indexOf("radient(") === -1) {
+                                               t.removeAttribute("filter");
+                                               skip = (!_getStyle(this.data, "filter")); //if a class is applied that has an alpha filter, it will take effect (we don't want that), so re-apply our alpha filter in that case. We must first remove it and then check.
+                                       } else {
+                                               t.filter = filters.replace(_alphaFilterExp, "");
+                                               skip = true;
+                                       }
+                               }
+                               if (!skip) {
+                                       if (this.xn1) {
+                                               t.filter = filters = filters || "alpha(opacity=100)"; //works around bug in IE7/8 that prevents changes to "visibility" from being applied properly if the filter is changed to a different alpha on the same frame.
+                                       }
+                                       if (filters.indexOf("opacity") === -1) { //only used if browser doesn't support the standard opacity style property (IE 7 and 8)
+                                               t.filter += " alpha(opacity=" + val + ")"; //we round the value because otherwise, bugs in IE7/8 can prevent "visibility" changes from being applied properly.
+                                       } else {
+                                               t.filter = filters.replace(_opacityExp, "opacity=" + val);
+                                       }
+                               }
+                       };
+               _registerComplexSpecialProp("opacity,alpha,autoAlpha", "1", function(t, e, p, cssp, pt, plugin) {
+                       var b = parseFloat(_getStyle(t, "opacity", _cs, false, "1")),
+                               style = t.style,
+                               vb;
+                       e = parseFloat(e);
+                       if (p === "autoAlpha") {
+                               vb = _getStyle(t, "visibility", _cs);
+                               if (b === 1 && vb === "hidden" && e !== 0) { //if visibility is initially set to "hidden", we should interpret that as intent to make opacity 0 (a convenience)
+                                       b = 0;
+                               }
+                               pt = new CSSPropTween(style, "visibility", 0, 0, pt, -1, null, false, 0, ((b !== 0) ? "visible" : "hidden"), ((e === 0) ? "hidden" : "visible"));
+                               pt.xs0 = "visible";
+                               cssp._overwriteProps.push(pt.n);
+                       }
+                       if (_supportsOpacity) {
+                               pt = new CSSPropTween(style, "opacity", b, e - b, pt);
+                       } else {
+                               pt = new CSSPropTween(style, "opacity", b * 100, (e - b) * 100, pt);
+                               pt.xn1 = (p === "autoAlpha") ? 1 : 0; //we need to record whether or not this is an autoAlpha so that in the setRatio(), we know to duplicate the setting of the alpha in order to work around a bug in IE7 and IE8 that prevents changes to "visibility" from taking effect if the filter is changed to a different alpha(opacity) at the same time. Setting it to the SAME value first, then the new value works around the IE7/8 bug.
+                               style.zoom = 1; //helps correct an IE issue.
+                               pt.type = 2;
+                               pt.b = "alpha(opacity=" + pt.s + ")";
+                               pt.e = "alpha(opacity=" + (pt.s + pt.c) + ")";
+                               pt.data = t;
+                               pt.plugin = plugin;
+                               pt.setRatio = _setIEOpacityRatio;
+                       }
+                       return pt;
+               });
+
+
+               var _setClassNameRatio = function(v) {
+                       if (v === 1 || v === 0) {
+                               this.t.className = (v === 1) ? this.e : this.b;
+                               var mpt = this.data, //first MiniPropTween
+                                       s = this.t.style,
+                                       removeProp = s.removeProperty ? "removeProperty" : "removeAttribute"; //note: old versions of IE use "removeAttribute()" instead of "removeProperty()"
+                               while (mpt) {
+                                       if (!mpt.v) {
+                                               s[removeProp](mpt.p.replace(_capsExp, "-$1").toLowerCase());
+                                       } else {
+                                               s[mpt.p] = mpt.v;
+                                       }
+                                       mpt = mpt._next;
+                               }
+                       } else if (this.t.className !== this.b) {
+                               this.t.className = this.b;
+                       }
+               };
+               _registerComplexSpecialProp("className", null, function(t, e, p, cssp, pt, plugin, vars) {
+                       var b = t.className,
+                               cssText = t.style.cssText,
+                               difData, bs;
+                       pt = cssp._classNamePT = new CSSPropTween(t, p, 0, 0, pt, 2);
+                       pt.setRatio = _setClassNameRatio;
+                       pt.b = b;
+                       pt.e = (e.charAt(1) !== "=") ? e : (e.charAt(0) === "+") ? b + " " + e.substr(2) : b.split(e.substr(2)).join("");
+                       if (cssp._tween._duration) { //if it's a zero-duration tween, there's no need to tween anything or parse the data. In fact, if we switch classes temporarily (which we must do for proper parsing) and the class has a transition applied, it could cause a quick flash to the end state and back again initially in some browsers.
+                               bs = _getAllStyles(t, _cs, true);
+                               t.className = pt.e;
+                               difData = _cssDif(t, bs, _getAllStyles(t), vars);
+                               t.className = b;
+                               pt.data = difData.firstMPT;
+                               t.style.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity). Note: see _getAllStyles() for the code that reverts things and makes the className CSSPropTween run its setRatio(0). Also, we record the className CSSPropTween instance in the element's _gsOverwrittenClassNamePT property (a linked list).
+                               pt = pt.xfirst = cssp.parse(t, difData.difs, pt, plugin); //we record the CSSPropTween as the xfirst so that we can handle overwriting propertly (if "className" gets overwritten, we must kill all the properties associated with the className part of the tween, so we can loop through from xfirst to the pt itself)
+                       }
+                       return pt;
+               });
+
+               p = "bezier,throwProps,physicsProps,physics2D".split(",");
+               i = p.length;
+               while (i--) {
+                       _registerPluginProp(p[i]);
+               }
+
+
+
+
+
+
+
+
+               p = CSSPlugin.prototype;
+               p._firstPT = null;
+               
+               //gets called when the tween renders for the first time. This kicks everything off, recording start/end values, etc. 
+               p._onInitTween = function(target, vars, tween) {
+                       if (!target.nodeType) { //css is only for dom elements
+                               return false;
+                       }
+                       this._target = target;
+                       this._tween = tween;
+                       this._vars = vars;
+                       _autoRound = vars.autoRound;
+                       _hasPriority = false;
+                       _suffixMap = vars.suffixMap || CSSPlugin.suffixMap;
+                       _cs = _getComputedStyle(target, "");
+                       _overwriteProps = this._overwriteProps;
+                       var style = target.style,
+                               v, pt, pt2, first, last, next, zIndex, tpt, threeD;
+                       
+                       if (_reqSafariFix) if (style.zIndex === "") {
+                               v = _getStyle(target, "zIndex", _cs);
+                               if (v === "auto" || v === "") {
+                                       //corrects a bug in [non-Android] Safari that prevents it from repainting elements in their new positions if they don't have a zIndex set. We also can't just apply this inside _parseTransform() because anything that's moved in any way (like using "left" or "top" instead of transforms like "x" and "y") can be affected, so it is best to ensure that anything that's tweening has a z-index. Setting "WebkitPerspective" to a non-zero value worked too except that on iOS Safari things would flicker randomly. Plus zIndex is less memory-intensive.
+                                       style.zIndex = 0;
+                               }
+                       }
+                       
+                       if (typeof(vars) === "string") {
+                               first = style.cssText;
+                               v = _getAllStyles(target, _cs);
+                               style.cssText = first + ";" + vars;
+                               v = _cssDif(target, v, _getAllStyles(target)).difs;
+                               if (!_supportsOpacity && _opacityValExp.test(vars)) {
+                                       v.opacity = parseFloat( RegExp.$1 );
+                               }
+                               vars = v;
+                               style.cssText = first;
+                       }
+                       this._firstPT = pt = this.parse(target, vars, null);
+
+                       if (this._transformType) {
+                               threeD = (this._transformType === 3);
+                               if (!_transformProp) {
+                                       style.zoom = 1; //helps correct an IE issue.
+                               } else if (_isSafari) {
+                                       _reqSafariFix = true;
+                                       //if zIndex isn't set, iOS Safari doesn't repaint things correctly sometimes (seemingly at random).
+                                       if (style.zIndex === "") {
+                                               zIndex = _getStyle(target, "zIndex", _cs);
+                                               if (zIndex === "auto" || zIndex === "") {
+                                                       style.zIndex = 0;
+                                               }
+                                       }
+                                       //Setting WebkitBackfaceVisibility corrects 3 bugs:
+                                       // 1) [non-Android] Safari skips rendering changes to "top" and "left" that are made on the same frame/render as a transform update.
+                                       // 2) iOS Safari sometimes neglects to repaint elements in their new positions. Setting "WebkitPerspective" to a non-zero value worked too except that on iOS Safari things would flicker randomly.
+                                       // 3) Safari sometimes displayed odd artifacts when tweening the transform (or WebkitTransform) property, like ghosts of the edges of the element remained. Definitely a browser bug.
+                                       //Note: we allow the user to override the auto-setting by defining WebkitBackfaceVisibility in the vars of the tween.
+                                       if (_isSafariLT6) {
+                                               style.WebkitBackfaceVisibility = this._vars.WebkitBackfaceVisibility || (threeD ? "visible" : "hidden");
+                                       }
+                               }
+                               pt2 = pt;
+                               while (pt2 && pt2._next) {
+                                       pt2 = pt2._next;
+                               }
+                               tpt = new CSSPropTween(target, "transform", 0, 0, null, 2);
+                               this._linkCSSP(tpt, null, pt2);
+                               tpt.setRatio = (threeD && _supports3D) ? _set3DTransformRatio : _transformProp ? _set2DTransformRatio : _setIETransformRatio;
+                               tpt.data = this._transform || _getTransform(target, _cs, true);
+                               _overwriteProps.pop(); //we don't want to force the overwrite of all "transform" tweens of the target - we only care about individual transform properties like scaleX, rotation, etc. The CSSPropTween constructor automatically adds the property to _overwriteProps which is why we need to pop() here.
+                       }
+
+                       if (_hasPriority) {
+                               //reorders the linked list in order of pr (priority)
+                               while (pt) {
+                                       next = pt._next;
+                                       pt2 = first;
+                                       while (pt2 && pt2.pr > pt.pr) {
+                                               pt2 = pt2._next;
+                                       }
+                                       if ((pt._prev = pt2 ? pt2._prev : last)) {
+                                               pt._prev._next = pt;
+                                       } else {
+                                               first = pt;
+                                       }
+                                       if ((pt._next = pt2)) {
+                                               pt2._prev = pt;
+                                       } else {
+                                               last = pt;
+                                       }
+                                       pt = next;
+                               }
+                               this._firstPT = first;
+                       }
+                       return true;
+               };
+
+
+               p.parse = function(target, vars, pt, plugin) {
+                       var style = target.style,
+                               p, sp, bn, en, bs, es, bsfx, esfx, isStr, rel;
+                       for (p in vars) {
+                               es = vars[p]; //ending value string
+                               sp = _specialProps[p]; //SpecialProp lookup.
+                               if (sp) {
+                                       pt = sp.parse(target, es, p, this, pt, plugin, vars);
+
+                               } else {
+                                       bs = _getStyle(target, p, _cs) + "";
+                                       isStr = (typeof(es) === "string");
+                                       if (p === "color" || p === "fill" || p === "stroke" || p.indexOf("Color") !== -1 || (isStr && !es.indexOf("rgb"))) { //Opera uses background: to define color sometimes in addition to backgroundColor:
+                                               if (!isStr) {
+                                                       es = _parseColor(es);
+                                                       es = ((es.length > 3) ? "rgba(" : "rgb(") + es.join(",") + ")";
+                                               }
+                                               pt = _parseComplex(style, p, bs, es, true, "transparent", pt, 0, plugin);
+
+
+                                       } else if (isStr && (es.indexOf(" ") !== -1 || es.indexOf(",") !== -1)) {
+                                               pt = _parseComplex(style, p, bs, es, true, null, pt, 0, plugin);
+
+                                       } else {
+                                               bn = parseFloat(bs);
+                                               bsfx = (bn || bn === 0) ? bs.substr((bn + "").length) : ""; //remember, bs could be non-numeric like "normal" for fontWeight, so we should default to a blank suffix in that case.
+
+                                               if (bs === "" || bs === "auto") {
+                                                       if (p === "width" || p === "height") {
+                                                               bn = _getDimension(target, p, _cs);
+                                                               bsfx = "px";
+                                                       } else {
+                                                               bn = (p !== "opacity") ? 0 : 1;
+                                                               bsfx = "";
+                                                       }
+                                               }
+
+                                               rel = (isStr && es.charAt(1) === "=");
+                                               if (rel) {
+                                                       en = parseInt(es.charAt(0)+"1", 10);
+                                                       es = es.substr(2);
+                                                       en *= parseFloat(es);
+                                                       esfx = es.substr((en + "").length - (en < 0 ? 1 : 0)) || "";
+                                               } else {
+                                                       en = parseFloat(es);
+                                                       esfx = isStr ? es.substr((en + "").length) || "" : "";
+                                               }
+
+                                               if (esfx === "") {
+                                                       esfx = _suffixMap[p] || bsfx; //populate the end suffix, prioritizing the map, then if none is found, use the beginning suffix.
+                                               }
+
+                                               es = (en || en === 0) ? (rel ? en + bn : en) + esfx : vars[p]; //ensures that any += or -= prefixes are taken care of. Record the end value before normalizing the suffix because we always want to end the tween on exactly what they intended even if it doesn't match the beginning value's suffix.
+
+                                               //if the beginning/ending suffixes don't match, normalize them...
+                                               if (bsfx !== esfx) if (esfx !== "") if (en || en === 0) if (bn || bn === 0) {
+                                                       bn = _convertToPixels(target, p, bn, bsfx);
+                                                       if (esfx === "%") {
+                                                               bn /= _convertToPixels(target, p, 100, "%") / 100;
+                                                               if (bn > 100) { //extremely rare
+                                                                       bn = 100;
+                                                               }
+
+                                                       } else if (esfx === "em") {
+                                                               bn /= _convertToPixels(target, p, 1, "em");
+
+                                                       //otherwise convert to pixels.
+                                                       } else {
+                                                               en = _convertToPixels(target, p, en, esfx);
+                                                               esfx = "px"; //we don't use bsfx after this, so we don't need to set it to px too.
+                                                       }
+                                                       if (rel) if (en || en === 0) {
+                                                               es = (en + bn) + esfx; //the changes we made affect relative calculations, so adjust the end value here.
+                                                       }
+                                               }
+
+                                               if (rel) {
+                                                       en += bn;
+                                               }
+
+                                               if ((bn || bn === 0) && (en || en === 0)) { //faster than isNaN(). Also, previously we required en !== bn but that doesn't really gain much performance and it prevents _parseToProxy() from working properly if beginning and ending values match but need to get tweened by an external plugin anyway. For example, a bezier tween where the target starts at left:0 and has these points: [{left:50},{left:0}] wouldn't work properly because when parsing the last point, it'd match the first (current) one and a non-tweening CSSPropTween would be recorded when we actually need a normal tween (type:0) so that things get updated during the tween properly.
+                                                       pt = new CSSPropTween(style, p, bn, en - bn, pt, 0, "css_" + p, (_autoRound !== false && (esfx === "px" || p === "zIndex")), 0, bs, es);
+                                                       pt.xs0 = esfx;
+                                                       //DEBUG: _log("tween "+p+" from "+pt.b+" to "+pt.e+" with suffix: "+pt.xs0)
+                                               } else if (!es && (es + "" === "NaN" || es == null)) {
+                                                       _log("invalid " + p + " tween value. ");
+                                               } else {
+                                                       pt = new CSSPropTween(style, p, en || bn || 0, 0, pt, -1, "css_" + p, false, 0, bs, es);
+                                                       pt.xs0 = (p === "display" && es === "none") ? bs : es; //intermediate value is typically the same as the end value except for "display"
+                                                       //DEBUG: _log("non-tweening value "+p+": "+pt.xs0);
+                                               }
+                                       }
+                               }
+                               if (plugin) if (pt && !pt.plugin) {
+                                       pt.plugin = plugin;
+                               }
+                       }
+                       return pt;
+               };
+               
+               
+               //gets called every time the tween updates, passing the new ratio (typically a value between 0 and 1, but not always (for example, if an Elastic.easeOut is used, the value can jump above 1 mid-tween). It will always start and 0 and end at 1.
+               p.setRatio = function(v) {
+                       var pt = this._firstPT,
+                               min = 0.000001,
+                               val, str, i;
+
+                       //at the end of the tween, we set the values to exactly what we received in order to make sure non-tweening values (like "position" or "float" or whatever) are set and so that if the beginning/ending suffixes (units) didn't match and we normalized to px, the value that the user passed in is used here. We check to see if the tween is at its beginning in case it's a from() tween in which case the ratio will actually go from 1 to 0 over the course of the tween (backwards).
+                       if (v === 1 && (this._tween._time === this._tween._duration || this._tween._time === 0)) {
+                               while (pt) {
+                                       if (pt.type !== 2) {
+                                               pt.t[pt.p] = pt.e;
+                                       } else {
+                                               pt.setRatio(v);
+                                       }
+                                       pt = pt._next;
+                               }
+
+                       } else if (v || !(this._tween._time === this._tween._duration || this._tween._time === 0) || this._tween._rawPrevTime === -0.000001) {
+                               while (pt) {
+                                       val = pt.c * v + pt.s;
+                                       if (pt.r) {
+                                               val = (val > 0) ? (val + 0.5) >> 0 : (val - 0.5) >> 0;
+                                       } else if (val < min) if (val > -min) {
+                                               val = 0;
+                                       }
+                                       if (!pt.type) {
+                                               pt.t[pt.p] = val + pt.xs0;
+                                       } else if (pt.type === 1) { //complex value (one that typically has multiple numbers inside a string, like "rect(5px,10px,20px,25px)"
+                                               i = pt.l;
+                                               if (i === 2) {
+                                                       pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2;
+                                               } else if (i === 3) {
+                                                       pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2 + pt.xn2 + pt.xs3;
+                                               } else if (i === 4) {
+                                                       pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2 + pt.xn2 + pt.xs3 + pt.xn3 + pt.xs4;
+                                               } else if (i === 5) {
+                                                       pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2 + pt.xn2 + pt.xs3 + pt.xn3 + pt.xs4 + pt.xn4 + pt.xs5;
+                                               } else {
+                                                       str = pt.xs0 + val + pt.xs1;
+                                                       for (i = 1; i < pt.l; i++) {
+                                                               str += pt["xn"+i] + pt["xs"+(i+1)];
+                                                       }
+                                                       pt.t[pt.p] = str;
+                                               }
+
+                                       } else if (pt.type === -1) { //non-tweening value
+                                               pt.t[pt.p] = pt.xs0;
+
+                                       } else if (pt.setRatio) { //custom setRatio() for things like SpecialProps, external plugins, etc.
+                                               pt.setRatio(v);
+                                       }
+                                       pt = pt._next;
+                               }
+
+                               //if the tween is reversed all the way back to the beginning, we need to restore the original values which may have different units (like % instead of px or em or whatever).
+                       } else {
+                               while (pt) {
+                                       if (pt.type !== 2) {
+                                               pt.t[pt.p] = pt.b;
+                                       } else {
+                                               pt.setRatio(v);
+                                       }
+                                       pt = pt._next;
+                               }
+                       }
+               };
+
+               /**
+                * @private
+                * Forces rendering of the target's transforms (rotation, scale, etc.) whenever the CSSPlugin's setRatio() is called.
+                * Basically, this tells the CSSPlugin to create a CSSPropTween (type 2) after instantiation that runs last in the linked
+                * list and calls the appropriate (3D or 2D) rendering function. We separate this into its own method so that we can call
+                * it from other plugins like BezierPlugin if, for example, it needs to apply an autoRotation and this CSSPlugin
+                * doesn't have any transform-related properties of its own. You can call this method as many times as you
+                * want and it won't create duplicate CSSPropTweens.
+                *
+                * @param {boolean} threeD if true, it should apply 3D tweens (otherwise, just 2D ones are fine and typically faster)
+                */
+               p._enableTransforms = function(threeD) {
+                       this._transformType = (threeD || this._transformType === 3) ? 3 : 2;
+               };
+
+               /** @private **/
+               p._linkCSSP = function(pt, next, prev, remove) {
+                       if (pt) {
+                               if (next) {
+                                       next._prev = pt;
+                               }
+                               if (pt._next) {
+                                       pt._next._prev = pt._prev;
+                               }
+                               if (prev) {
+                                       prev._next = pt;
+                               } else if (!remove && this._firstPT === null) {
+                                       this._firstPT = pt;
+                               }
+                               if (pt._prev) {
+                                       pt._prev._next = pt._next;
+                               } else if (this._firstPT === pt) {
+                                       this._firstPT = pt._next;
+                               }
+                               pt._next = next;
+                               pt._prev = prev;
+                       }
+                       return pt;
+               };
+               
+               //we need to make sure that if alpha or autoAlpha is killed, opacity is too. And autoAlpha affects the "visibility" property.
+               p._kill = function(lookup) {
+                       var copy = lookup,
+                               changed = false,
+                               pt, p, xfirst;
+                       if (lookup.css_autoAlpha || lookup.css_alpha) {
+                               copy = {};
+                               for (p in lookup) { //copy the lookup so that we're not changing the original which may be passed elsewhere.
+                                       copy[p] = lookup[p];
+                               }
+                               copy.css_opacity = 1;
+                               if (copy.css_autoAlpha) {
+                                       copy.css_visibility = 1;
+                               }
+                       }
+                       if (lookup.css_className && (pt = this._classNamePT)) {
+                               xfirst = pt.xfirst;
+                               if (xfirst && xfirst._prev) {
+                                       this._linkCSSP(xfirst._prev, pt._next, xfirst._prev._prev); //break off the prev
+                               } else if (xfirst === this._firstPT) {
+                                       this._firstPT = null;
+                               }
+                               if (pt._next) {
+                                       this._linkCSSP(pt._next, pt._next._next, xfirst._prev);
+                               }
+                               this._target._gsOverwrittenClassNamePT = this._linkCSSP(pt, this._target._gsOverwrittenClassNamePT);
+                               this._classNamePT = null;
+                               changed = true;
+                       }
+                       return TweenPlugin.prototype._kill.call(this, copy) || changed;
+               };
+               
+               
+               TweenPlugin.activate([CSSPlugin]);
+               return CSSPlugin;
+               
+       }, true);
+       
+}); if (window._gsDefine) { _gsQueue.pop()(); }
\ No newline at end of file
diff --git a/CubeIT/js/gsap/plugins/CSSRulePlugin.js b/CubeIT/js/gsap/plugins/CSSRulePlugin.js
new file mode 100644 (file)
index 0000000..d2c6821
--- /dev/null
@@ -0,0 +1,96 @@
+/*!
+ * VERSION: beta 0.5
+ * DATE: 2012-12-20
+ * JavaScript 
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ */
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+       
+       _gsDefine("plugins.CSSRulePlugin", ["plugins.TweenPlugin","TweenLite","plugins.CSSPlugin"], function(TweenPlugin, TweenLite, CSSPlugin) {
+               
+               "use strict";
+
+               /** @constructor **/
+               var CSSRulePlugin = function() {
+                               TweenPlugin.call(this, "cssRule");
+                               this._overwriteProps.length = 0;
+                       },
+                       _doc = window.document,
+                       _superSetRatio = CSSPlugin.prototype.setRatio,
+                       p = CSSRulePlugin.prototype = new CSSPlugin();
+
+               p._propName = "cssRule";
+               p.constructor = CSSRulePlugin;
+               CSSRulePlugin.API = 2;
+
+               /**
+                * Searches the style sheets in the document for a particular selector like ".myClass" or "a" or "a:hover" or ":after" and
+                * returns a reference to that style sheet (or an array of them in the case of a pseudo selector like ":after"). Then you
+                * can animate the individual properties of the style sheet.
+                *
+                * @param {!string} selector a string describing the selector, like ".myClass" or "a" or "a:hover" or ":after"
+                * @return a reference to the style sheet (or an array of them in the case of a pseudo selector). If none was found, null is returned (or an empty array for a pseudo selector)
+                */
+               CSSRulePlugin.getRule = function(selector) {
+                       var ruleProp = _doc.all ? 'rules' : 'cssRules',
+                               ss = _doc.styleSheets,
+                               i = ss.length,
+                               pseudo = (selector.charAt(0) === ":"),
+                               j, curSS, cs, a;
+                       selector = (pseudo ? "" : ",") + selector.toLowerCase() + ","; //note: old versions of IE report tag name selectors as upper case, so we just change everything to lowercase.
+                       if (pseudo) {
+                               a = [];
+                       }
+                       while (--i > -1) {
+                               curSS = ss[i][ruleProp];
+                               j = curSS.length;
+                               while (--j > -1) {
+                                       cs = curSS[j];
+                                       if (cs.selectorText && ("," + cs.selectorText.split("::").join(":").toLowerCase() + ",").indexOf(selector) !== -1) { //note: IE adds an extra ":" to pseudo selectors, so .myClass:after becomes .myClass::after, so we need to strip the extra one out.
+                                               if (pseudo) {
+                                                       a.push(cs.style);
+                                               } else {
+                                                       return cs.style;
+                                               }
+                                       }
+                               }
+                       }
+                       return a;
+               };
+
+                                                       
+               
+               //@private gets called when the tween renders for the first time. This kicks everything off, recording start/end values, etc.
+               p._onInitTween = function(target, value, tween) {
+                       if (target.cssText === undefined) {
+                               return false;
+                       }
+                       var div = _doc.createElement("div");
+                       this._ss = target;
+                       this._proxy = div.style;
+                       div.style.cssText = target.cssText;
+                       CSSPlugin.prototype._onInitTween.call(this, div, value, tween); //we just offload all the work to the regular CSSPlugin and then copy the cssText back over to the rule in the setRatio() method. This allows us to have all of the updates to CSSPlugin automatically flow through to CSSRulePlugin instead of having to maintain both
+                       return true;
+               };
+
+               
+               
+               //@private gets called every time the tween updates, passing the new ratio (typically a value between 0 and 1, but not always (for example, if an Elastic.easeOut is used, the value can jump above 1 mid-tween). It will always start and 0 and end at 1.
+               p.setRatio = function(v) {
+                       _superSetRatio.call(this, v);
+                       this._ss.cssText = this._proxy.cssText;
+               };
+               
+               
+               TweenPlugin.activate([CSSRulePlugin]);
+               return CSSRulePlugin;
+               
+       }, true);
+       
+}); if (window._gsDefine) { _gsQueue.pop()(); }
\ No newline at end of file
diff --git a/CubeIT/js/gsap/plugins/ColorPropsPlugin.js b/CubeIT/js/gsap/plugins/ColorPropsPlugin.js
new file mode 100644 (file)
index 0000000..9e0887b
--- /dev/null
@@ -0,0 +1,108 @@
+/**
+ * VERSION: beta 1.0
+ * DATE: 2012-06-08
+ * JavaScript 
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ **/
+
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+
+       window._gsDefine("plugins.ColorPropsPlugin", ["plugins.TweenPlugin"], function(TweenPlugin) {
+
+               var ColorPropsPlugin = function(props, priority) {
+                               TweenPlugin.call(this, "colorProps", -1);
+                               this._overwriteProps.pop();
+                       },
+                       p = ColorPropsPlugin.prototype = new TweenPlugin("colorProps", -1),
+                       _numExp = /(\d|\.)+/g,
+                       _parseColor = function(color) {
+                               if (color === "" || color == null || color === "none") {
+                                       return _colorLookup.transparent;
+                               } else if (_colorLookup[color]) {
+                                       return _colorLookup[color];
+                               } else if (typeof(color) === "number") {
+                                       return [color >> 16, (color >> 8) & 255, color & 255];
+                               } else if (color.charAt(0) === "#") {
+                                       if (color.length === 4) { //for shorthand like #9F0
+                                               color = "#" + color.charAt(1) + color.charAt(1) + color.charAt(2) + color.charAt(2) + color.charAt(3) + color.charAt(3);
+                                       }
+                                       color = parseInt(color.substr(1), 16);
+                                       return [color >> 16, (color >> 8) & 255, color & 255];
+                               } else {
+                                       return color.match(_numExp) || _colorLookup.transparent;
+                               }
+                       },
+                       _colorLookup = {aqua:[0,255,255],
+                                                       lime:[0,255,0],
+                                                       silver:[192,192,192],
+                                                       black:[0,0,0],
+                                                       maroon:[128,0,0],
+                                                       teal:[0,128,128],
+                                                       blue:[0,0,255],
+                                                       navy:[0,0,128],
+                                                       white:[255,255,255],
+                                                       fuchsia:[255,0,255],
+                                                       olive:[128,128,0],
+                                                       yellow:[255,255,0],
+                                                       orange:[255,165,0],
+                                                       gray:[128,128,128],
+                                                       purple:[128,0,128],
+                                                       green:[0,128,0],
+                                                       red:[255,0,0],
+                                                       pink:[255,192,203],
+                                                       cyan:[0,255,255],
+                                                       transparent:[255,255,255,0]};
+
+               p.constructor = ColorPropsPlugin;
+               ColorPropsPlugin.API = 2;
+
+               p._onInitTween = function(target, value, tween) {
+                       this._target = target;
+                       var p, s, c, pt;
+                       for (p in value) {
+                               c = _parseColor(value[p]);
+                               this._firstPT = pt = {_next:this._firstPT, p:p, f:(typeof(target[p]) === "function"), n:p, r:false};
+                               s = _parseColor( (!pt.f) ? target[p] : target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ]() );
+                               pt.s = Number(s[0]);
+                               pt.c = Number(c[0]) - pt.s;
+                               pt.gs = Number(s[1]);
+                               pt.gc = Number(c[1]) - pt.gs;
+                               pt.bs = Number(s[2]);
+                               pt.bc = Number(c[2]) - pt.bs;
+                               if ((pt.rgba = (s.length > 3 || c.length > 3))) { //detect an rgba() value
+                                       pt.as = (s.length < 4) ? 1 : Number(s[3]);
+                                       pt.ac = ((c.length < 4) ? 1 : Number(c[3])) - pt.as;
+                               }
+                               if (pt._next) {
+                                       pt._next._prev = pt;
+                               }
+                       }
+                       return true;
+               };
+
+               //gets called every time the tween updates, passing the new ratio (typically a value between 0 and 1, but not always (for example, if an Elastic.easeOut is used, the value can jump above 1 mid-tween). It will always start and 0 and end at 1.
+               p.setRatio = function(v) {
+                       var pt = this._firstPT, val;
+                       while (pt) {
+                               val = (pt.rgba ? "rgba(" : "rgb(") + ((pt.s + (v * pt.c)) >> 0) + ", " + ((pt.gs + (v * pt.gc)) >> 0) + ", " + ((pt.bs + (v * pt.bc)) >> 0) + (pt.rgba ? ", " + (pt.as + (v * pt.ac)) : "") + ")";
+                               if (pt.f) {
+                                       this._target[pt.p](val);
+                               } else {
+                                       this._target[pt.p] = val;
+                               }
+                               pt = pt._next;
+                       }
+               };
+
+               TweenPlugin.activate([ColorPropsPlugin]);
+               return ColorPropsPlugin;
+
+       }, true);
+
+}); if (window._gsDefine) { window._gsQueue.pop()(); }
diff --git a/CubeIT/js/gsap/plugins/EaselPlugin.js b/CubeIT/js/gsap/plugins/EaselPlugin.js
new file mode 100644 (file)
index 0000000..c14062d
--- /dev/null
@@ -0,0 +1,175 @@
+/**
+ * VERSION: beta 0.12
+ * DATE: 2013-01-13
+ * JavaScript
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ **/
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+
+       _gsDefine("plugins.EaselPlugin", ["plugins.TweenPlugin"], function(TweenPlugin) {
+               
+               var EaselPlugin = function(props, priority) {
+                               TweenPlugin.call(this, "easel", -1);
+                               this._overwriteProps.pop();
+                       },
+                       p = EaselPlugin.prototype = new TweenPlugin("easel", -1),
+                       _numExp = /(\d|\.)+/g,
+                       _ColorFilter,
+                       
+                       _colorProps = ["redMultiplier","greenMultiplier","blueMultiplier","alphaMultiplier","redOffset","greenOffset","blueOffset","alphaOffset"],
+                       
+                       _parseColorFilter = function(t, v, pg) {
+                               if (!_ColorFilter) {
+                                       _ColorFilter = (window.ColorFilter || window.createjs.ColorFilter);
+                                       if (!_ColorFilter) {
+                                               throw("EaselPlugin error: The EaselJS ColorFilter JavaScript file wasn't loaded.");
+                                       }
+                               }
+                               var filters = t.filters || [],
+                                       i = filters.length, 
+                                       c, s, e, a, p;
+                               while (--i > -1) {
+                                       if (filters[i] instanceof _ColorFilter) {
+                                               s = filters[i];
+                                               break;
+                                       }
+                               }
+                               if (!s) {
+                                       s = new _ColorFilter();
+                                       filters.push(s);
+                                       t.filters = filters;
+                               }
+                               e = s.clone();
+                               if (v.tint != null) {
+                                       c = _parseColor(v.tint);
+                                       a = (v.tintAmount != null) ? Number(v.tintAmount) : 1;
+                                       e.redOffset = Number(c[0]) * a;
+                                       e.greenOffset = Number(c[1]) * a;
+                                       e.blueOffset = Number(c[2]) * a;
+                                       e.redMultiplier = e.greenMultiplier = e.blueMultiplier = 1 - a;
+                               } else {
+                                       for (p in v) {
+                                               if (p !== "exposure") if (p !== "brightness") {
+                                                       e[p] = Number(v[p]);
+                                               }
+                                       }
+                               }
+                               if (v.exposure != null) {
+                                       e.redOffset = e.greenOffset = e.blueOffset = 255 * (Number(v.exposure) - 1);
+                                       e.redMultiplier = e.greenMultiplier = e.blueMultiplier = 1;
+                               } else if (v.brightness != null) {
+                                       a = Number(v.brightness) - 1;
+                                       e.redOffset = e.greenOffset = e.blueOffset = (a > 0) ? a * 255 : 0;
+                                       e.redMultiplier = e.greenMultiplier = e.blueMultiplier = 1 - Math.abs(a);
+                               }
+                               i = 8;
+                               while (--i > -1) {
+                                       p = _colorProps[i];
+                                       if (s[p] !== e[p]) {
+                                               pg._addTween(s, p, s[p], e[p], "easel_colorFilter");
+                                       }
+                               }
+                               pg._overwriteProps.push("easel_colorFilter");
+                               if (!t.cacheID) {
+                                       throw("EaselPlugin warning: for filters to display in EaselJS, you must call the object's cache() method first. "+t); 
+                               }
+                       },
+                       
+                       _parseColor = function(color) {
+                               if (color === "" || color == null || color === "none") {
+                                       return _colorLookup.transparent;
+                               } else if (_colorLookup[color]) {
+                                       return _colorLookup[color];
+                               } else if (typeof(color) === "number") {
+                                       return [color >> 16, (color >> 8) & 255, color & 255];
+                               } else if (color.charAt(0) === "#") {
+                                       if (color.length === 4) { //for shorthand like #9F0
+                                               color = "#" + color.charAt(1) + color.charAt(1) + color.charAt(2) + color.charAt(2) + color.charAt(3) + color.charAt(3);
+                                       }
+                                       color = parseInt(color.substr(1), 16);
+                                       return [color >> 16, (color >> 8) & 255, color & 255];
+                               } else {
+                                       return color.match(_numExp) || _colorLookup.transparent;
+                               }
+                       },
+                       _colorLookup = {aqua:[0,255,255],
+                                                       lime:[0,255,0],
+                                                       silver:[192,192,192],
+                                                       black:[0,0,0],
+                                                       maroon:[128,0,0],
+                                                       teal:[0,128,128],
+                                                       blue:[0,0,255],
+                                                       navy:[0,0,128],
+                                                       white:[255,255,255],
+                                                       fuchsia:[255,0,255],
+                                                       olive:[128,128,0],
+                                                       yellow:[255,255,0],
+                                                       orange:[255,165,0],
+                                                       gray:[128,128,128],
+                                                       purple:[128,0,128],
+                                                       green:[0,128,0],
+                                                       red:[255,0,0],
+                                                       pink:[255,192,203],
+                                                       cyan:[0,255,255],
+                                                       transparent:[255,255,255,0]};
+               
+               p.constructor = EaselPlugin;
+               EaselPlugin.API = 2;
+               
+               p._onInitTween = function(target, value, tween) {
+                       this._target = target;
+                       var p, pt, tint;
+                       for (p in value) {
+                               
+                               if (p === "colorFilter" || p === "tint" || p === "tintAmount" || p === "exposure" || p === "brightness") {
+                                       if (!tint) {
+                                               _parseColorFilter(target, value.colorFilter || value, this);
+                                               tint = true;
+                                       }
+                                       
+                               } else if (target[p] != null) {
+                                       this._firstPT = pt = {_next:this._firstPT, t:target, p:p, f:(typeof(target[p]) === "function"), n:p, pr:0, type:0};
+                                       pt.s = (!pt.f) ? parseFloat(target[p]) : target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ]();
+                                       pt.c = (typeof(value[p]) === "number") ? value[p] - pt.s : (typeof(value[p]) === "string") ? parseFloat(value[p].split("=").join("")) : 0;
+                                       
+                                       if (pt._next) {
+                                               pt._next._prev = pt;
+                                       }
+                               }
+                               
+                       }
+                       return true;
+               };
+               
+               //gets called every time the tween updates, passing the new ratio (typically a value between 0 and 1, but not always (for example, if an Elastic.easeOut is used, the value can jump above 1 mid-tween). It will always start and 0 and end at 1.
+               p.setRatio = function(v) {
+                       var pt = this._firstPT, val;
+                       while (pt) {
+                               val = pt.c * v + pt.s;
+                               if (pt.r) {
+                                       val = (val + ((val > 0) ? 0.5 : -0.5)) >> 0; //about 4x faster than Math.round()
+                               }
+                               if (pt.f) {
+                                       pt.t[pt.p](val);
+                               } else {
+                                       pt.t[pt.p] = val;
+                               }
+                               pt = pt._next;
+                       }
+                       if (this._target.cacheID) {
+                               this._target.updateCache();
+                       }
+               };
+               
+               TweenPlugin.activate([EaselPlugin]);
+               return EaselPlugin;
+               
+       }, true);
+
+}); if (window._gsDefine) { _gsQueue.pop()(); }
\ No newline at end of file
diff --git a/CubeIT/js/gsap/plugins/RaphaelPlugin.js b/CubeIT/js/gsap/plugins/RaphaelPlugin.js
new file mode 100644 (file)
index 0000000..d3cdfc4
--- /dev/null
@@ -0,0 +1,383 @@
+/*!
+ * VERSION: beta 0.15
+ * DATE: 2013-01-13
+ * JavaScript 
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ */
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+       
+       _gsDefine("plugins.RaphaelPlugin", ["plugins.TweenPlugin","TweenLite"], function(TweenPlugin, TweenLite) {
+               
+               "use strict";
+               
+               var RaphaelPlugin = function() {
+                               TweenPlugin.call(this, "raphael");
+                               this._overwriteProps.pop();
+                       },
+                       p = RaphaelPlugin.prototype = new TweenPlugin("raphael");
+               
+               p.constructor = RaphaelPlugin;
+               RaphaelPlugin.API = 2;
+                       
+               //parses a color (like #9F0, #FF9900, or rgb(255,51,153)) into an array with 3 elements for red, green, and blue. Also handles rgba() values (splits into array of 4 elements of course) 
+               var     _NaNExp = /[^\d\-\.]/g,
+                       _DEG2RAD = Math.PI / 180,
+                       _RAD2DEG = 180 / Math.PI,
+                       _numExp = /(\d|\.)+/g,
+                       _parseColor = function(color) {
+                               if (typeof(color) === "number") {
+                                       return [color >> 16, (color >> 8) & 255, color & 255];
+                               } else if (color === "" || color == null || color === "none" || typeof(color) !== "string") {
+                                       return _colorLookup.transparent;
+                               } else if (_colorLookup[color]) {
+                                       return _colorLookup[color];
+                               } else if (color.charAt(0) === "#") {
+                                       if (color.length === 4) { //for shorthand like #9F0
+                                               color = "#" + color.charAt(1) + color.charAt(1) + color.charAt(2) + color.charAt(2) + color.charAt(3) + color.charAt(3);
+                                       }
+                                       color = parseInt(color.substr(1), 16);
+                                       return [color >> 16, (color >> 8) & 255, color & 255];
+                               } else {
+                                       return color.match(_numExp) || _colorLookup.transparent;
+                               }
+                       },
+                       
+                       _transformMap = {scaleX:1, scaleY:1, tx:1, ty:1, rotation:1, shortRotation:1, skewX:1, skewY:1, scale:1},
+                                               
+                       //parses the transform values for an element, returning an object with x, y, scaleX, scaleY, rotation, skewX, and skewY properties. Note: by default (for performance reasons), all skewing is combined into skewX and rotation but skewY still has a place in the transform object so that we can record how much of the skew is attributed to skewX vs skewY. Remember, a skewY of 10 looks the same as a rotation of 10 and skewX of -10.
+                       _getTransform = function(t, rec) {
+                               var s = t.matrix,
+                                       min = 0.000001,
+                                       a = s.a,
+                                       b = s.b, 
+                                       c = s.c,
+                                       d = s.d,
+                                       m = rec ? t._gsTransform || {skewY:0} : {skewY:0},
+                                       invX = (m.scaleX < 0); //in order to interpret things properly, we need to know if the user applied a negative scaleX previously so that we can adjust the rotation and skewX accordingly. Otherwise, if we always interpret a flipped matrix as affecting scaleY and the user only wants to tween the scaleX on multiple sequential tweens, it would keep the negative scaleY without that being the user's intent.
+                                       
+                               m.tx = s.e - (m.ox || 0); //ox is the offset x that we record in setRatio() whenever we apply a custom transform that might use a pivot point. Remember, s.e and s.f get affected by things like scale. For example, imagine an object whose top left corner is at 100,100 and then we scale it up to 300% using the center as the pivot point - that corner would now be very different even though to the user, they didn't intend to change/tween the x/y position per se. Therefore, we record whatever offsets we make so that we can compensate when reading the values back.
+                               m.ty = s.f - (m.oy || 0); //oy is the offset y (see note above)
+                               m.scaleX = Math.sqrt(a * a + b * b);
+                               m.scaleY = Math.sqrt(d * d + c * c);
+                               m.rotation = (a || b) ? Math.atan2(b, a) : m.rotation || 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).
+                               m.skewX = (c || d) ? Math.atan2(c, d) + m.rotation : m.skewX || 0;
+                               if (Math.abs(m.skewX) > Math.PI / 2) {
+                                       if (invX) {
+                                               m.scaleX *= -1;
+                                               m.skewX += (m.rotation <= 0) ? Math.PI : -Math.PI;
+                                               m.rotation += (m.rotation <= 0) ? Math.PI : -Math.PI;
+                                       } else {
+                                               m.scaleY *= -1;
+                                               m.skewX += (m.skewX <= 0) ? Math.PI : -Math.PI;
+                                       }
+                               }
+                               //some browsers have a hard time with very small values like 2.4492935982947064e-16 (notice the "e-" towards the end) and would render the object slightly off. So we round to 0 in these cases. The conditional logic here is faster than calling Math.abs().
+                               if (m.rotation < min) if (m.rotation > -min) if (a || b) {
+                                       m.rotation = 0;
+                               }
+                               if (m.skewX < min) if (m.skewX > -min) if (b || c) {
+                                       m.skewX = 0;
+                               }
+                               if (rec) {                                      
+                                       t._gsTransform = m; //record to the object's _gsTransform which we use so that tweens can control individual properties independently (we need all the properties to accurately recompose the matrix in the setRatio() method)
+                               }
+                               return m;
+                       },
+                       
+                       //takes a value and a default number, checks if the value is relative, null, or numeric and spits back a normalized number accordingly. Primarily used in the _parseTransform() function.
+                       _parseVal = function(v, d) {
+                               return (v == null) ? d : (typeof(v) === "string" && v.indexOf("=") === 1) ? parseInt(v.charAt(0)+"1") * Number(v.substr(2)) + d : Number(v);
+                       },
+                       
+                       //translates strings like "40deg" or "40" or 40rad" or "+=40deg" to a numeric radian angle, optionally relative to a default value (if "+=" or "-=" prefix is found)
+                       _parseAngle = function(v, d) { 
+                               var m = (v.indexOf("rad") === -1) ? _DEG2RAD : 1, 
+                                       r = (v.indexOf("=") === 1);
+                               v = Number(v.replace(_NaNExp, "")) * m;
+                               return r ? v + d : v;
+                       },
+                       
+                       _colorLookup = {aqua:[0,255,255],
+                                                       lime:[0,255,0],
+                                                       silver:[192,192,192],
+                                                       black:[0,0,0],
+                                                       maroon:[128,0,0],
+                                                       teal:[0,128,128],
+                                                       blue:[0,0,255],
+                                                       navy:[0,0,128],
+                                                       white:[255,255,255],
+                                                       fuchsia:[255,0,255],
+                                                       olive:[128,128,0],
+                                                       yellow:[255,255,0],
+                                                       orange:[255,165,0],
+                                                       gray:[128,128,128],
+                                                       purple:[128,0,128],
+                                                       green:[0,128,0],
+                                                       red:[255,0,0],
+                                                       pink:[255,192,203],
+                                                       cyan:[0,255,255],
+                                                       transparent:[255,255,255,0]};
+                                                       
+               
+               //gets called when the tween renders for the first time. This kicks everything off, recording start/end values, etc. 
+               p._onInitTween = function(target, value, tween) {
+                       if (!target.attr) { //raphael must have attr() method
+                               return false;
+                       }
+                       this._target = target;
+                       this._tween = tween;
+                       this._props = target._gsProps = target._gsProps || {};
+                       var p, s, v, pt, clr1, clr2, rel;
+                       
+                       for (p in value) {
+                               
+                               v = value[p];
+                               
+                               if (p === "transform") {
+                                       this._parseTransform(target, v);
+                                       continue;
+                               } else if (_transformMap[p] || p === "pivot") {
+                                       this._parseTransform(target, value);
+                                       continue;
+                               }
+                               
+                               s = target.attr(p);
+                               
+                               
+                               //Some of these properties are in place in order to conform with the standard PropTweens in TweenPlugins so that overwriting and roundProps occur properly. For example, f and r may seem unnecessary here, but they enable other functionality.
+                               //_next:*       next linked list node           [object]
+                               //t:    *       target                                          [object]
+                               //p:    *       property (camelCase)            [string]
+                               //s:    *       starting value                          [number]
+                               //c:    *       change value                            [number]
+                               //f:    *       is function                                     [boolean]
+                               //n:    *       name (for overwriting)          [string]
+                               //b:            beginning value                         [string]
+                               //i:            intermediate value                      [string]
+                               //e:            ending value                            [string]
+                               //r:    *       round                                           [boolean]
+                               //type:         0=normal, 1=color, 2=rgba, -1=non-tweening prop [number]
+                               this._firstPT = pt = {_next:this._firstPT, 
+                                         t:this._props, 
+                                         p:p, 
+                                         b:s,
+                                         f:false,
+                                         n:"raphael_" + p,
+                                         r:false,
+                                         type:0};
+                                         
+                                                                       
+                               //color values must be split apart into their R, G, B (and sometimes alpha) values and tweened independently.
+                               if (p === "fill" || p === "stroke") {
+                                       clr1 = _parseColor(s);
+                                       clr2 = _parseColor(v);
+                                       pt.e = v;
+                                       pt.s = Number(clr1[0]);                         //red starting value
+                                       pt.c = Number(clr2[0]) - pt.s;          //red change
+                                       pt.gs = Number(clr1[1]);                        //green starting value
+                                       pt.gc = Number(clr2[1]) - pt.gs;        //green change
+                                       pt.bs = Number(clr1[2]);                        //blue starting value
+                                       pt.bc = Number(clr2[2]) - pt.bs;        //blue change
+                                       if (clr1.length > 3 || clr2.length > 3) { //detect an rgba() value
+                                               pt.as = (clr1.length < 4) ? 1 : Number(clr1[3]);
+                                               pt.ac = ((clr2.length < 4) ? 1 : Number(clr2[3])) - pt.as;
+                                               pt.type = 2; //2 = rgba() tween
+                                       } else {
+                                               pt.type = 1; //1 = color tween, -1 = no tween, just set the value at the end because there's no changes
+                                       }
+                                       
+                               } else {
+                                       
+                                       s = (typeof(s) === "string") ? parseFloat(s.replace(_NaNExp, "")) : Number(s);
+                                       
+                                       if (typeof(v) === "string") {
+                                               rel = (v.charAt(1) === "=");
+                                               v = parseFloat(v.replace(_NaNExp, ""));
+                                       } else {
+                                               rel = false;
+                                       }
+                                       
+                                       pt.e = (v || v === 0) ? (rel ? v + s : v) : value[p]; //ensures that any += or -= prefixes are taken care of. 
+                                       
+                                       if ((s || s === 0) && (v || v === 0) && (pt.c = (rel ? v : v - s))) { //faster than isNaN(). Also, we set pt.c (change) here because if it's 0, we'll just treat it like a non-tweening value. can't do (v !== start) because if it's a relative value and the CHANGE is identical to the START, the condition will fail unnecessarily.
+                                               pt.s = s;
+                                       } else {
+                                               pt.type = -1;
+                                               pt.i = value[p]; //intermediate value is typically the same as the end value.
+                                               pt.s = pt.c = 0;
+                                       }
+                                       
+                               }
+                               
+                               this._overwriteProps.push("raphael_" + p);
+                               if (pt._next) {
+                                       pt._next._prev = pt;
+                               }
+                       }
+
+                       return true;
+               };
+               
+               //compares the beginning x, y, scaleX, scaleY, rotation, and skewX properties with the ending ones and adds PropTweens accordingly wherever necessary. We must tween them individually (rather than just tweening the matrix values) so that elgant overwriting can occur, like if one tween is controlling scaleX, scaleY, and rotation and then another one starts mid-tween that is trying to control the scaleX only - this tween should continue tweening scaleY and rotation.
+               p._parseTransform = function(t, v) {
+                       if (this._transform) { return; } //only need to parse the transform once, and only if the browser supports it.
+                       
+                       var m1 = this._transform = _getTransform(t, true), 
+                               min = 0.000001,
+                               m2, skewY, p, pt, copy, dx, dy, mtx, pivot;
+                       
+                       if (typeof(v) === "object") { //for values like scaleX, scaleY, rotation, x, y, skewX, and skewY or transform:{...} (object)
+
+                               m2 = {scaleX:_parseVal((v.scaleX != null) ? v.scaleX : v.scale, m1.scaleX),
+                                         scaleY:_parseVal((v.scaleY != null) ? v.scaleY : v.scale, m1.scaleY),
+                                         tx:_parseVal(v.tx, m1.tx),
+                                         ty:_parseVal(v.ty, m1.ty)};
+                                         
+                               if (v.shortRotation != null) {
+                                       m2.rotation = (typeof(v.shortRotation) === "number") ? v.shortRotation * _DEG2RAD : _parseAngle(v.shortRotation, m1.rotation);
+                                       var dif = (m2.rotation - m1.rotation) % (Math.PI * 2);
+                                       if (dif !== dif % Math.PI) {
+                                               dif += Math.PI * ((dif < 0) ? 2 : -2);
+                                       }
+                                       m2.rotation = m1.rotation + dif;
+                                       
+                               } else {
+                                       m2.rotation = (v.rotation == null) ? m1.rotation : (typeof(v.rotation) === "number") ? v.rotation * _DEG2RAD : _parseAngle(v.rotation, m1.rotation);
+                               }
+                               m2.skewX = (v.skewX == null) ? m1.skewX : (typeof(v.skewX) === "number") ? v.skewX * _DEG2RAD : _parseAngle(v.skewX, m1.skewX);
+                               
+                               //note: for performance reasons, we combine all skewing into the skewX and rotation values, ignoring skewY but we must still record it so that we can discern how much of the overall skew is attributed to skewX vs. skewY. Otherwise, if the skewY would always act relative (tween skewY to 10deg, for example, multiple times and if we always combine things into skewX, we can't remember that skewY was 10 from last time). Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of -10 degrees.
+                               m2.skewY = (v.skewY == null) ? m1.skewY : (typeof(v.skewY) === "number") ? v.skewY * _DEG2RAD : _parseAngle(v.skewY, m1.skewY);
+                               if ((skewY = m2.skewY - m1.skewY)) {
+                                       m2.skewX += skewY;
+                                       m2.rotation += skewY;
+                               }
+                               //don't allow rotation/skew values to be a SUPER small decimal because when they're translated back to strings for setting the css property, the browser reports them in a funky way, like 1-e7. Of course we could use toFixed() to resolve that issue but that hurts performance quite a bit with all those function calls on every frame, plus it is virtually impossible to discern values that small visually (nobody will notice changing a rotation of 0.0000001 to 0, so the performance improvement is well worth it).
+                               if (m2.skewY < min) if (m2.skewY > -min) {
+                                       m2.skewY = 0;
+                               }
+                               if (m2.skewX < min) if (m2.skewX > -min) {
+                                       m2.skewX = 0;
+                               }
+                               if (m2.rotation < min) if (m2.rotation > -min) {
+                                       m2.rotation = 0;
+                               }
+                               
+                               pivot = v.localPivot || v.globalPivot;
+                               
+                               if (typeof(pivot) === "string") {
+                                       copy = pivot.split(",");
+                                       dx = Number(copy[0]);
+                                       dy = Number(copy[1]);           
+                               } else if (typeof(pivot) === "object") {
+                                       dx = Number(pivot.x);
+                                       dy = Number(pivot.y);
+                               } else if (v.localPivot) {
+                                       copy = t.getBBox(true);
+                                       dx = copy.width / 2;
+                                       dy = copy.height / 2;
+                               } else {
+                                       copy = t.getBBox();
+                                       dx = copy.x + copy.width / 2;
+                                       dy = copy.y + copy.height / 2;
+                               }
+                               
+                               if (v.localPivot) {
+                                       mtx = t.matrix;
+                                       dx += t.attr("x");
+                                       dy += t.attr("y");
+                                       this._pxl = dx;
+                                       this._pyl = dy;
+                                       this._pxg = dx * mtx.a + dy * mtx.c + mtx.e - m1.tx;
+                                       this._pyg = dx * mtx.b + dy * mtx.d + mtx.f - m1.ty;
+                               } else {
+                                       mtx = t.matrix.invert();
+                                       this._pxl = dx * mtx.a + dy * mtx.c + mtx.e;
+                                       this._pyl = dx * mtx.b + dy * mtx.d + mtx.f;
+                                       this._pxg = dx - m1.tx;
+                                       this._pyg = dy - m1.ty;
+                               }
+                                                               
+                       } else if (typeof(v) === "string") { //for values like transform:"rotate(60deg) scale(0.5, 0.8)"
+                               copy = this._target.transform();
+                               t.transform(v);
+                               m2 = _getTransform(t, false);
+                               t.transform(copy);
+                       } else {
+                               return;
+                       }
+                       
+                       for (p in _transformMap) {
+                               if (m1[p] !== m2[p]) if (p !== "shortRotation") if (p !== "scale") {
+                                       this._firstPT = pt = {_next:this._firstPT, t:m1, p:p, s:m1[p], c:m2[p] - m1[p], n:p, f:false, r:false, b:m1[p], e:m2[p], type:0};
+                                       if (pt._next) {
+                                               pt._next._prev = pt;
+                                       }
+                                       this._overwriteProps.push("raphael_" + p);
+                               }
+                       }
+               };
+               
+               //gets called every time the tween updates, passing the new ratio (typically a value between 0 and 1, but not always (for example, if an Elastic.easeOut is used, the value can jump above 1 mid-tween). It will always start and 0 and end at 1.
+               p.setRatio = function(v) {
+                       var pt = this._firstPT, val;
+                       
+                       while (pt) {
+                               val = pt.c * v + pt.s;
+                               if (pt.r) {
+                                       val = (val > 0) ? (val + 0.5) >> 0 : (val - 0.5) >> 0; 
+                               }
+                               if (!pt.type) {
+                                       pt.t[pt.p] = val;
+                               } else if (pt.type === 1) { //rgb()
+                                       pt.t[pt.p] = "rgb(" + (val >> 0) + ", " + ((pt.gs + (v * pt.gc)) >> 0) + ", " + ((pt.bs + (v * pt.bc)) >> 0) + ")";
+                               } else if (pt.type === 2) { //rgba()
+                                       pt.t[pt.p] = "rgba(" + (val >> 0) + ", " + ((pt.gs + (v * pt.gc)) >> 0) + ", " + ((pt.bs + (v * pt.bc)) >> 0) + ", " + (pt.as + (v * pt.ac)) + ")";
+                               } else if (pt.type === -1) { //non-tweening
+                                       pt.t[pt.p] = pt.i;
+                               }
+                               pt = pt._next;
+                       }
+                       
+                       this._target.attr(this._props);
+                       
+                       //apply transform values like x, y, scaleX, scaleY, rotation, skewX, or skewY. We do these after looping through all the PropTweens because those are where the changes are made to scaleX/scaleY/rotation/skewX/skewY/x/y.
+                       if (this._transform) {
+                               pt = this._transform; //to improve speed and reduce size, reuse the pt variable as an alias to the _transform property                          
+                               var ang = pt.rotation, 
+                                       skew = ang - pt.skewX,
+                                       a = Math.cos(ang) * pt.scaleX,
+                                       b = Math.sin(ang) * pt.scaleX,
+                                       c = Math.sin(skew) * -pt.scaleY,
+                                       d = Math.cos(skew) * pt.scaleY,
+                                       min = 0.000001,
+                                       pxl = this._pxl,
+                                       pyl = this._pyl;
+                               
+                               //some browsers have a hard time with very small values like 2.4492935982947064e-16 (notice the "e-" towards the end) and would render the object slightly off. So we round to 0 in these cases for both b and c. The conditional logic here is faster than calling Math.abs().
+                               if (b < min) if (b > -min) {
+                                       b = 0;
+                               }
+                               if (c < min) if (c > -min) {
+                                       c = 0;
+                               }
+                               pt.ox = this._pxg - (pxl * a + pyl * c); //we must record the offset x/y that we're making from the regular tx/ty (matrix.e and f) so that we can correctly interpret positional data in _getTransform(). See note there on tx and ox.
+                               pt.oy = this._pyg - (pxl * b + pyl * d);
+                               this._target.transform("m" + a + "," + b + "," + c + "," + d + "," + (pt.tx + pt.ox) + "," + (pt.ty + pt.oy));
+                       }
+                       
+               };
+               
+               
+               TweenPlugin.activate([RaphaelPlugin]);
+               return RaphaelPlugin;
+               
+       }, true);
+       
+}); if (window._gsDefine) { _gsQueue.pop()(); }
\ No newline at end of file
diff --git a/CubeIT/js/gsap/plugins/RoundPropsPlugin.js b/CubeIT/js/gsap/plugins/RoundPropsPlugin.js
new file mode 100644 (file)
index 0000000..4f9fd33
--- /dev/null
@@ -0,0 +1,80 @@
+/**
+ * VERSION: beta 1.31
+ * DATE: 2012-11-19
+ * JavaScript (ActionScript 3 and 2 also available)
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ **/
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+
+       _gsDefine("plugins.RoundPropsPlugin", ["plugins.TweenPlugin"], function(TweenPlugin) {
+               
+               var RoundPropsPlugin = function(props, priority) {
+                               TweenPlugin.call(this, "roundProps", -1);
+                               this._overwriteProps.length = 0;
+                       },
+                       p = RoundPropsPlugin.prototype = new TweenPlugin("roundProps", -1);
+               
+               p.constructor = RoundPropsPlugin;
+               RoundPropsPlugin.API = 2;
+               
+               p._onInitTween = function(target, value, tween) {
+                       this._tween = tween;
+                       return true;
+               };
+               
+               p._onInitAllProps = function() {
+                       var tween = this._tween,
+                               rp = (tween.vars.roundProps instanceof Array) ? tween.vars.roundProps : tween.vars.roundProps.split(","), 
+                               i = rp.length,
+                               lookup = {},
+                               rpt = tween._propLookup.roundProps,
+                               prop, pt, next;
+                       while (--i > -1) {
+                               lookup[rp[i]] = 1;
+                       }
+                       i = rp.length;
+                       while (--i > -1) {
+                               prop = rp[i];
+                               pt = tween._firstPT;
+                               while (pt) {
+                                       next = pt._next; //record here, because it may get removed
+                                       if (pt.pg) {
+                                               pt.t._roundProps(lookup, true);
+                                       } else if (pt.n === prop) {
+                                               this._add(pt.t, prop, pt.s, pt.c);
+                                               //remove from linked list
+                                               if (next) {
+                                                       next._prev = pt._prev;
+                                               }
+                                               if (pt._prev) {
+                                                       pt._prev._next = next;
+                                               } else if (tween._firstPT === pt) {
+                                                       tween._firstPT = next;
+                                               }
+                                               pt._next = pt._prev = null;
+                                               tween._propLookup[prop] = rpt;
+                                       }
+                                       pt = next;
+                               }
+                       }
+                       return false;
+               };
+                               
+               p._add = function(target, p, s, c) {
+                       this._addTween(target, p, s, s + c, p, true);
+                       this._overwriteProps.push(p);
+               };
+               
+               TweenPlugin.activate([RoundPropsPlugin]);
+               
+               return RoundPropsPlugin;
+               
+       }, true);
+
+}); if (window._gsDefine) { _gsQueue.pop()(); }
\ No newline at end of file
diff --git a/CubeIT/js/gsap/plugins/ScrollToPlugin.js b/CubeIT/js/gsap/plugins/ScrollToPlugin.js
new file mode 100644 (file)
index 0000000..4347726
--- /dev/null
@@ -0,0 +1,120 @@
+/**
+ * VERSION: beta 1.521
+ * DATE: 2013-01-16
+ * JavaScript
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ **/
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+
+       _gsDefine("plugins.ScrollToPlugin", ["plugins.TweenPlugin"], function(TweenPlugin) {
+               
+               var ScrollToPlugin = function(props, priority) {
+                               TweenPlugin.call(this, "scrollTo");
+                               this._overwriteProps.pop();
+                       },
+                       p = ScrollToPlugin.prototype = new TweenPlugin("scrollTo"),
+                       _doc = document.documentElement,
+                       _window = window,
+                       _max = ScrollToPlugin.max = function(element, axis) {
+                               var dim = (axis === "x") ? "Width" : "Height",
+                                       scroll = "scroll" + dim,
+                                       client = "client" + dim,
+                                       body = document.body;
+                               return (element === _window || element === _doc || element === body) ? Math.max(_doc[scroll], body[scroll]) - Math.max(_doc[client], body[client]) : element[scroll] - element["offset" + dim];
+                       },
+                       _setRatio = TweenPlugin.prototype.setRatio; //speed optimization (quicker lookup)
+               
+               p.constructor = ScrollToPlugin;
+               ScrollToPlugin.API = 2;
+
+               p._onInitTween = function(target, value, tween) {
+                       this._wdw = (target === _window);
+                       this._target = target;
+                       this._tween = tween;
+                       if (typeof(value) !== "object") {
+                               value = {y:value}; //if we don't receive an object as the parameter, assume the user intends "y".
+                       }
+                       this._autoKill = value.autoKill;
+                       this.x = this.xPrev = this.getX();
+                       this.y = this.yPrev = this.getY();
+                       if (value.x != null) {
+                               this._addTween(this, "x", this.x, (value.x === "max") ? _max(target, "x") : value.x, "scrollTo_x", true);
+                       } else {
+                               this.skipX = true;
+                       }
+                       if (value.y != null) {
+                               this._addTween(this, "y", this.y, (value.y === "max") ? _max(target, "y") : value.y, "scrollTo_y", true);
+                       } else {
+                               this.skipY = true;
+                       }
+                       return true;
+               };
+
+               p.getX = function() {
+                       return (!this._wdw) ? this._target.scrollLeft : (_window.pageXOffset != null) ? _window.pageXOffset : (_doc.scrollLeft != null) ? _doc.scrollLeft : document.body.scrollLeft;
+               };
+
+               p.getY = function() {
+                       return (!this._wdw) ? this._target.scrollTop : (_window.pageYOffset != null) ? _window.pageYOffset : (_doc.scrollTop != null) ? _doc.scrollTop : document.body.scrollTop;
+               };
+               
+               p._kill = function(lookup) {
+                       if (lookup.scrollTo_x) {
+                               this.skipX = true;
+                       }
+                       if (lookup.scrollTo_y) {
+                               this.skipY = true;
+                       }
+                       return TweenPlugin.prototype._kill.call(this, lookup);
+               };
+
+               p._checkAutoKill = function() {
+                       if (this._autoKill && this.skipX && this.skipY) {
+                               this._tween.kill();
+                       }
+               };
+               
+               p.setRatio = function(v) {
+                       _setRatio.call(this, v);
+
+                       var x = (this._wdw || !this.skipX) ? this.getX() : this.xPrev,
+                               y = (this._wdw || !this.skipY) ? this.getY() : this.yPrev,
+                               yDif = y - this.yPrev,
+                               xDif = x - this.xPrev;
+
+                       //note: iOS has a bug that throws off the scroll by several pixels, so we need to check if it's within 7 pixels of the previous one that we set instead of just looking for an exact match.
+                       if (!this.skipX && (xDif > 7 || xDif < -7)) {
+                               this.skipX = true; //if the user scrolls separately, we should stop tweening!
+                               this._checkAutoKill();
+                       }
+                       if (!this.skipY && (yDif > 7 || yDif < -7)) {
+                               this.skipY = true; //if the user scrolls separately, we should stop tweening!
+                               this._checkAutoKill();
+                       }
+                       if (this._wdw) {
+                               _window.scrollTo((!this.skipX) ? this.x : x, (!this.skipY) ? this.y : y);
+                       } else {
+                               if (!this.skipY) {
+                                       this._target.scrollTop = this.y;
+                               }
+                               if (!this.skipX) {
+                                       this._target.scrollLeft = this.x;
+                               }
+                       }
+                       this.xPrev = this.x;
+                       this.yPrev = this.y;
+               };
+               
+               TweenPlugin.activate([ScrollToPlugin]);
+               
+               return ScrollToPlugin;
+               
+       }, true);
+
+}); if (window._gsDefine) { _gsQueue.pop()(); }
\ No newline at end of file
diff --git a/CubeIT/js/gsap/plugins/TEMPLATE_Plugin.js b/CubeIT/js/gsap/plugins/TEMPLATE_Plugin.js
new file mode 100644 (file)
index 0000000..ea78f21
--- /dev/null
@@ -0,0 +1,84 @@
+/**
+ * VERSION: 1.0
+ * DATE: 2012-08-22
+ * JavaScript 
+ * UPDATES AND DOCS AT: http://www.greensock.com
+ * 
+ * This file is to be used as a simple template for writing your own plugin. See the 
+ * notes at http://api.greensock.com/js/com/greensock/plugins/TweenPlugin.html for more details.
+ *
+ * You can start by doing a search for "MyCustomProperty" and replace it with whatever the name
+ * of your property is. Note that the plugin name itself is typically capitalized by convention 
+ * but the name of the property itself isn't. MyCustomPropertyPlugin vs. myCustomProperty.
+ *
+ * @license Copyright (c) 2008-2013, GreenSock. All rights reserved.
+ * This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for 
+ * Club GreenSock members, the software agreement that was issued with your membership.
+ * 
+ * @author: Jack Doyle, jack@greensock.com
+ **/
+(window._gsQueue || (window._gsQueue = [])).push( function() {
+       //ignore the line above this and at the very end - those are for ensuring things load in the proper order
+       
+       //Replace "MyCustomPropertyPlugin" with whatever your property is, like "ScalePlugin" or "TintPlugin". 
+       _gsDefine("plugins.MyCustomPropertyPlugin", ["plugins.TweenPlugin"], function(TweenPlugin) {
+               
+               var MyCustomPropertyPlugin = function(props, priority) {
+                               //"myCustomProperty" is the name of the property that will get intercepted and handled by this plugin (obviously change it to whatever you want, typically it is camelCase starting with lowercase). The 0 parameter determines the priority in the rendering pipeline (0 by default). A priority of -1 would mean this plugin will run after all those with 0 or greater. A priority of 1 would get run before 0, etc. This only matters when a plugin relies on other plugins finishing their work before it runs (or visa-versa)
+                               TweenPlugin.call(this, "myCustomProperty", 0);
+                       },
+                       p = MyCustomPropertyPlugin.prototype = new TweenPlugin("myCustomProperty", 0);
+               
+               p.constructor = MyCustomPropertyPlugin;
+               MyCustomPropertyPlugin.API = 2; //the API should stay 2 - it just gives us a way to know the method/property structure so that if in the future we change to a different TweenPlugin architecture, we can identify this plugin's structure.
+               
+               /*
+                * _onInitTween() is where everything begins - it called when the tween first instantiates (right before its first render) and it receives 3 parameters:
+                *   1) target [object] - the target of the tween. In cases where the tween's original target is an array (or jQuery object), this target will be the individual object inside that array (a new plugin instance is created for each target in the array). For example, TweenLite.to([obj1, obj2, obj3], 1, {x:100}) the target will be obj1 or obj2 or obj3 rather than the array containing them. 
+                *   2) value [*] - whatever value is passed as the special property value. For example, TweenLite.to(element, 1, {myCustomProperty:3}) the value would be 3. Or for TewenLite.to(element, 1, {myCustomProperty:{subProp1:3, subProp2:"whatever"}});, value would be {subProp1:3, subProp2:"whatever"}.
+                *   3) tween [TweenLite] - the TweenLite (or TweenMax) instance that is managing this plugin instance. This can be useful if you need to check certain state-related properties on the tween (maybe in the setRatio() method) like its duration or time. Most of the time, however, you don't need to do anything with the tween. It is provided just in case you want to reference it. 
+                * 
+                * _onInitTween() should return true unless you want to have TweenLite/Max skip the plugin altogether and instead treat the property/value like a normal tween (as if the plugin wasn't activated). This is rarely useful, so you should almost always return true.
+                */
+               p._onInitTween = function(target, value, tween) {
+                       this._target = target; //we record the target so that we can refer to it in the setRatio() method when doing updates.
+                       
+                       /* Next, we create a property tween for "scaleX" and "scaleY" properties of our target 
+                        * (we're just using them as a examples of how to set up a property tween with a name, start, and end value).
+                        * the _addTween() method accepts the following parameters:
+                        *   1) target [object] - target object whose property this tween will control.
+                        *   2) property [string] - the name of the property, like "scaleX" or "scaleY"
+                        *   3) start [number] - The starting value of the property. For example, if you're tweening from 0 to 100, start would be 0. 
+                        *   4) end [number] - the ending value of the property. For example, if you're tweening from 0 to 100, end would be 100.
+                        *   5) overwriteProperty [string] - the name that gets registered as the overwrite property so that if another concurrent tween of the same target gets created and it is tweening a property with this name, this one will be overwritten. Typically this is the same as "property".
+                        *   6) round [boolean] - if true, the updated value on each update will be rounded to the nearest integer. [false by default]
+                        * You do NOT need to use _addTween() at all. It is merely a convenience. You can record your own values internally or whatever you want.
+                        */  
+                       this._addTween(target, "scaleX", target.scaleX, value, "scaleX", false); 
+                       this._addTween(target, "scaleY", target.scaleY, value, "scaleY", false);
+                       
+                       //now, just for kicks, we'll record the starting "alpha" value and amount of change so that we can manage this manually rather than _addTween() (again, totally fictitious, just for an example)
+                       this._alphaStart = target.alpha;
+                       this._alphaChange = value.alpha - target.alpha;
+                       
+                       //always return true unless we want to scrap the plugin and have the value treated as a normal property tween (very uncommon)
+                       return true;
+               }
+               
+               //gets called every time the tween updates, passing the new ratio (typically a value between 0 and 1, but not always (for example, if an Elastic.easeOut is used, the value can jump above 1 mid-tween). It will always start and 0 and end at 1.
+               p.setRatio = function(ratio) {
+                       
+                       //since we used _addTween() inside _onInitTween(), it created some property tweens that we'll update by calling the TweenPlugin prototype's setRatio() (otherwise, the property tweens wouldn't get their values updated).
+                       TweenPlugin.prototype.setRatio.call(this, ratio);
+                       
+                       //now manually set the alpha
+                       this._target.alpha = this._alphaStart + this._alphaChange * ratio;
+               }
+               
+               TweenPlugin.activate([MyCustomPropertyPlugin]);
+               return MyCustomPropertyPlugin;
+               
+               //no need to change anything after this point...
+       }, true);
+
+}); if (window._gsDefine) { _gsQueue.pop()(); }
\ No newline at end of file
diff --git a/CubeIT/js/htable.js b/CubeIT/js/htable.js
new file mode 100644 (file)
index 0000000..f1cf5af
--- /dev/null
@@ -0,0 +1,92 @@
+(function ($) {
+    function JQhtable(element) {
+        this.element = element;
+        this.init();
+    }
+
+    JQhtable.prototype = {
+        init: function () {
+            var $this = this;
+            this.th = [];
+            this.element.find('th').each(function () {
+                $this.th.push($(this).html());
+            });
+            this.data = [];
+            this.element.find('tbody').find('tr').each(function () {
+                var line = [];
+                $(this).find('td').each(function () {
+                    line.push($(this).html());
+                });
+                $this.data.push(line);
+            });
+
+            var a = this.element.attr();
+            var newelement = $('<div />');
+            $(newelement).attr(a).removeClass('htable');
+            this.element.replaceWith($(newelement));
+            this.element = $(newelement);
+
+            $(window).on('cubeitresize', function () {
+                $this.refresh();
+            });
+
+            this.refresh();
+        },
+        refresh: function () {
+            this.element.html('');
+            var lineContainer = $('<div class="tr" />');
+            this.element.append(lineContainer);
+            var h = this.newLine(lineContainer);
+            var hoffset = $(h).offset();
+
+            for (k in this.data) {
+                var line = this.data[k];
+                var col = this.addCol(line, lineContainer);
+                var coffset = $(col).offset();
+
+                if (coffset.top != hoffset.top) {
+                    lineContainer = $('<div class="tr" />');
+                    this.element.append(lineContainer);
+                    h = this.newLine(lineContainer);
+                    $(col).insertAfter($(h));
+                    hoffset = $(h).offset();
+                }
+            }
+        },
+        newLine: function (container) {
+            var h = $('<div class="th" />');
+            for (k in this.th) {
+                var col = this.th[k];
+                $(h).append('<div>' + col + '</div>');
+            }
+
+            $(container).append(h);
+            return h;
+        },
+        addCol: function (c, container) {
+            var d = $('<div class="td" />');
+            for (k in c) {
+                var col = c[k];
+                $(d).append('<div>' + col + '</div>');
+            }
+
+            $(container).append(d);
+            return d;
+        }
+    };
+
+    jQuery.fn.htable = function () {
+        return this.each(function () {
+            var $this = $(this);
+            if ($(this).data('htable') === undefined) {
+                $(this).data('htable', new JQhtable($this));
+            }
+        })
+    };
+})(jQuery);
+
+registerLoader(load_htable);
+
+function load_htable() {
+    $(".htable").htable();
+}
\ No newline at end of file
diff --git a/CubeIT/js/ie/backgroundsize.htc b/CubeIT/js/ie/backgroundsize.htc
new file mode 100644 (file)
index 0000000..0ea08af
--- /dev/null
@@ -0,0 +1,282 @@
+<component lightWeight="true">
+<attach event="onpropertychange" onevent="handlePropertychange()" />
+<attach event="ondetach" onevent="restore()" />
+<attach event="onresize" for="window" onevent="handleResize()" />
+<script type="text/javascript">
+
+var rsrc = /url\(["']?(.*?)["']?\)/,
+               positions = {
+       top: 0,
+       left: 0,
+       bottom: 1,
+       right: 1,
+       center: .5
+},
+doc = element.document;
+
+init();
+
+// remove the background-image and emulate it with a wrapped <img/>
+function init() {
+       var wrapper = doc.createElement("div"),
+                       img = doc.createElement("img"),
+                       expando,
+                       pos;
+
+       wrapper.style.position = "absolute";
+       wrapper.style.zIndex = -1;
+       wrapper.style.top = 0;
+       wrapper.style.right = 0;
+       wrapper.style.left = 0;
+       wrapper.style.bottom = 0;
+       wrapper.style.overflow = "hidden";
+
+       img.alt = "";
+       img.style.position = "absolute";
+       img.style.width = img.style.width = "auto";
+
+       wrapper.appendChild(img);
+
+       element.insertBefore(wrapper, element.firstChild);
+
+       pos = [
+               element.currentStyle.backgroundPositionX,
+               element.currentStyle.backgroundPositionY
+       ];
+
+// save useful data for quick access
+       element.bgsExpando = expando = {
+               wrapper: wrapper,
+               img: img,
+               backgroundSize: element.currentStyle['background-size'],
+// Only keywords or percentage values are supported
+               backgroundPositionX: positions[ pos[0] ] || parseFloat(pos[0]) / 100,
+               backgroundPositionY: positions[ pos[1] ] || parseFloat(pos[1]) / 100
+       };
+
+// This is the part where we mess with the existing DOM
+// to make sure that the background image is correctly zIndexed
+       if (element.currentStyle.zIndex == "auto") {
+               element.style.zIndex = 0;
+       }
+       if (element.currentStyle.position == "static") {
+               element.style.position = "relative";
+       }
+
+       if (refreshDisplay(element, expando)) {
+               refreshDimensions(element, expando);
+               refreshBackgroundImage(element, expando, function() {
+                       updateBackground(element, expando);
+               });
+       }
+}
+
+function refreshDisplay(element, expando) {
+       var display = element.currentStyle.display;
+
+       if (display != expando.display) {
+               expando.display = display;
+               expando.somethingChanged = true;
+       }
+
+       return display != "none";
+}
+
+function refreshDimensions(element, expando) {
+       var innerWidth = element.offsetWidth
+                       - (parseFloat(element.currentStyle.borderLeftWidth) || 0)
+                       - (parseFloat(element.currentStyle.borderRightWidth) || 0),
+                       innerHeight = element.offsetHeight
+                       - (parseFloat(element.currentStyle.borderTopWidth) || 0)
+                       - (parseFloat(element.currentStyle.borderBottomWidth) || 0);
+
+       if (innerWidth != expando.innerWidth || innerHeight != expando.innerHeight) {
+               expando.innerWidth = innerWidth;
+               expando.innerHeight = innerHeight;
+               expando.somethingChanged = true;
+       }
+}
+
+function refreshBackgroundImage(element, expando, callback) {
+       var img = expando.img,
+                       src = (rsrc.exec(element.currentStyle.backgroundImage) || [])[1];
+
+       if (src && src != expando.backgroundSrc) {
+               expando.backgroundSrc = src;
+               expando.somethingChanged = true;
+
+               img.onload = function() {
+                       var width = img.width,
+                                       height = img.height;
+
+// ignore onload on the proxy image
+                       if (width == 1 && height == 1) {
+                               return;
+                       }
+
+                       expando.imgWidth = width;
+                       expando.imgHeight = height;
+                       expando.constrain = false;
+
+                       callback();
+
+                       img.style.visibility = "visible";
+                       img.onload = null;
+               };
+
+               img.style.visibility = "hidden";
+               img.src = expando.backgroundSrc;
+
+// force onload execution
+               if (img.readyState || img.complete) {
+                       img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
+                       img.src = expando.backgroundSrc;
+               }
+
+               expando.ignoreNextPropertyChange = true;
+               element.style.backgroundImage = "none";
+
+       } else {
+// the callback should be exacuted in all cases
+               callback();
+       }
+}
+
+function updateBackground(element, expando) {
+       if (!expando.somethingChanged) {
+               return;
+       }
+
+       var img = expando.img,
+                       elemRatio = expando.innerWidth / expando.innerHeight,
+                       imgRatio = expando.imgWidth / expando.imgHeight,
+                       prevConstrain = expando.constrain,
+                       curConstrain,
+                       delta;
+
+       if (expando.backgroundSize == "contain") {
+               if (imgRatio > elemRatio) {
+                       expando.constrain = curConstrain = "width";
+
+                       delta = Math.floor(
+                                       (expando.innerHeight - expando.innerWidth / imgRatio)
+                                       * expando.backgroundPositionY
+                                       );
+
+                       img.style.top = delta + "px";
+
+// when switching from height to width constraint,
+// make sure to release constraint on height and reset left
+                       if (curConstrain != prevConstrain) {
+                               img.style.width = "100%";
+                               img.style.height = "auto";
+                               img.style.left = 0;
+                       }
+
+// elemRatio > imgRatio
+               } else {
+                       expando.constrain = curConstrain = "height";
+
+                       delta = Math.floor(
+                                       (expando.innerWidth - expando.innerHeight * imgRatio)
+                                       * expando.backgroundPositionX
+                                       );
+
+                       img.style.left = delta + "px";
+
+                       if (curConstrain != prevConstrain) {
+                               img.style.width = "auto";
+                               img.style.height = "100%";
+                               img.style.top = 0;
+                       }
+               }
+
+       } else if (expando.backgroundSize == "cover") {
+               if (imgRatio > elemRatio) {
+                       expando.constrain = curConstrain = "height";
+
+                       delta = Math.floor(
+                                       (expando.innerHeight * imgRatio - expando.innerWidth)
+                                       * expando.backgroundPositionX
+                                       );
+
+                       img.style.left = -delta + "px";
+
+// when switching from height to width constraint,
+// make sure to release constraint on height and reset left
+                       if (curConstrain != prevConstrain) {
+                               img.style.width = "auto";
+                               img.style.height = "100%";
+                               img.style.top = 0;
+                       }
+
+// elemRatio > imgRatio
+               } else {
+                       expando.constrain = curConstrain = "width";
+
+                       delta = Math.floor(
+                                       (expando.innerWidth / imgRatio - expando.innerHeight)
+                                       * expando.backgroundPositionY
+                                       );
+
+                       img.style.top = -delta + "px";
+
+                       if (curConstrain != prevConstrain) {
+                               img.style.width = "100%";
+                               img.style.height = "auto";
+                               img.style.left = 0;
+                       }
+               }
+       } else {
+               var e = expando.backgroundSize.split(' ');
+               img.style.width = e[0];
+               img.style.height = e[1];
+               img.style.left = expando.backgroundPositionX;
+               img.style.top = expando.backgroundPositionY;
+       }
+
+       expando.somethingChanged = false;
+}
+
+// handle different style changes
+function handlePropertychange() {
+       var expando = element.bgsExpando;
+
+// this prevents handling propertychange events caused by this script
+// TODO: make it reliable
+       if (expando.ignoreNextPropertyChange) {
+               expando.ignoreNextPropertyChange = false;
+               return;
+       }
+
+       if (refreshDisplay(element, expando)) {
+               refreshDimensions(element, expando);
+               refreshBackgroundImage(element, expando, function() {
+                       updateBackground(element, expando);
+               });
+       }
+}
+
+function handleResize() {
+// TODO: throttle resize events
+
+       var expando = element.bgsExpando;
+
+       if (expando.display != "none") {
+               refreshDimensions(element, expando);
+               updateBackground(element, expando);
+       }
+}
+
+function restore() {
+       var expando = element.bgsExpando;
+
+       try {
+               element.style.backgroundImage = "url('" + expando.backgroundSrc + "')";
+               element.removeChild(expando.wrapper);
+               element.bgsExpando = null;
+       } catch (e) {
+       }
+}
+
+</script>
\ No newline at end of file
diff --git a/CubeIT/js/ie/backgroundsize.js b/CubeIT/js/ie/backgroundsize.js
new file mode 100644 (file)
index 0000000..039e454
--- /dev/null
@@ -0,0 +1,272 @@
+var rsrc = /url\(["']?(.*?)["']?\)/,
+               positions = {
+       top: 0,
+       left: 0,
+       bottom: 1,
+       right: 1,
+       center: .5
+},
+doc = element.document;
+
+init();
+
+// remove the background-image and emulate it with a wrapped <img/>
+function init() {
+       var wrapper = doc.createElement("div"),
+                       img = doc.createElement("img"),
+                       expando,
+                       pos;
+
+       wrapper.style.position = "absolute";
+       wrapper.style.zIndex = -1;
+       wrapper.style.top = 0;
+       wrapper.style.right = 0;
+       wrapper.style.left = 0;
+       wrapper.style.bottom = 0;
+       wrapper.style.overflow = "hidden";
+
+       img.alt = "";
+       img.style.position = "absolute";
+       img.style.width = img.style.width = "auto";
+
+       wrapper.appendChild(img);
+
+       element.insertBefore(wrapper, element.firstChild);
+
+       pos = [
+               element.currentStyle.backgroundPositionX,
+               element.currentStyle.backgroundPositionY
+       ];
+
+// save useful data for quick access
+       element.bgsExpando = expando = {
+               wrapper: wrapper,
+               img: img,
+               backgroundSize: element.currentStyle['background-size'],
+// Only keywords or percentage values are supported
+               backgroundPositionX: positions[ pos[0] ] || parseFloat(pos[0]) / 100,
+               backgroundPositionY: positions[ pos[1] ] || parseFloat(pos[1]) / 100
+       };
+
+// This is the part where we mess with the existing DOM
+// to make sure that the background image is correctly zIndexed
+       if (element.currentStyle.zIndex == "auto") {
+               element.style.zIndex = 0;
+       }
+       if (element.currentStyle.position == "static") {
+               element.style.position = "relative";
+       }
+
+       if (refreshDisplay(element, expando)) {
+               refreshDimensions(element, expando);
+               refreshBackgroundImage(element, expando, function() {
+                       updateBackground(element, expando);
+               });
+       }
+}
+
+function refreshDisplay(element, expando) {
+       var display = element.currentStyle.display;
+
+       if (display != expando.display) {
+               expando.display = display;
+               expando.somethingChanged = true;
+       }
+
+       return display != "none";
+}
+
+function refreshDimensions(element, expando) {
+       var innerWidth = element.offsetWidth
+                       - (parseFloat(element.currentStyle.borderLeftWidth) || 0)
+                       - (parseFloat(element.currentStyle.borderRightWidth) || 0),
+                       innerHeight = element.offsetHeight
+                       - (parseFloat(element.currentStyle.borderTopWidth) || 0)
+                       - (parseFloat(element.currentStyle.borderBottomWidth) || 0);
+
+       if (innerWidth != expando.innerWidth || innerHeight != expando.innerHeight) {
+               expando.innerWidth = innerWidth;
+               expando.innerHeight = innerHeight;
+               expando.somethingChanged = true;
+       }
+}
+
+function refreshBackgroundImage(element, expando, callback) {
+       var img = expando.img,
+                       src = (rsrc.exec(element.currentStyle.backgroundImage) || [])[1];
+
+       if (src && src != expando.backgroundSrc) {
+               expando.backgroundSrc = src;
+               expando.somethingChanged = true;
+
+               img.onload = function() {
+                       var width = img.width,
+                                       height = img.height;
+
+// ignore onload on the proxy image
+                       if (width == 1 && height == 1) {
+                               return;
+                       }
+
+                       expando.imgWidth = width;
+                       expando.imgHeight = height;
+                       expando.constrain = false;
+
+                       callback();
+
+                       img.style.visibility = "visible";
+                       img.onload = null;
+               };
+
+               img.style.visibility = "hidden";
+               img.src = expando.backgroundSrc;
+
+// force onload execution
+               if (img.readyState || img.complete) {
+                       img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
+                       img.src = expando.backgroundSrc;
+               }
+
+               expando.ignoreNextPropertyChange = true;
+               element.style.backgroundImage = "none";
+
+       } else {
+// the callback should be exacuted in all cases
+               callback();
+       }
+}
+
+function updateBackground(element, expando) {
+       if (!expando.somethingChanged) {
+               return;
+       }
+
+       var img = expando.img,
+                       elemRatio = expando.innerWidth / expando.innerHeight,
+                       imgRatio = expando.imgWidth / expando.imgHeight,
+                       prevConstrain = expando.constrain,
+                       curConstrain,
+                       delta;
+
+       if (expando.backgroundSize == "contain") {
+               if (imgRatio > elemRatio) {
+                       expando.constrain = curConstrain = "width";
+
+                       delta = Math.floor(
+                                       (expando.innerHeight - expando.innerWidth / imgRatio)
+                                       * expando.backgroundPositionY
+                                       );
+
+                       img.style.top = delta + "px";
+
+// when switching from height to width constraint,
+// make sure to release constraint on height and reset left
+                       if (curConstrain != prevConstrain) {
+                               img.style.width = "100%";
+                               img.style.height = "auto";
+                               img.style.left = 0;
+                       }
+
+// elemRatio > imgRatio
+               } else {
+                       expando.constrain = curConstrain = "height";
+
+                       delta = Math.floor(
+                                       (expando.innerWidth - expando.innerHeight * imgRatio)
+                                       * expando.backgroundPositionX
+                                       );
+
+                       img.style.left = delta + "px";
+
+                       if (curConstrain != prevConstrain) {
+                               img.style.width = "auto";
+                               img.style.height = "100%";
+                               img.style.top = 0;
+                       }
+               }
+
+       } else if (expando.backgroundSize == "cover") {
+               if (imgRatio > elemRatio) {
+                       expando.constrain = curConstrain = "height";
+
+                       delta = Math.floor(
+                                       (expando.innerHeight * imgRatio - expando.innerWidth)
+                                       * expando.backgroundPositionX
+                                       );
+
+                       img.style.left = -delta + "px";
+
+// when switching from height to width constraint,
+// make sure to release constraint on height and reset left
+                       if (curConstrain != prevConstrain) {
+                               img.style.width = "auto";
+                               img.style.height = "100%";
+                               img.style.top = 0;
+                       }
+
+// elemRatio > imgRatio
+               } else {
+                       expando.constrain = curConstrain = "width";
+
+                       delta = Math.floor(
+                                       (expando.innerWidth / imgRatio - expando.innerHeight)
+                                       * expando.backgroundPositionY
+                                       );
+
+                       img.style.top = -delta + "px";
+
+                       if (curConstrain != prevConstrain) {
+                               img.style.width = "100%";
+                               img.style.height = "auto";
+                               img.style.left = 0;
+                       }
+               }
+       } else {
+               var e = expando.backgroundSize.split(' ');
+               image.style.width = e[0];
+               image.style.height = e[1];
+       }
+
+       expando.somethingChanged = false;
+}
+
+// handle different style changes
+function handlePropertychange() {
+       var expando = element.bgsExpando;
+
+// this prevents handling propertychange events caused by this script
+// TODO: make it reliable
+       if (expando.ignoreNextPropertyChange) {
+               expando.ignoreNextPropertyChange = false;
+               return;
+       }
+
+       if (refreshDisplay(element, expando)) {
+               refreshDimensions(element, expando);
+               refreshBackgroundImage(element, expando, function() {
+                       updateBackground(element, expando);
+               });
+       }
+}
+
+function handleResize() {
+// TODO: throttle resize events
+
+       var expando = element.bgsExpando;
+
+       if (expando.display != "none") {
+               refreshDimensions(element, expando);
+               updateBackground(element, expando);
+       }
+}
+
+function restore() {
+       var expando = element.bgsExpando;
+
+       try {
+               element.style.backgroundImage = "url('" + expando.backgroundSrc + "')";
+               element.removeChild(expando.wrapper);
+               element.bgsExpando = null;
+       } catch (e) {
+       }
+}
\ No newline at end of file
diff --git a/CubeIT/js/ie6.js b/CubeIT/js/ie6.js
new file mode 100644 (file)
index 0000000..8845507
--- /dev/null
@@ -0,0 +1 @@
+IE = 6;
diff --git a/CubeIT/js/ie7.js b/CubeIT/js/ie7.js
new file mode 100644 (file)
index 0000000..61f0d1a
--- /dev/null
@@ -0,0 +1 @@
+IE=7;
\ No newline at end of file
diff --git a/CubeIT/js/ie8.js b/CubeIT/js/ie8.js
new file mode 100644 (file)
index 0000000..e3527a2
--- /dev/null
@@ -0,0 +1,11 @@
+IE = 8;
+
+try {
+       [].indexOf || (Array.prototype.indexOf = function(a, b, c) {
+               for (c = this.length, b = (c + ~~b) % c; b < c && (!(b in this) || this[b] !== a); b++) {
+                       return b ^ c ? b : -1;
+               }
+       });
+} catch (err) {
+
+}
diff --git a/CubeIT/js/ie9.js b/CubeIT/js/ie9.js
new file mode 100644 (file)
index 0000000..afea620
--- /dev/null
@@ -0,0 +1 @@
+IE = 9;
\ No newline at end of file
diff --git a/CubeIT/js/imageRollover.js b/CubeIT/js/imageRollover.js
new file mode 100644 (file)
index 0000000..f1da800
--- /dev/null
@@ -0,0 +1,48 @@
+(function ($) {
+    function JQimageRollover(element) {
+        this.element = element;
+        this.init();
+    }
+
+    JQimageRollover.prototype = {
+        init: function () {
+            var $this = this;
+            var img = new Image();
+            img.src = this.element.data('hover');
+            this.element.data('src', this.element.attr('src'));
+            var mouseElement = this.element;
+            if (this.element.parents('a')) {
+                mouseElement = this.element.parents('a:eq(0)');
+            }
+
+            mouseElement.on('mouseenter', function () {
+                $this.element.attr({
+                    width: '',
+                    height: '',
+                    src: $this.element.data('hover')
+                });
+
+            });
+            mouseElement.on('mouseleave', function () {
+                $this.element.attr({
+                    src: $this.element.data('src')
+                });
+            });
+
+        }
+    };
+
+    jQuery.fn.imageRollover = function () {
+        return this.each(function () {
+            var $this = $(this);
+            if ($(this).data('imageRollover') === undefined) {
+                $(this).data('imageRollover', new JQimageRollover($this));
+            }
+        })
+    };
+})(jQuery);
+
+registerLoader(function () {
+    $('img[data-hover]').imageRollover();
+});
+
diff --git a/CubeIT/js/imagedropper.js b/CubeIT/js/imagedropper.js
new file mode 100644 (file)
index 0000000..b0d717e
--- /dev/null
@@ -0,0 +1,201 @@
+(function($){
+       function ImageDropper(fm,options){
+               var defaultOptions={
+                       method:'POST',
+                       callback:undefined,
+                       url:''
+               };
+               options=$.extend(true,defaultOptions,options);
+               
+               this.$fm=fm;
+               this.fm=fm.get(0);
+               this.files=[];
+               this.index=0;
+               this.query='';
+               this.boundary = '------multipartformboundary' + (new Date).getTime();
+               this.dashdash = '--';
+               this.crlf     = "\r\n";
+               this.filesContent ='';
+               this.uploading=false;
+               this.options=options;
+               this.point={x:0,y:0};
+               this.target=null;
+               
+               this.init();
+       }
+       
+       ImageDropper.prototype={
+               init:function(){
+                       if(this.$fm.attr('data-imagedropper')=='1'){
+                               return;
+                       }
+                       
+                       var $this=this;
+                       
+                       this.fm.fileManager=this;
+                       $(this.fm).bind('dragenter',function(e){
+                               e.stopPropagation();  
+                               e.preventDefault(); 
+                               $(this).addClass('drop');
+                               
+                       });
+                       $(this.fm).bind('dragover',function(e){
+                               $(e.target).addClass('dragover');
+                               e.stopPropagation();  
+                               e.preventDefault(); 
+                       });
+                       $(this.fm).bind('dragleave',function(e){
+                               $(e.target).removeClass('dragover');
+                               e.stopPropagation();  
+                               e.preventDefault(); 
+                               $(this).removeClass('drop');
+                       });
+                       this.fm.addEventListener('drop',function(e){
+                               $this.onDrop(e);
+                       });
+                       
+                       this.$fm.attr('data-imagedropper','1');
+               },
+               
+               onDrop:function(e){
+                       e.preventDefault();
+                       e.stopPropagation();
+                       
+                       if(this.uploading){
+                               return;
+                       }
+                       
+                       this.files=e.dataTransfer.files;
+                       this.index=0;
+                       this.filesContent='';
+                       this.point.x=e.pageX;
+                       this.point.y=e.pageY;
+                       this.target=e.target;
+       
+                       if(window.FormData==undefined){
+                               this.handleFile();
+                               return;
+                       }else{
+                               this.sendFormDatas();
+                               return;
+                       }
+               },
+               
+               sendFormDatas:function(){
+                       var formdata=new FormData();
+                       for(var i=0;i<this.files.length;i++){
+                               formdata.append('file[]',this.files[i]);
+                       }
+                       var xhr=this.getXHR(false);
+                       xhr.send(formdata);
+               },
+
+               handleFile:function(){
+                       this.uploading=true;
+                       var $this=this;
+                       var file = this.files[this.index];
+                       
+                       var reader = new FileReader();
+                       reader.onload=function(e){
+                               $this.readerLoaded(e);
+                       };
+                       try{
+                               reader.readAsBinaryString(file);
+                       }catch(err){
+                               $this.uploading=false;
+                       }
+               },
+               
+               readerLoaded:function(e){
+                       var file=this.files[this.index];
+       
+                       var f='';
+                       /* Generate headers. */            
+                       f += 'Content-Disposition: form-data; name="file[]"';
+                       if (file.name) {
+                               f += '; filename="' + file.name + '"';
+                       }
+                       f += this.crlf;
+
+                       f += 'Content-Type: '+file.type;
+                       f += this.crlf;
+                       f += this.crlf; 
+
+                       /* Append binary data. */
+                       f += e.target.result;
+                       f +=this.crlf;
+
+                       /* Write boundary. */
+                       f += this.dashdash;
+                       f += this.boundary;
+                       f += this.crlf;
+                       this.filesContent+=f;
+                       
+                       this.index++;
+
+                       if(this.index<this.files.length){
+                               return this.handleFile();
+                       }
+                       return this.sendFiles();
+               },
+               
+               sendFiles:function(){
+                       var $this=this;
+       
+                       /* Build RFC2388 string. */
+                       this.query = '';
+
+                       this.query += this.dashdash;
+                       this.query += this.boundary;
+                       this.query += this.crlf;
+    
+                       this.query+=this.filesContent;
+    
+                       /* Mark end of the request. */
+                       this.query+= 'Content-Disposition: form-data; name="dummy"';
+                       this.query += this.crlf;
+                       this.query += this.crlf;
+                       this.query += 'dummy';
+                       this.query += this.crlf;
+                       this.query += this.dashdash;
+                       this.query += this.boundary;
+                       this.query += this.dashdash;
+                       this.query += this.crlf;
+       
+                       var xhr=this.getXHR(true);
+                       xhr.sendAsBinary(this.query);
+                       
+               },
+               
+               getXHR:function(setContentType){
+                       var $this=this;
+                       var xhr=new XMLHttpRequest();
+                       xhr.open(this.options.method,this.options.url);
+                       if(setContentType){
+                               xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + this.boundary);
+                       }
+                       xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+                       xhr.onload=function(){
+                               $this.uploading=false;
+                               if($this.options.callback!=undefined){
+                                       $this.options.callback(eval('('+xhr.responseText+')'),$this.point,$this.target);
+                               }
+                               hideLoader();
+                       };
+                       displayLoader();
+                       return xhr;
+               }
+       };
+       
+       jQuery.fn.ImageDropper=function(options){
+               if(!Modernizr.draganddrop || (window.FileReader==undefined && window.FormData==undefined)){
+                       return [];
+               }
+               
+               return this.each(function(){
+                       var $this=$(this);
+                       var fm=new ImageDropper($this,options);
+               });
+       }
+})(jQuery);
+
diff --git a/CubeIT/js/index.html b/CubeIT/js/index.html
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/CubeIT/js/inputNumber.js b/CubeIT/js/inputNumber.js
new file mode 100644 (file)
index 0000000..dcba7ee
--- /dev/null
@@ -0,0 +1,103 @@
+(function ($) {
+    function JQinputNumber(element) {
+        this.element = element;
+        this.positive = false;
+        this.integer = false;
+        this.step = 1;
+        this.inited = false;
+
+        var istep = parseFloat(this.element.attr('step'));
+        this.min = undefined !== this.element.attr('min') ? parseFloat(this.element.attr('min')) : Number.NEGATIVE_INFINITY;
+        this.max = undefined !== this.element.attr('max') ? parseFloat(this.element.attr('max')) : Number.POSITIVE_INFINITY;
+        this.errorMax = this.element.data('max-error');
+
+        this.integer = (!isNaN(istep) && istep % 1 === 0);
+        this.positive = (this.min > 0);
+
+        if (!isNaN(istep)) {
+            this.step = istep;
+        }
+        this.init();
+    }
+
+    JQinputNumber.prototype = {
+        init: function () {
+            var $this = this;
+
+            this.element.attr('novalidate', 'novalidate');
+            this.element.prop('type', 'text');
+            this.element.wrap('<div class="cubeit-input-number"></div>');
+            this.wrapper = this.element.parent('.cubeit-input-number');
+            this.wrapper.prepend('<a href="#" class="minus">-</a>');
+            this.wrapper.append('<a href="#" class="plus">+</a>');
+
+
+            this.wrapper.on('click', 'a', function () {
+                if ($(this).hasClass('minus')) {
+                    $this.increment(-1 * $this.step);
+                } else if ($(this).hasClass('plus')) {
+                    $this.increment($this.step);
+                }
+                return false;
+            });
+
+            this.element.on('change', function () {
+                $this.element.val($this.normalize());
+                this.wrapper.trigger('change');
+            });
+
+            this.element.val(this.normalize());
+            this.inited = true;
+        },
+        normalize: function (v) {
+            var origV;
+            if (v === undefined) {
+                v = this.element.val();
+            }
+            if (typeof v !== "number") {
+
+                if (this.integer) {
+                    v = parseInt(v);
+                } else {
+                    v = parseFloat(v);
+                }
+
+            }
+            if (isNaN(v)) {
+                v = 0;
+            }
+            origV = v;
+            v = Math.max(v, this.min);
+            v = Math.min(v, this.max);
+            v = Math.round(v / this.step) * this.step;
+            if (v < origV && this.errorMax !== null) {
+                alert(this.errorMax);
+            }
+            return v;
+        },
+        increment: function (i) {
+            var v = this.normalize();
+            var v1 = v;
+            v += i;
+            v = this.normalize(v);
+            if (v === v1) {
+                return;
+            }
+            this.element.val(v);
+            this.wrapper.trigger('change');
+        }
+    };
+
+    jQuery.fn.inputNumber = function () {
+        return this.each(function () {
+            var $this = $(this);
+            $(this).data('inputNumber', new JQinputNumber($this));
+        });
+    };
+})(jQuery);
+
+registerLoader(load_input_number);
+
+function load_input_number() {
+    $("input[type='number']").inputNumber();
+}
\ No newline at end of file
diff --git a/CubeIT/js/jquery.paginate.js b/CubeIT/js/jquery.paginate.js
new file mode 100644 (file)
index 0000000..a412447
--- /dev/null
@@ -0,0 +1,274 @@
+
+function paginator_delete(parent){
+       parent.find('.jPag-current').parent().remove();
+       parent.find('._current').remove();
+       var instanceName = parent.attr('id').replace("divPagination_", "divPaginateInstance_");
+
+
+       parent.find('div:first').addClass('_current').fadeIn();
+}
+
+
+(function($) {
+       $.fn.paginate = function(options) {
+               var opts = $.extend({}, $.fn.paginate.defaults, options);
+               return this.each(function() {
+                       $this = $(this);
+                       var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
+                       var selectedpage = o.start;
+                       $.fn.draw(o,$this,selectedpage);
+               });
+       };
+       var outsidewidth_tmp = 0;
+       var insidewidth          = 0;
+       var bName = navigator.appName;
+       var bVer = navigator.appVersion;
+       if(bVer.indexOf('MSIE 7.0') > 0)
+               var ver = "ie7";
+       $.fn.paginate.defaults = {
+               count           : 5,
+               start           : 12,
+               offset                  : 0,
+               border                                  : true,
+               border_color                    : '#fff',
+               text_color                      : '#8cc59d',
+               background_color        : 'black',
+               border_hover_color              : '#fff',
+               text_hover_color                : '#fff',
+               background_hover_color  : '#fff',
+               rotate                          : true,
+               images                                  : true,
+               mouse                                   : 'slide',
+               onChange                                : function(){return false;}
+       };
+       $.fn.draw = function(o,obj,selectedpage){
+               $this.empty();
+               if(o.images){
+                       var spreviousclass      = 'jPag-sprevious-img';
+                       var previousclass       = 'jPag-previous-img';
+                       var snextclass          = 'jPag-snext-img';
+                       var nextclass           = 'jPag-next-img';
+               }
+               else{
+                       var spreviousclass      = 'jPag-sprevious';
+                       var previousclass       = 'jPag-previous';
+                       var snextclass          = 'jPag-snext';
+                       var nextclass           = 'jPag-next';
+               }
+               var _first              = $(document.createElement('a')).addClass('jPag-first').html('<<');
+               var _del                = $(document.createElement('a')).addClass('jPag-last').html('del');
+
+               if(o.rotate){
+                       if(o.images) var _rotleft       = $(document.createElement('span')).addClass(spreviousclass);
+                       else var _rotleft       = $(document.createElement('span')).addClass(spreviousclass).html('&laquo;');
+               }
+
+               var _divwrapleft        = $(document.createElement('div')).addClass('jPag-control-back');
+       //      _divwrapleft.append(_del).append(_first).append(_rotleft);
+               _divwrapleft.append(_first).append(_rotleft);
+
+               var _ulwrapdiv  = $(document.createElement('div')).css('overflow','hidden');
+               var _ul                 = $(document.createElement('ul')).addClass('jPag-pages')
+               var c = (o.display - 1) / 2;
+               var first = selectedpage - c;
+               var selobj;
+               for(var i = 0; i < o.count; i++){
+                       var val = i+1;
+                       var displayValue=val+parseInt(o.offset);
+
+                       if(val == selectedpage){
+                               var _obj = $(document.createElement('li')).html('<span class="jPag-current">'+displayValue+'</span>');
+                               selobj = _obj;
+                               _ul.append(_obj);
+                       }
+                       else{
+                               var _obj = $(document.createElement('li')).html('<a>'+ displayValue +'</a>');
+                               _ul.append(_obj);
+                               }
+               }
+               _ulwrapdiv.append(_ul);
+
+               if(o.rotate){
+                       if(o.images) var _rotright      = $(document.createElement('span')).addClass(snextclass);
+                       else var _rotright      = $(document.createElement('span')).addClass(snextclass).html('&raquo;');
+               }
+
+               var _last               = $(document.createElement('a')).addClass('jPag-last').html('>>>');
+               var _add                = $(document.createElement('a')).addClass('jPag-last').html('add');
+
+               var _divwrapright       = $(document.createElement('div')).addClass('jPag-control-front');
+       //      _divwrapright.append(_rotright).append(_last);
+               _divwrapright.append(_rotright);
+
+               //append all:
+               $this.addClass('jPaginate').append(_divwrapleft).append(_ulwrapdiv).append(_divwrapright);
+
+               if(!o.border){
+                       if(o.background_color == 'none') var a_css                              = {'color':o.text_color};
+                       else var a_css                                                                                  = {'color':o.text_color,'background-color':o.background_color};
+                       if(o.background_hover_color == 'none')  var hover_css   = {'color':o.text_hover_color};
+                       else var hover_css                                                                              = {'color':o.text_hover_color,'background-color':o.background_hover_color};
+               }
+               else{
+                       if(o.background_color == 'none') var a_css                              = {'color':o.text_color,'border':'1px solid '+o.border_color};
+                       else var a_css                                                                                  = {'color':o.text_color,'background-color':o.background_color,'border':'1px solid '+o.border_color};
+                       if(o.background_hover_color == 'none')  var hover_css   = {'color':o.text_hover_color,'border':'1px solid '+o.border_hover_color};
+                       else var hover_css                                                                              = {'color':o.text_hover_color,'background-color':o.background_hover_color,'border':'1px solid '+o.border_hover_color};
+               }
+
+               $.fn.applystyle(o,$this,a_css,hover_css,_first,_ul,_ulwrapdiv,_divwrapright);
+               //calculate width of the ones displayed:
+               var outsidewidth = outsidewidth_tmp - _first.parent().width() -3;
+
+               if(ver == 'ie7'){
+                       _ulwrapdiv.css('width',outsidewidth+72+'px');
+                       _divwrapright.css('left',outsidewidth_tmp+6+72+'px');
+               }
+               else{
+                       _ulwrapdiv.css('width',outsidewidth+'px');
+                       _divwrapright.css('left',outsidewidth_tmp+6+'px');
+               }
+
+               if(o.rotate){
+                       _rotright.hover(
+                               function() {
+                                 thumbs_scroll_interval = setInterval(
+                                       function() {
+                                         var left = _ulwrapdiv.scrollLeft() + 1;
+                                         _ulwrapdiv.scrollLeft(left);
+                                       },
+                                       20
+                                 );
+                               },
+                               function() {
+                                 clearInterval(thumbs_scroll_interval);
+                               }
+                       );
+                       _rotleft.hover(
+                               function() {
+                                 thumbs_scroll_interval = setInterval(
+                                       function() {
+                                         var left = _ulwrapdiv.scrollLeft() - 1;
+                                         _ulwrapdiv.scrollLeft(left);
+                                       },
+                                       20
+                                 );
+                               },
+                               function() {
+                                 clearInterval(thumbs_scroll_interval);
+                               }
+                       );
+                       if(o.mouse == 'press'){
+                               _rotright.mousedown(
+                                       function() {
+                                         thumbs_mouse_interval = setInterval(
+                                               function() {
+                                                 var left = _ulwrapdiv.scrollLeft() + 5;
+                                                 _ulwrapdiv.scrollLeft(left);
+                                               },
+                                               20
+                                         );
+                                       }
+                               ).mouseup(
+                                       function() {
+                                         clearInterval(thumbs_mouse_interval);
+                                       }
+                               );
+                               _rotleft.mousedown(
+                                       function() {
+                                         thumbs_mouse_interval = setInterval(
+                                               function() {
+                                                 var left = _ulwrapdiv.scrollLeft() - 5;
+                                                 _ulwrapdiv.scrollLeft(left);
+                                               },
+                                               20
+                                         );
+                                       }
+                               ).mouseup(
+                                       function() {
+                                         clearInterval(thumbs_mouse_interval);
+
+                                       }
+                               );
+                       }
+                       else{
+                               _rotleft.click(function(e){
+                                       var width = outsidewidth - 10;
+                                       var left = _ulwrapdiv.scrollLeft() - width;
+                                       _ulwrapdiv.animate({scrollLeft: left +'px'});
+                               });
+
+                               _rotright.click(function(e){
+                                       var width = outsidewidth - 10;
+                                       var left = _ulwrapdiv.scrollLeft() + width;
+                                       _ulwrapdiv.animate({scrollLeft: left +'px'});
+                               });
+                       }
+               }
+
+               //first and last:
+               _first.click(function(e){
+                               _ulwrapdiv.animate({scrollLeft: '0px'});
+                               _ulwrapdiv.find('li').eq(0).click();
+               });
+               _last.click(function(e){
+                               _ulwrapdiv.animate({scrollLeft: insidewidth +'px'});
+                               _ulwrapdiv.find('li').eq(o.count - 1).click();
+               });
+               _del.click(function(e){
+                               var parentElt = $(this).parent().parent().parent();
+                               paginator_delete(parentElt);
+               });
+               _add.click(function(e){
+                               var parentElt = $(this).parent().parent().parent();
+                               paginator_add(parentElt);
+               });
+               //click a page
+               _ulwrapdiv.find('li').click(function(e){
+                       selobj.html('<a>'+selobj.find('.jPag-current').html()+'</a>');
+                       var currval = $(this).find('a').html();
+                       $(this).html('<span class="jPag-current">'+currval+'</span>');
+                       selobj = $(this);
+                       $.fn.applystyle(o,$(this).parent().parent().parent(),a_css,hover_css,_first,_ul,_ulwrapdiv,_divwrapright);
+                       var left = (this.offsetLeft) / 2;
+                       var left2 = _ulwrapdiv.scrollLeft() + left;
+                       var tmp = left - (outsidewidth / 2);
+                       if(ver == 'ie7')
+                               _ulwrapdiv.animate({scrollLeft: left + tmp - _first.parent().width() + 52 + 'px'});
+                       else
+                               _ulwrapdiv.animate({scrollLeft: left + tmp - _first.parent().width() + 'px'});
+                       o.onChange(currval);
+               });
+
+               var last = _ulwrapdiv.find('li').eq(o.start-1);
+               last.attr('id','tmp');
+               var left = document.getElementById('tmp').offsetLeft / 2;
+               last.removeAttr('id');
+               var tmp = left - (outsidewidth / 2);
+               if(ver == 'ie7') _ulwrapdiv.animate({scrollLeft: left + tmp - _first.parent().width() + 52 + 'px'});
+               else _ulwrapdiv.animate({scrollLeft: left + tmp - _first.parent().width() + 'px'});
+       }
+
+       $.fn.applystyle = function(o,obj,a_css,hover_css,_first,_ul,_ulwrapdiv,_divwrapright){
+                                       obj.find('a').css(a_css);
+                                       obj.find('span.jPag-current').css(hover_css);
+                                       obj.find('a').hover(
+                                       function(){
+                                               $(this).css(hover_css);
+                                       },
+                                       function(){
+                                               $(this).css(a_css);
+                                       }
+                                       );
+                                       obj.css('padding-left',_first.parent().width() + 5 +'px');
+                                       insidewidth = 0;
+
+                                       obj.find('li').each(function(i,n){
+                                               if(i == (o.display-1)){
+                                                       outsidewidth_tmp = this.offsetLeft + this.offsetWidth ;
+                                               }
+                                               insidewidth += this.offsetWidth;
+                                       })
+                                       _ul.css('width',insidewidth+'px');
+       }
+})(jQuery);
\ No newline at end of file
diff --git a/CubeIT/js/jquery/jquery.backgroundposition.js b/CubeIT/js/jquery/jquery.backgroundposition.js
new file mode 100644 (file)
index 0000000..e59289d
--- /dev/null
@@ -0,0 +1,64 @@
+(function($) {
+       if(!document.defaultView || !document.defaultView.getComputedStyle){ // IE6-IE8
+               var oldCurCSS = jQuery.curCSS;
+               jQuery.curCSS = function(elem, name, force){
+                       if(name === 'background-position'){
+                               name = 'backgroundPosition';
+                       }
+                       if(name !== 'backgroundPosition' || !elem.currentStyle || elem.currentStyle[ name ]){
+                               return oldCurCSS.apply(this, arguments);
+                       }
+                       var style = elem.style;
+                       if ( !force && style && style[ name ] ){
+                               return style[ name ];
+                       }
+                       return oldCurCSS(elem, 'backgroundPositionX', force) +' '+ oldCurCSS(elem, 'backgroundPositionY', force);
+               };
+       }
+
+       var oldAnim = $.fn.animate;
+       $.fn.animate = function(prop){
+               if('background-position' in prop){
+                       prop.backgroundPosition = prop['background-position'];
+                       delete prop['background-position'];
+               }
+               if('backgroundPosition' in prop){
+                       prop.backgroundPosition = '('+ prop.backgroundPosition;
+               }
+               return oldAnim.apply(this, arguments);
+       };
+
+       function toArray(strg){
+               strg = strg.replace(/left|top/g,'0px');
+               strg = strg.replace(/right|bottom/g,'100%');
+               strg = strg.replace(/([0-9\.]+)(\s|\)|$)/g,"$1px$2");
+               var res = strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);
+               return [parseFloat(res[1],10),res[2],parseFloat(res[3],10),res[4]];
+       }
+
+       $.fx.step. backgroundPosition = function(fx) {
+               if (!fx.bgPosReady) {
+                       var start = $.curCSS(fx.elem,'backgroundPosition');
+
+                       if(!start){//FF2 no inline-style fallback
+                               start = '0px 0px';
+                       }
+
+                       start = toArray(start);
+
+                       fx.start = [start[0],start[2]];
+
+                       var end = toArray(fx.end);
+                       fx.end = [end[0],end[2]];
+
+                       fx.unit = [end[1],end[3]];
+                       fx.bgPosReady = true;
+               }
+               //return;
+               var nowPosX = [];
+               nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
+               nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];
+               fx.elem.style.backgroundPosition = nowPosX[0]+' '+nowPosX[1];
+
+       };
+})(jQuery);
\ No newline at end of file
diff --git a/CubeIT/js/jquery/jquery.dotdotdot.js b/CubeIT/js/jquery/jquery.dotdotdot.js
new file mode 100644 (file)
index 0000000..7e53eba
--- /dev/null
@@ -0,0 +1,658 @@
+/*     
+ *     jQuery dotdotdot 1.6.7
+ *     
+ *     Copyright (c) 2013 Fred Heusschen
+ *     www.frebsite.nl
+ *
+ *     Plugin website:
+ *     dotdotdot.frebsite.nl
+ *
+ *     Dual licensed under the MIT and GPL licenses.
+ *     http://en.wikipedia.org/wiki/MIT_License
+ *     http://en.wikipedia.org/wiki/GNU_General_Public_License
+ */
+
+(function( $, undef )
+{
+       if ( $.fn.dotdotdot )
+       {
+               return;
+       }
+
+       $.fn.dotdotdot = function( o )
+       {
+               if ( this.length == 0 )
+               {
+                       if ( !o || o.debug !== false )
+                       {
+                               debug( true, 'No element found for "' + this.selector + '".' );
+                       }
+                       return this;
+               }
+               if ( this.length > 1 )
+               {
+                       return this.each(
+                               function()
+                               {
+                                       $(this).dotdotdot( o );
+                               }
+                       );
+               }
+
+
+               var $dot = this;
+
+               if ( $dot.data( 'dotdotdot' ) )
+               {
+                       $dot.trigger( 'destroy.dot' );
+               }
+
+               $dot.data( 'dotdotdot-style', $dot.attr( 'style' ) || '' );
+               $dot.css( 'word-wrap', 'break-word' );
+               if ($dot.css( 'white-space' ) === 'nowrap')
+               {
+                       $dot.css( 'white-space', 'normal' );
+               }
+
+               $dot.bind_events = function()
+               {
+                       $dot.bind(
+                               'update.dot',
+                               function( e, c )
+                               {
+                                       e.preventDefault();
+                                       e.stopPropagation();
+
+                                       opts.maxHeight = ( typeof opts.height == 'number' ) 
+                                               ? opts.height 
+                                               : getTrueInnerHeight( $dot );
+
+                                       opts.maxHeight += opts.tolerance;
+
+                                       if ( typeof c != 'undefined' )
+                                       {
+                                               if ( typeof c == 'string' || c instanceof HTMLElement )
+                                               {
+                                                       c = $('<div />').append( c ).contents();
+                                               }
+                                               if ( c instanceof $ )
+                                               {
+                                                       orgContent = c;
+                                               }
+                                       }
+
+                                       $inr = $dot.wrapInner( '<div class="dotdotdot" />' ).children();
+                                       $inr.empty()
+                                               .append( orgContent.clone( true ) )
+                                               .find( 'br' ).replaceWith( '  <br />  ' ).end()
+                                               .css({
+                                                       'height'        : 'auto',
+                                                       'width'         : 'auto',
+                                                       'border'        : 'none',
+                                                       'padding'       : 0,
+                                                       'margin'        : 0
+                                               });
+
+                                       var after = false,
+                                               trunc = false;
+
+                                       if ( conf.afterElement )
+                                       {
+                                               after = conf.afterElement.clone( true );
+                                           after.show();
+                                               conf.afterElement.remove();
+                                       }
+                                       if ( test( $inr, opts ) )
+                                       {
+                                               if ( opts.wrap == 'children' )
+                                               {
+                                                       trunc = children( $inr, opts, after );
+                                               }
+                                               else
+                                               {
+                                                       trunc = ellipsis( $inr, $dot, $inr, opts, after );
+                                               }
+                                       }
+                                       $inr.replaceWith( $inr.contents() );
+                                       $inr = null;
+                                       
+                                       if ( $.isFunction( opts.callback ) )
+                                       {
+                                               opts.callback.call( $dot[ 0 ], trunc, orgContent );
+                                       }
+
+                                       conf.isTruncated = trunc;
+                                       return trunc;
+                               }
+
+                       ).bind(
+                               'isTruncated.dot',
+                               function( e, fn )
+                               {
+                                       e.preventDefault();
+                                       e.stopPropagation();
+
+                                       if ( typeof fn == 'function' )
+                                       {
+                                               fn.call( $dot[ 0 ], conf.isTruncated );
+                                       }
+                                       return conf.isTruncated;
+                               }
+
+                       ).bind(
+                               'originalContent.dot',
+                               function( e, fn )
+                               {
+                                       e.preventDefault();
+                                       e.stopPropagation();
+
+                                       if ( typeof fn == 'function' )
+                                       {
+                                               fn.call( $dot[ 0 ], orgContent );
+                                       }
+                                       return orgContent;
+                               }
+
+                       ).bind(
+                               'destroy.dot',
+                               function( e )
+                               {
+                                       e.preventDefault();
+                                       e.stopPropagation();
+
+                                       $dot.unwatch()
+                                               .unbind_events()
+                                               .empty()
+                                               .append( orgContent )
+                                               .attr( 'style', $dot.data( 'dotdotdot-style' ) || '' )
+                                               .data( 'dotdotdot', false );
+                               }
+                       );
+                       return $dot;
+               };      //      /bind_events
+
+               $dot.unbind_events = function()
+               {
+                       $dot.unbind('.dot');
+                       return $dot;
+               };      //      /unbind_events
+
+               $dot.watch = function()
+               {
+                       $dot.unwatch();
+                       if ( opts.watch == 'window' )
+                       {
+                               var $window = $(window),
+                                       _wWidth = $window.width(),
+                                       _wHeight = $window.height(); 
+
+                               $window.bind(
+                                       'resize.dot' + conf.dotId,
+                                       function()
+                                       {
+                                               if ( _wWidth != $window.width() || _wHeight != $window.height() || !opts.windowResizeFix )
+                                               {
+                                                       _wWidth = $window.width();
+                                                       _wHeight = $window.height();
+       
+                                                       if ( watchInt )
+                                                       {
+                                                               clearInterval( watchInt );
+                                                       }
+                                                       watchInt = setTimeout(
+                                                               function()
+                                                               {
+                                                                       $dot.trigger( 'update.dot' );
+                                                               }, 10
+                                                       );
+                                               }
+                                       }
+                               );
+                       }
+                       else
+                       {
+                               watchOrg = getSizes( $dot );
+                               watchInt = setInterval(
+                                       function()
+                                       {
+                                               var watchNew = getSizes( $dot );
+                                               if ( watchOrg.width  != watchNew.width ||
+                                                        watchOrg.height != watchNew.height )
+                                               {
+                                                       $dot.trigger( 'update.dot' );
+                                                       watchOrg = getSizes( $dot );
+                                               }
+                                       }, 100
+                               );
+                       }
+                       return $dot;
+               };
+               $dot.unwatch = function()
+               {
+                       $(window).unbind( 'resize.dot' + conf.dotId );
+                       if ( watchInt )
+                       {
+                               clearInterval( watchInt );
+                       }
+                       return $dot;
+               };
+
+               var     orgContent      = $dot.contents(),
+                       opts            = $.extend( true, {}, $.fn.dotdotdot.defaults, o ),
+                       conf            = {},
+                       watchOrg        = {},
+                       watchInt        = null,
+                       $inr            = null;
+
+
+               if ( !( opts.lastCharacter.remove instanceof Array ) )
+               {
+                       opts.lastCharacter.remove = $.fn.dotdotdot.defaultArrays.lastCharacter.remove;
+               }
+               if ( !( opts.lastCharacter.noEllipsis instanceof Array ) )
+               {
+                       opts.lastCharacter.noEllipsis = $.fn.dotdotdot.defaultArrays.lastCharacter.noEllipsis;
+               }
+
+
+               conf.afterElement       = getElement( opts.after, $dot );
+               conf.isTruncated        = false;
+               conf.dotId                      = dotId++;
+
+
+               $dot.data( 'dotdotdot', true )
+                       .bind_events()
+                       .trigger( 'update.dot' );
+
+               if ( opts.watch )
+               {
+                       $dot.watch();
+               }
+
+               return $dot;
+       };
+
+
+       //      public
+       $.fn.dotdotdot.defaults = {
+               'ellipsis'                      : '... ',
+               'wrap'                          : 'word',
+               'fallbackToLetter'      : true,
+               'lastCharacter'         : {},
+               'tolerance'                     : 0,
+               'callback'                      : null,
+               'after'                         : null,
+               'height'                        : null,
+               'watch'                         : false,
+               'windowResizeFix'       : true,
+               'debug'                         : false
+       };
+       $.fn.dotdotdot.defaultArrays = {
+               'lastCharacter'         : {
+                       'remove'                        : [ ' ', '\u3000', ',', ';', '.', '!', '?' ],
+                       'noEllipsis'            : []
+               }
+       };
+
+
+       //      private
+       var dotId = 1;
+
+       function children( $elem, o, after )
+       {
+               var $elements   = $elem.children(),
+                       isTruncated     = false;
+
+               $elem.empty();
+
+               for ( var a = 0, l = $elements.length; a < l; a++ )
+               {
+                       var $e = $elements.eq( a );
+                       $elem.append( $e );
+                       if ( after )
+                       {
+                               $elem.append( after );
+                       }
+                       if ( test( $elem, o ) )
+                       {
+                               $e.remove();
+                               isTruncated = true;
+                               break;
+                       }
+                       else
+                       {
+                               if ( after )
+                               {
+                                       after.detach();
+                               }
+                       }
+               }
+               return isTruncated;
+       }
+       function ellipsis( $elem, $d, $i, o, after )
+       {
+               var $elements   = $elem.contents(),
+                       isTruncated     = false;
+
+               $elem.empty();
+
+               var notx = 'table, thead, tbody, tfoot, tr, col, colgroup, object, embed, param, ol, ul, dl, blockquote, select, optgroup, option, textarea, script, style';
+               for ( var a = 0, l = $elements.length; a < l; a++ )
+               {
+
+                       if ( isTruncated )
+                       {
+                               break;
+                       }
+
+                       var e   = $elements[ a ],
+                               $e      = $(e);
+
+                       if ( typeof e == 'undefined' || ( e.nodeType == 3 && $.trim( e.data ).length == 0 ) )
+                       {
+                               continue;
+                       }
+
+                       $elem.append( $e );
+                       if ( after )
+                       {
+                               $elem[ $elem.is( notx ) ? 'after' : 'append' ]( after );
+                       }
+                       if ( test( $i, o ) )
+                       {
+                               if ( e.nodeType == 3 ) // node is TEXT
+                               {
+                                       isTruncated = ellipsisElement( $e, $d, $i, o, after );
+                               }
+                               else
+                               {
+                                       isTruncated = ellipsis( $e, $d, $i, o, after );
+                               }
+
+                               if ( !isTruncated )
+                               {
+                                       $e.remove();
+                                       isTruncated = true;
+                               }
+                       }
+
+                       if ( !isTruncated )
+                       {
+                               if ( after )
+                               {
+                                       after.detach();
+                               }
+                       }
+               }
+               return isTruncated;
+       }
+       function ellipsisElement( $e, $d, $i, o, after )
+       {
+               var e = $e[ 0 ];
+
+               if ( !e )
+               {
+                       return false;
+               }
+
+               var txt                 = getTextContent( e ),
+                       space           = ( txt.indexOf(' ') !== -1 ) ? ' ' : '\u3000',
+                       separator       = ( o.wrap == 'letter' ) ? '' : space,
+                       textArr         = txt.split( separator ),
+                       position        = -1,
+                       midPos          = -1,
+                       startPos        = 0,
+                       endPos          = textArr.length - 1;
+                       
+               if ( o.fallbackToLetter && endPos == 0 && endPos == startPos )
+               {
+                       separator       = '';
+                       textArr         = txt.split( separator );
+                       endPos          = textArr.length - 1;
+               }
+
+               while ( startPos <= endPos && !( startPos == 0 && endPos == 0 ) )
+               {
+                       var m = Math.floor( ( startPos + endPos ) / 2 );
+                       if ( m == midPos ) 
+                       {
+                               break;
+                       }
+                       midPos = m;
+
+                       setTextContent( e, textArr.slice( 0, midPos + 1 ).join( separator ) + o.ellipsis );
+
+                       if ( !test( $i, o ) )
+                       {
+                               position = midPos;
+                               startPos = midPos; 
+                       }
+                       else
+                       {
+                               endPos = midPos;
+                       }
+               }
+       
+               if ( position != -1 && !( textArr.length == 1 && textArr[ 0 ].length == 0 ) )
+               {
+                       txt = addEllipsis( textArr.slice( 0, position + 1 ).join( separator ), o );
+                       setTextContent( e, txt );
+               }
+               else
+               {
+                       var $w = $e.parent();
+                       $e.remove();
+
+                       var afterLength = ( after && after.closest($w).length ) ? after.length : 0;
+
+                       if ( $w.contents().length > afterLength )
+                       {
+                               e = findLastTextNode( $w.contents().eq( -1 - afterLength ), $d );
+                       }
+                       else
+                       {
+                               e = findLastTextNode( $w, $d, true );
+                               if ( !afterLength )
+                               {
+                                       $w.remove();
+                               }
+                       }
+                       if ( e )
+                       {
+                               txt = addEllipsis( getTextContent( e ), o );
+                               setTextContent( e, txt );
+                               if ( afterLength && after )
+                               {
+                                       $(e).parent().append( after );
+                               }
+                       }
+               }
+
+               return true;
+       }
+       function test( $i, o )
+       {
+               return $i.innerHeight() > o.maxHeight;
+       }
+       function addEllipsis( txt, o )
+       {
+               while( $.inArray( txt.slice( -1 ), o.lastCharacter.remove ) > -1 )
+               {
+                       txt = txt.slice( 0, -1 );
+               }
+               if ( $.inArray( txt.slice( -1 ), o.lastCharacter.noEllipsis ) < 0 )
+               {
+                       txt += o.ellipsis;
+               }
+               return txt;
+       }
+       function getSizes( $d )
+       {
+               return {
+                       'width' : $d.innerWidth(),
+                       'height': $d.innerHeight()
+               };
+       }
+       function setTextContent( e, content )
+       {
+               if ( e.innerText )
+               {
+                       e.innerText = content;
+               }
+               else if ( e.nodeValue )
+               {
+                       e.nodeValue = content;
+               }
+               else if (e.textContent)
+               {
+                       e.textContent = content;
+               }
+
+       }
+       function getTextContent( e )
+       {
+               if ( e.innerText )
+               {
+                       return e.innerText;
+               }
+               else if ( e.nodeValue )
+               {
+                       return e.nodeValue;
+               }
+               else if ( e.textContent )
+               {
+                       return e.textContent;
+               }
+               else
+               {
+                       return "";
+               }
+       }
+       function getPrevNode( n )
+       {
+               do
+               {
+                       n = n.previousSibling;
+               }
+               while ( n && n.nodeType !== 1 && n.nodeType !== 3 );
+
+               return n;
+       }
+       function findLastTextNode( $el, $top, excludeCurrent )
+       {
+               var e = $el && $el[ 0 ], p;
+               if ( e )
+               {
+                       if ( !excludeCurrent )
+                       {
+                               if ( e.nodeType === 3 )
+                               {
+                                       return e;
+                               }
+                               if ( $.trim( $el.text() ) )
+                               {
+                                       return findLastTextNode( $el.contents().last(), $top );
+                               }
+                       }
+                       p = getPrevNode( e );
+                       while ( !p )
+                       {
+                               $el = $el.parent();
+                               if ( $el.is( $top ) || !$el.length )
+                               {
+                                       return false;
+                               }
+                               p = getPrevNode( $el[0] );
+                       }
+                       if ( p )
+                       {
+                               return findLastTextNode( $(p), $top );
+                       }
+               }
+               return false;
+       }
+       function getElement( e, $i )
+       {
+               if ( !e )
+               {
+                       return false;
+               }
+               if ( typeof e === 'string' )
+               {
+                       e = $(e, $i);
+                       return ( e.length )
+                               ? e 
+                               : false;
+               }
+               return !e.jquery
+                       ? false
+                       : e;
+       }
+       function getTrueInnerHeight( $el )
+       {
+               var h = $el.innerHeight(),
+                       a = [ 'paddingTop', 'paddingBottom' ];
+
+               for ( var z = 0, l = a.length; z < l; z++ )
+               {
+                       var m = parseInt( $el.css( a[ z ] ), 10 );
+                       if ( isNaN( m ) )
+                       {
+                               m = 0;
+                       }
+                       h -= m;
+               }
+               return h;
+       }
+       function debug( d, m )
+       {
+               if ( !d )
+               {
+                       return false;
+               }
+               if ( typeof m == 'string' )
+               {
+                       m = 'dotdotdot: ' + m;
+               }
+               else
+               {
+                       m = [ 'dotdotdot:', m ];
+               }
+
+               if ( typeof window.console != 'undefined' )
+               {
+                       if ( typeof window.console.log != 'undefined' )
+                       {
+                               window.console.log( m );
+                       }
+               }
+               return false;
+       }
+       
+
+       //      override jQuery.html
+       var _orgHtml = $.fn.html;
+       $.fn.html = function( str )
+       {
+               if ( str != undef && !$.isFunction( str ) && this.data( 'dotdotdot' ) )
+               {
+                       return this.trigger( 'update', [ str ] );
+               }
+               return _orgHtml.apply( this, arguments );
+       };
+
+
+       //      override jQuery.text
+       var _orgText = $.fn.text;
+       $.fn.text = function( str )
+       {
+               if ( str != undef && !$.isFunction( str ) && this.data( 'dotdotdot' ) )
+               {
+                       str = $( '<div />' ).text( str ).html();
+                       return this.trigger( 'update', [ str ] );
+               }
+               return _orgText.apply( this, arguments );
+       };
+
+
+})( jQuery );
diff --git a/CubeIT/js/jquery/jquery.form.js b/CubeIT/js/jquery/jquery.form.js
new file mode 100644 (file)
index 0000000..b5b1203
--- /dev/null
@@ -0,0 +1,1200 @@
+/*!
+ * jQuery Form Plugin
+ * version: 3.44.0-2013.09.15
+ * Requires jQuery v1.5 or later
+ * Copyright (c) 2013 M. Alsup
+ * Examples and documentation at: http://malsup.com/jquery/form/
+ * Project repository: https://github.com/malsup/form
+ * Dual licensed under the MIT and GPL licenses.
+ * https://github.com/malsup/form#copyright-and-license
+ */
+/*global ActiveXObject */
+;(function($) {
+"use strict";
+
+/*
+    Usage Note:
+    -----------
+    Do not use both ajaxSubmit and ajaxForm on the same form.  These
+    functions are mutually exclusive.  Use ajaxSubmit if you want
+    to bind your own submit handler to the form.  For example,
+
+    $(document).ready(function() {
+        $('#myForm').on('submit', function(e) {
+            e.preventDefault(); // <-- important
+            $(this).ajaxSubmit({
+                target: '#output'
+            });
+        });
+    });
+
+    Use ajaxForm when you want the plugin to manage all the event binding
+    for you.  For example,
+
+    $(document).ready(function() {
+        $('#myForm').ajaxForm({
+            target: '#output'
+        });
+    });
+
+    You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
+    form does not have to exist when you invoke ajaxForm:
+
+    $('#myForm').ajaxForm({
+        delegation: true,
+        target: '#output'
+    });
+
+    When using ajaxForm, the ajaxSubmit function will be invoked for you
+    at the appropriate time.
+*/
+
+/**
+ * Feature detection
+ */
+var feature = {};
+feature.fileapi = $("<input type='file'/>").get(0).files !== undefined;
+feature.formdata = window.FormData !== undefined;
+
+var hasProp = !!$.fn.prop;
+
+// attr2 uses prop when it can but checks the return type for
+// an expected string.  this accounts for the case where a form 
+// contains inputs with names like "action" or "method"; in those
+// cases "prop" returns the element
+$.fn.attr2 = function() {
+    if ( ! hasProp )
+        return this.attr.apply(this, arguments);
+    var val = this.prop.apply(this, arguments);
+    if ( ( val && val.jquery ) || typeof val === 'string' )
+        return val;
+    return this.attr.apply(this, arguments);
+};
+
+/**
+ * ajaxSubmit() provides a mechanism for immediately submitting
+ * an HTML form using AJAX.
+ */
+$.fn.ajaxSubmit = function(options) {
+    /*jshint scripturl:true */
+
+    // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
+    if (!this.length) {
+        log('ajaxSubmit: skipping submit process - no element selected');
+        return this;
+    }
+
+    var method, action, url, $form = this;
+
+    if (typeof options == 'function') {
+        options = { success: options };
+    }
+    else if ( options === undefined ) {
+        options = {};
+    }
+
+    method = options.type || this.attr2('method');
+    action = options.url  || this.attr2('action');
+
+    url = (typeof action === 'string') ? $.trim(action) : '';
+    url = url || window.location.href || '';
+    if (url) {
+        // clean url (don't include hash vaue)
+        url = (url.match(/^([^#]+)/)||[])[1];
+    }
+
+    options = $.extend(true, {
+        url:  url,
+        success: $.ajaxSettings.success,
+        type: method || $.ajaxSettings.type,
+        iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
+    }, options);
+
+    // hook for manipulating the form data before it is extracted;
+    // convenient for use with rich editors like tinyMCE or FCKEditor
+    var veto = {};
+    this.trigger('form-pre-serialize', [this, options, veto]);
+    if (veto.veto) {
+        log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
+        return this;
+    }
+
+    // provide opportunity to alter form data before it is serialized
+    if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
+        log('ajaxSubmit: submit aborted via beforeSerialize callback');
+        return this;
+    }
+
+    var traditional = options.traditional;
+    if ( traditional === undefined ) {
+        traditional = $.ajaxSettings.traditional;
+    }
+
+    var elements = [];
+    var qx, a = this.formToArray(options.semantic, elements);
+    if (options.data) {
+        options.extraData = options.data;
+        qx = $.param(options.data, traditional);
+    }
+
+    // give pre-submit callback an opportunity to abort the submit
+    if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
+        log('ajaxSubmit: submit aborted via beforeSubmit callback');
+        return this;
+    }
+
+    // fire vetoable 'validate' event
+    this.trigger('form-submit-validate', [a, this, options, veto]);
+    if (veto.veto) {
+        log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
+        return this;
+    }
+
+    var q = $.param(a, traditional);
+    if (qx) {
+        q = ( q ? (q + '&' + qx) : qx );
+    }
+    if (options.type.toUpperCase() == 'GET') {
+        options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
+        options.data = null;  // data is null for 'get'
+    }
+    else {
+        options.data = q; // data is the query string for 'post'
+    }
+
+    var callbacks = [];
+    if (options.resetForm) {
+        callbacks.push(function() { $form.resetForm(); });
+    }
+    if (options.clearForm) {
+        callbacks.push(function() { $form.clearForm(options.includeHidden); });
+    }
+
+    // perform a load on the target only if dataType is not provided
+    if (!options.dataType && options.target) {
+        var oldSuccess = options.success || function(){};
+        callbacks.push(function(data) {
+            var fn = options.replaceTarget ? 'replaceWith' : 'html';
+            $(options.target)[fn](data).each(oldSuccess, arguments);
+        });
+    }
+    else if (options.success) {
+        callbacks.push(options.success);
+    }
+
+    options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
+        var context = options.context || this ;    // jQuery 1.4+ supports scope context
+        for (var i=0, max=callbacks.length; i < max; i++) {
+            callbacks[i].apply(context, [data, status, xhr || $form, $form]);
+        }
+    };
+
+    if (options.error) {
+        var oldError = options.error;
+        options.error = function(xhr, status, error) {
+            var context = options.context || this;
+            oldError.apply(context, [xhr, status, error, $form]);
+        };
+    }
+
+     if (options.complete) {
+        var oldComplete = options.complete;
+        options.complete = function(xhr, status) {
+            var context = options.context || this;
+            oldComplete.apply(context, [xhr, status, $form]);
+        };
+    }
+
+    // are there files to upload?
+
+    // [value] (issue #113), also see comment:
+    // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
+    var fileInputs = $('input[type=file]:enabled', this).filter(function() { return $(this).val() !== ''; });
+
+    var hasFileInputs = fileInputs.length > 0;
+    var mp = 'multipart/form-data';
+    var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
+
+    var fileAPI = feature.fileapi && feature.formdata;
+    log("fileAPI :" + fileAPI);
+    var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI;
+
+    var jqxhr;
+
+    // options.iframe allows user to force iframe mode
+    // 06-NOV-09: now defaulting to iframe mode if file input is detected
+    if (options.iframe !== false && (options.iframe || shouldUseFrame)) {
+        // hack to fix Safari hang (thanks to Tim Molendijk for this)
+        // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
+        if (options.closeKeepAlive) {
+            $.get(options.closeKeepAlive, function() {
+                jqxhr = fileUploadIframe(a);
+            });
+        }
+        else {
+            jqxhr = fileUploadIframe(a);
+        }
+    }
+    else if ((hasFileInputs || multipart) && fileAPI) {
+        jqxhr = fileUploadXhr(a);
+    }
+    else {
+        jqxhr = $.ajax(options);
+    }
+
+    $form.removeData('jqxhr').data('jqxhr', jqxhr);
+
+    // clear element array
+    for (var k=0; k < elements.length; k++)
+        elements[k] = null;
+
+    // fire 'notify' event
+    this.trigger('form-submit-notify', [this, options]);
+    return this;
+
+    // utility fn for deep serialization
+    function deepSerialize(extraData){
+        var serialized = $.param(extraData, options.traditional).split('&');
+        var len = serialized.length;
+        var result = [];
+        var i, part;
+        for (i=0; i < len; i++) {
+            // #252; undo param space replacement
+            serialized[i] = serialized[i].replace(/\+/g,' ');
+            part = serialized[i].split('=');
+            // #278; use array instead of object storage, favoring array serializations
+            result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]);
+        }
+        return result;
+    }
+
+     // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz)
+    function fileUploadXhr(a) {
+        var formdata = new FormData();
+
+        for (var i=0; i < a.length; i++) {
+            formdata.append(a[i].name, a[i].value);
+        }
+
+        if (options.extraData) {
+            var serializedData = deepSerialize(options.extraData);
+            for (i=0; i < serializedData.length; i++)
+                if (serializedData[i])
+                    formdata.append(serializedData[i][0], serializedData[i][1]);
+        }
+
+        options.data = null;
+
+        var s = $.extend(true, {}, $.ajaxSettings, options, {
+            contentType: false,
+            processData: false,
+            cache: false,
+            type: method || 'POST'
+        });
+
+        if (options.uploadProgress) {
+            // workaround because jqXHR does not expose upload property
+            s.xhr = function() {
+                var xhr = $.ajaxSettings.xhr();
+                if (xhr.upload) {
+                    xhr.upload.addEventListener('progress', function(event) {
+                        var percent = 0;
+                        var position = event.loaded || event.position; /*event.position is deprecated*/
+                        var total = event.total;
+                        if (event.lengthComputable) {
+                            percent = Math.ceil(position / total * 100);
+                        }
+                        options.uploadProgress(event, position, total, percent);
+                    }, false);
+                }
+                return xhr;
+            };
+        }
+
+        s.data = null;
+            var beforeSend = s.beforeSend;
+            s.beforeSend = function(xhr, o) {
+                o.data = formdata;
+                if(beforeSend)
+                    beforeSend.call(this, xhr, o);
+        };
+        return $.ajax(s);
+    }
+
+    // private function for handling file uploads (hat tip to YAHOO!)
+    function fileUploadIframe(a) {
+        var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;
+        var deferred = $.Deferred();
+
+        // #341
+        deferred.abort = function(status) {
+            xhr.abort(status);
+        };
+
+        if (a) {
+            // ensure that every serialized input is still enabled
+            for (i=0; i < elements.length; i++) {
+                el = $(elements[i]);
+                if ( hasProp )
+                    el.prop('disabled', false);
+                else
+                    el.removeAttr('disabled');
+            }
+        }
+
+        s = $.extend(true, {}, $.ajaxSettings, options);
+        s.context = s.context || s;
+        id = 'jqFormIO' + (new Date().getTime());
+        if (s.iframeTarget) {
+            $io = $(s.iframeTarget);
+            n = $io.attr2('name');
+            if (!n)
+                 $io.attr2('name', id);
+            else
+                id = n;
+        }
+        else {
+            $io = $('<iframe name="' + id + '" src="'+ s.iframeSrc +'" />');
+            $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
+        }
+        io = $io[0];
+
+
+        xhr = { // mock object
+            aborted: 0,
+            responseText: null,
+            responseXML: null,
+            status: 0,
+            statusText: 'n/a',
+            getAllResponseHeaders: function() {},
+            getResponseHeader: function() {},
+            setRequestHeader: function() {},
+            abort: function(status) {
+                var e = (status === 'timeout' ? 'timeout' : 'aborted');
+                log('aborting upload... ' + e);
+                this.aborted = 1;
+
+                try { // #214, #257
+                    if (io.contentWindow.document.execCommand) {
+                        io.contentWindow.document.execCommand('Stop');
+                    }
+                }
+                catch(ignore) {}
+
+                $io.attr('src', s.iframeSrc); // abort op in progress
+                xhr.error = e;
+                if (s.error)
+                    s.error.call(s.context, xhr, e, status);
+                if (g)
+                    $.event.trigger("ajaxError", [xhr, s, e]);
+                if (s.complete)
+                    s.complete.call(s.context, xhr, e);
+            }
+        };
+
+        g = s.global;
+        // trigger ajax global events so that activity/block indicators work like normal
+        if (g && 0 === $.active++) {
+            $.event.trigger("ajaxStart");
+        }
+        if (g) {
+            $.event.trigger("ajaxSend", [xhr, s]);
+        }
+
+        if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {
+            if (s.global) {
+                $.active--;
+            }
+            deferred.reject();
+            return deferred;
+        }
+        if (xhr.aborted) {
+            deferred.reject();
+            return deferred;
+        }
+
+        // add submitting element to data if we know it
+        sub = form.clk;
+        if (sub) {
+            n = sub.name;
+            if (n && !sub.disabled) {
+                s.extraData = s.extraData || {};
+                s.extraData[n] = sub.value;
+                if (sub.type == "image") {
+                    s.extraData[n+'.x'] = form.clk_x;
+                    s.extraData[n+'.y'] = form.clk_y;
+                }
+            }
+        }
+
+        var CLIENT_TIMEOUT_ABORT = 1;
+        var SERVER_ABORT = 2;
+                
+        function getDoc(frame) {
+            /* it looks like contentWindow or contentDocument do not
+             * carry the protocol property in ie8, when running under ssl
+             * frame.document is the only valid response document, since
+             * the protocol is know but not on the other two objects. strange?
+             * "Same origin policy" http://en.wikipedia.org/wiki/Same_origin_policy
+             */
+            
+            var doc = null;
+            
+            // IE8 cascading access check
+            try {
+                if (frame.contentWindow) {
+                    doc = frame.contentWindow.document;
+                }
+            } catch(err) {
+                // IE8 access denied under ssl & missing protocol
+                log('cannot get iframe.contentWindow document: ' + err);
+            }
+
+            if (doc) { // successful getting content
+                return doc;
+            }
+
+            try { // simply checking may throw in ie8 under ssl or mismatched protocol
+                doc = frame.contentDocument ? frame.contentDocument : frame.document;
+            } catch(err) {
+                // last attempt
+                log('cannot get iframe.contentDocument: ' + err);
+                doc = frame.document;
+            }
+            return doc;
+        }
+
+        // Rails CSRF hack (thanks to Yvan Barthelemy)
+        var csrf_token = $('meta[name=csrf-token]').attr('content');
+        var csrf_param = $('meta[name=csrf-param]').attr('content');
+        if (csrf_param && csrf_token) {
+            s.extraData = s.extraData || {};
+            s.extraData[csrf_param] = csrf_token;
+        }
+
+        // take a breath so that pending repaints get some cpu time before the upload starts
+        function doSubmit() {
+            // make sure form attrs are set
+            var t = $form.attr2('target'), a = $form.attr2('action');
+
+            // update form attrs in IE friendly way
+            form.setAttribute('target',id);
+            if (!method || /post/i.test(method) ) {
+                form.setAttribute('method', 'POST');
+            }
+            if (a != s.url) {
+                form.setAttribute('action', s.url);
+            }
+
+            // ie borks in some cases when setting encoding
+            if (! s.skipEncodingOverride && (!method || /post/i.test(method))) {
+                $form.attr({
+                    encoding: 'multipart/form-data',
+                    enctype:  'multipart/form-data'
+                });
+            }
+
+            // support timout
+            if (s.timeout) {
+                timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
+            }
+
+            // look for server aborts
+            function checkState() {
+                try {
+                    var state = getDoc(io).readyState;
+                    log('state = ' + state);
+                    if (state && state.toLowerCase() == 'uninitialized')
+                        setTimeout(checkState,50);
+                }
+                catch(e) {
+                    log('Server abort: ' , e, ' (', e.name, ')');
+                    cb(SERVER_ABORT);
+                    if (timeoutHandle)
+                        clearTimeout(timeoutHandle);
+                    timeoutHandle = undefined;
+                }
+            }
+
+            // add "extra" data to form if provided in options
+            var extraInputs = [];
+            try {
+                if (s.extraData) {
+                    for (var n in s.extraData) {
+                        if (s.extraData.hasOwnProperty(n)) {
+                           // if using the $.param format that allows for multiple values with the same name
+                           if($.isPlainObject(s.extraData[n]) && s.extraData[n].hasOwnProperty('name') && s.extraData[n].hasOwnProperty('value')) {
+                               extraInputs.push(
+                               $('<input type="hidden" name="'+s.extraData[n].name+'">').val(s.extraData[n].value)
+                                   .appendTo(form)[0]);
+                           } else {
+                               extraInputs.push(
+                               $('<input type="hidden" name="'+n+'">').val(s.extraData[n])
+                                   .appendTo(form)[0]);
+                           }
+                        }
+                    }
+                }
+
+                if (!s.iframeTarget) {
+                    // add iframe to doc and submit the form
+                    $io.appendTo('body');
+                }
+                if (io.attachEvent)
+                    io.attachEvent('onload', cb);
+                else
+                    io.addEventListener('load', cb, false);
+                setTimeout(checkState,15);
+
+                try {
+                    form.submit();
+                } catch(err) {
+                    // just in case form has element with name/id of 'submit'
+                    var submitFn = document.createElement('form').submit;
+                    submitFn.apply(form);
+                }
+            }
+            finally {
+                // reset attrs and remove "extra" input elements
+                form.setAttribute('action',a);
+                if(t) {
+                    form.setAttribute('target', t);
+                } else {
+                    $form.removeAttr('target');
+                }
+                $(extraInputs).remove();
+            }
+        }
+
+        if (s.forceSync) {
+            doSubmit();
+        }
+        else {
+            setTimeout(doSubmit, 10); // this lets dom updates render
+        }
+
+        var data, doc, domCheckCount = 50, callbackProcessed;
+
+        function cb(e) {
+            if (xhr.aborted || callbackProcessed) {
+                return;
+            }
+            
+            doc = getDoc(io);
+            if(!doc) {
+                log('cannot access response document');
+                e = SERVER_ABORT;
+            }
+            if (e === CLIENT_TIMEOUT_ABORT && xhr) {
+                xhr.abort('timeout');
+                deferred.reject(xhr, 'timeout');
+                return;
+            }
+            else if (e == SERVER_ABORT && xhr) {
+                xhr.abort('server abort');
+                deferred.reject(xhr, 'error', 'server abort');
+                return;
+            }
+
+            if (!doc || doc.location.href == s.iframeSrc) {
+                // response not received yet
+                if (!timedOut)
+                    return;
+            }
+            if (io.detachEvent)
+                io.detachEvent('onload', cb);
+            else
+                io.removeEventListener('load', cb, false);
+
+            var status = 'success', errMsg;
+            try {
+                if (timedOut) {
+                    throw 'timeout';
+                }
+
+                var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
+                log('isXml='+isXml);
+                if (!isXml && window.opera && (doc.body === null || !doc.body.innerHTML)) {
+                    if (--domCheckCount) {
+                        // in some browsers (Opera) the iframe DOM is not always traversable when
+                        // the onload callback fires, so we loop a bit to accommodate
+                        log('requeing onLoad callback, DOM not available');
+                        setTimeout(cb, 250);
+                        return;
+                    }
+                    // let this fall through because server response could be an empty document
+                    //log('Could not access iframe DOM after mutiple tries.');
+                    //throw 'DOMException: not available';
+                }
+
+                //log('response detected');
+                var docRoot = doc.body ? doc.body : doc.documentElement;
+                xhr.responseText = docRoot ? docRoot.innerHTML : null;
+                xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
+                if (isXml)
+                    s.dataType = 'xml';
+                xhr.getResponseHeader = function(header){
+                    var headers = {'content-type': s.dataType};
+                    return headers[header.toLowerCase()];
+                };
+                // support for XHR 'status' & 'statusText' emulation :
+                if (docRoot) {
+                    xhr.status = Number( docRoot.getAttribute('status') ) || xhr.status;
+                    xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText;
+                }
+
+                var dt = (s.dataType || '').toLowerCase();
+                var scr = /(json|script|text)/.test(dt);
+                if (scr || s.textarea) {
+                    // see if user embedded response in textarea
+                    var ta = doc.getElementsByTagName('textarea')[0];
+                    if (ta) {
+                        xhr.responseText = ta.value;
+                        // support for XHR 'status' & 'statusText' emulation :
+                        xhr.status = Number( ta.getAttribute('status') ) || xhr.status;
+                        xhr.statusText = ta.getAttribute('statusText') || xhr.statusText;
+                    }
+                    else if (scr) {
+                        // account for browsers injecting pre around json response
+                        var pre = doc.getElementsByTagName('pre')[0];
+                        var b = doc.getElementsByTagName('body')[0];
+                        if (pre) {
+                            xhr.responseText = pre.textContent ? pre.textContent : pre.innerText;
+                        }
+                        else if (b) {
+                            xhr.responseText = b.textContent ? b.textContent : b.innerText;
+                        }
+                    }
+                }
+                else if (dt == 'xml' && !xhr.responseXML && xhr.responseText) {
+                    xhr.responseXML = toXml(xhr.responseText);
+                }
+
+                try {
+                    data = httpData(xhr, dt, s);
+                }
+                catch (err) {
+                    status = 'parsererror';
+                    xhr.error = errMsg = (err || status);
+                }
+            }
+            catch (err) {
+                log('error caught: ',err);
+                status = 'error';
+                xhr.error = errMsg = (err || status);
+            }
+
+            if (xhr.aborted) {
+                log('upload aborted');
+                status = null;
+            }
+
+            if (xhr.status) { // we've set xhr.status
+                status = (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) ? 'success' : 'error';
+            }
+
+            // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
+            if (status === 'success') {
+                if (s.success)
+                    s.success.call(s.context, data, 'success', xhr);
+                deferred.resolve(xhr.responseText, 'success', xhr);
+                if (g)
+                    $.event.trigger("ajaxSuccess", [xhr, s]);
+            }
+            else if (status) {
+                if (errMsg === undefined)
+                    errMsg = xhr.statusText;
+                if (s.error)
+                    s.error.call(s.context, xhr, status, errMsg);
+                deferred.reject(xhr, 'error', errMsg);
+                if (g)
+                    $.event.trigger("ajaxError", [xhr, s, errMsg]);
+            }
+
+            if (g)
+                $.event.trigger("ajaxComplete", [xhr, s]);
+
+            if (g && ! --$.active) {
+                $.event.trigger("ajaxStop");
+            }
+
+            if (s.complete)
+                s.complete.call(s.context, xhr, status);
+
+            callbackProcessed = true;
+            if (s.timeout)
+                clearTimeout(timeoutHandle);
+
+            // clean up
+            setTimeout(function() {
+                if (!s.iframeTarget)
+                    $io.remove();
+                else  //adding else to clean up existing iframe response.
+                    $io.attr('src', s.iframeSrc);
+                xhr.responseXML = null;
+            }, 100);
+        }
+
+        var toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)
+            if (window.ActiveXObject) {
+                doc = new ActiveXObject('Microsoft.XMLDOM');
+                doc.async = 'false';
+                doc.loadXML(s);
+            }
+            else {
+                doc = (new DOMParser()).parseFromString(s, 'text/xml');
+            }
+            return (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;
+        };
+        var parseJSON = $.parseJSON || function(s) {
+            /*jslint evil:true */
+            return window['eval']('(' + s + ')');
+        };
+
+        var httpData = function( xhr, type, s ) { // mostly lifted from jq1.4.4
+
+            var ct = xhr.getResponseHeader('content-type') || '',
+                xml = type === 'xml' || !type && ct.indexOf('xml') >= 0,
+                data = xml ? xhr.responseXML : xhr.responseText;
+
+            if (xml && data.documentElement.nodeName === 'parsererror') {
+                if ($.error)
+                    $.error('parsererror');
+            }
+            if (s && s.dataFilter) {
+                data = s.dataFilter(data, type);
+            }
+            if (typeof data === 'string') {
+                if (type === 'json' || !type && ct.indexOf('json') >= 0) {
+                    data = parseJSON(data);
+                } else if (type === "script" || !type && ct.indexOf("javascript") >= 0) {
+                    $.globalEval(data);
+                }
+            }
+            return data;
+        };
+
+        return deferred;
+    }
+};
+
+/**
+ * ajaxForm() provides a mechanism for fully automating form submission.
+ *
+ * The advantages of using this method instead of ajaxSubmit() are:
+ *
+ * 1: This method will include coordinates for <input type="image" /> elements (if the element
+ *    is used to submit the form).
+ * 2. This method will include the submit element's name/value data (for the element that was
+ *    used to submit the form).
+ * 3. This method binds the submit() method to the form for you.
+ *
+ * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
+ * passes the options argument along after properly binding events for submit elements and
+ * the form itself.
+ */
+$.fn.ajaxForm = function(options) {
+    options = options || {};
+    options.delegation = options.delegation && $.isFunction($.fn.on);
+
+    // in jQuery 1.3+ we can fix mistakes with the ready state
+    if (!options.delegation && this.length === 0) {
+        var o = { s: this.selector, c: this.context };
+        if (!$.isReady && o.s) {
+            log('DOM not ready, queuing ajaxForm');
+            $(function() {
+                $(o.s,o.c).ajaxForm(options);
+            });
+            return this;
+        }
+        // is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
+        log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
+        return this;
+    }
+
+    if ( options.delegation ) {
+        $(document)
+            .off('submit.form-plugin', this.selector, doAjaxSubmit)
+            .off('click.form-plugin', this.selector, captureSubmittingElement)
+            .on('submit.form-plugin', this.selector, options, doAjaxSubmit)
+            .on('click.form-plugin', this.selector, options, captureSubmittingElement);
+        return this;
+    }
+
+    return this.ajaxFormUnbind()
+        .bind('submit.form-plugin', options, doAjaxSubmit)
+        .bind('click.form-plugin', options, captureSubmittingElement);
+};
+
+// private event handlers
+function doAjaxSubmit(e) {
+    /*jshint validthis:true */
+    var options = e.data;
+    if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed
+        e.preventDefault();
+        $(e.target).ajaxSubmit(options); // #365
+    }
+}
+
+function captureSubmittingElement(e) {
+    /*jshint validthis:true */
+    var target = e.target;
+    var $el = $(target);
+    if (!($el.is("[type=submit],[type=image]"))) {
+        // is this a child element of the submit el?  (ex: a span within a button)
+        var t = $el.closest('[type=submit]');
+        if (t.length === 0) {
+            return;
+        }
+        target = t[0];
+    }
+    var form = this;
+    form.clk = target;
+    if (target.type == 'image') {
+        if (e.offsetX !== undefined) {
+            form.clk_x = e.offsetX;
+            form.clk_y = e.offsetY;
+        } else if (typeof $.fn.offset == 'function') {
+            var offset = $el.offset();
+            form.clk_x = e.pageX - offset.left;
+            form.clk_y = e.pageY - offset.top;
+        } else {
+            form.clk_x = e.pageX - target.offsetLeft;
+            form.clk_y = e.pageY - target.offsetTop;
+        }
+    }
+    // clear form vars
+    setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
+}
+
+
+// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
+$.fn.ajaxFormUnbind = function() {
+    return this.unbind('submit.form-plugin click.form-plugin');
+};
+
+/**
+ * formToArray() gathers form element data into an array of objects that can
+ * be passed to any of the following ajax functions: $.get, $.post, or load.
+ * Each object in the array has both a 'name' and 'value' property.  An example of
+ * an array for a simple login form might be:
+ *
+ * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
+ *
+ * It is this array that is passed to pre-submit callback functions provided to the
+ * ajaxSubmit() and ajaxForm() methods.
+ */
+$.fn.formToArray = function(semantic, elements) {
+    var a = [];
+    if (this.length === 0) {
+        return a;
+    }
+
+    var form = this[0];
+    var els = semantic ? form.getElementsByTagName('*') : form.elements;
+    if (!els) {
+        return a;
+    }
+
+    var i,j,n,v,el,max,jmax;
+    for(i=0, max=els.length; i < max; i++) {
+        el = els[i];
+        n = el.name;
+        if (!n || el.disabled) {
+            continue;
+        }
+
+        if (semantic && form.clk && el.type == "image") {
+            // handle image inputs on the fly when semantic == true
+            if(form.clk == el) {
+                a.push({name: n, value: $(el).val(), type: el.type });
+                a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+            }
+            continue;
+        }
+
+        v = $.fieldValue(el, true);
+        if (v && v.constructor == Array) {
+            if (elements)
+                elements.push(el);
+            for(j=0, jmax=v.length; j < jmax; j++) {
+                a.push({name: n, value: v[j]});
+            }
+        }
+        else if (feature.fileapi && el.type == 'file') {
+            if (elements)
+                elements.push(el);
+            var files = el.files;
+            if (files.length) {
+                for (j=0; j < files.length; j++) {
+                    a.push({name: n, value: files[j], type: el.type});
+                }
+            }
+            else {
+                // #180
+                a.push({ name: n, value: '', type: el.type });
+            }
+        }
+        else if (v !== null && typeof v != 'undefined') {
+            if (elements)
+                elements.push(el);
+            a.push({name: n, value: v, type: el.type, required: el.required});
+        }
+    }
+
+    if (!semantic && form.clk) {
+        // input type=='image' are not found in elements array! handle it here
+        var $input = $(form.clk), input = $input[0];
+        n = input.name;
+        if (n && !input.disabled && input.type == 'image') {
+            a.push({name: n, value: $input.val()});
+            a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+        }
+    }
+    return a;
+};
+
+/**
+ * Serializes form data into a 'submittable' string. This method will return a string
+ * in the format: name1=value1&amp;name2=value2
+ */
+$.fn.formSerialize = function(semantic) {
+    //hand off to jQuery.param for proper encoding
+    return $.param(this.formToArray(semantic));
+};
+
+/**
+ * Serializes all field elements in the jQuery object into a query string.
+ * This method will return a string in the format: name1=value1&amp;name2=value2
+ */
+$.fn.fieldSerialize = function(successful) {
+    var a = [];
+    this.each(function() {
+        var n = this.name;
+        if (!n) {
+            return;
+        }
+        var v = $.fieldValue(this, successful);
+        if (v && v.constructor == Array) {
+            for (var i=0,max=v.length; i < max; i++) {
+                a.push({name: n, value: v[i]});
+            }
+        }
+        else if (v !== null && typeof v != 'undefined') {
+            a.push({name: this.name, value: v});
+        }
+    });
+    //hand off to jQuery.param for proper encoding
+    return $.param(a);
+};
+
+/**
+ * Returns the value(s) of the element in the matched set.  For example, consider the following form:
+ *
+ *  <form><fieldset>
+ *      <input name="A" type="text" />
+ *      <input name="A" type="text" />
+ *      <input name="B" type="checkbox" value="B1" />
+ *      <input name="B" type="checkbox" value="B2"/>
+ *      <input name="C" type="radio" value="C1" />
+ *      <input name="C" type="radio" value="C2" />
+ *  </fieldset></form>
+ *
+ *  var v = $('input[type=text]').fieldValue();
+ *  // if no values are entered into the text inputs
+ *  v == ['','']
+ *  // if values entered into the text inputs are 'foo' and 'bar'
+ *  v == ['foo','bar']
+ *
+ *  var v = $('input[type=checkbox]').fieldValue();
+ *  // if neither checkbox is checked
+ *  v === undefined
+ *  // if both checkboxes are checked
+ *  v == ['B1', 'B2']
+ *
+ *  var v = $('input[type=radio]').fieldValue();
+ *  // if neither radio is checked
+ *  v === undefined
+ *  // if first radio is checked
+ *  v == ['C1']
+ *
+ * The successful argument controls whether or not the field element must be 'successful'
+ * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+ * The default value of the successful argument is true.  If this value is false the value(s)
+ * for each element is returned.
+ *
+ * Note: This method *always* returns an array.  If no valid value can be determined the
+ *    array will be empty, otherwise it will contain one or more values.
+ */
+$.fn.fieldValue = function(successful) {
+    for (var val=[], i=0, max=this.length; i < max; i++) {
+        var el = this[i];
+        var v = $.fieldValue(el, successful);
+        if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {
+            continue;
+        }
+        if (v.constructor == Array)
+            $.merge(val, v);
+        else
+            val.push(v);
+    }
+    return val;
+};
+
+/**
+ * Returns the value of the field element.
+ */
+$.fieldValue = function(el, successful) {
+    var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
+    if (successful === undefined) {
+        successful = true;
+    }
+
+    if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
+        (t == 'checkbox' || t == 'radio') && !el.checked ||
+        (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
+        tag == 'select' && el.selectedIndex == -1)) {
+            return null;
+    }
+
+    if (tag == 'select') {
+        var index = el.selectedIndex;
+        if (index < 0) {
+            return null;
+        }
+        var a = [], ops = el.options;
+        var one = (t == 'select-one');
+        var max = (one ? index+1 : ops.length);
+        for(var i=(one ? index : 0); i < max; i++) {
+            var op = ops[i];
+            if (op.selected) {
+                var v = op.value;
+                if (!v) { // extra pain for IE...
+                    v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
+                }
+                if (one) {
+                    return v;
+                }
+                a.push(v);
+            }
+        }
+        return a;
+    }
+    return $(el).val();
+};
+
+/**
+ * Clears the form data.  Takes the following actions on the form's input fields:
+ *  - input text fields will have their 'value' property set to the empty string
+ *  - select elements will have their 'selectedIndex' property set to -1
+ *  - checkbox and radio inputs will have their 'checked' property set to false
+ *  - inputs of type submit, button, reset, and hidden will *not* be effected
+ *  - button elements will *not* be effected
+ */
+$.fn.clearForm = function(includeHidden) {
+    return this.each(function() {
+        $('input,select,textarea', this).clearFields(includeHidden);
+    });
+};
+
+/**
+ * Clears the selected form elements.
+ */
+$.fn.clearFields = $.fn.clearInputs = function(includeHidden) {
+    var re = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i; // 'hidden' is not in this list
+    return this.each(function() {
+        var t = this.type, tag = this.tagName.toLowerCase();
+        if (re.test(t) || tag == 'textarea') {
+            this.value = '';
+        }
+        else if (t == 'checkbox' || t == 'radio') {
+            this.checked = false;
+        }
+        else if (tag == 'select') {
+            this.selectedIndex = -1;
+        }
+               else if (t == "file") {
+                       if (/MSIE/.test(navigator.userAgent)) {
+                               $(this).replaceWith($(this).clone(true));
+                       } else {
+                               $(this).val('');
+                       }
+               }
+        else if (includeHidden) {
+            // includeHidden can be the value true, or it can be a selector string
+            // indicating a special test; for example:
+            //  $('#myForm').clearForm('.special:hidden')
+            // the above would clean hidden inputs that have the class of 'special'
+            if ( (includeHidden === true && /hidden/.test(t)) ||
+                 (typeof includeHidden == 'string' && $(this).is(includeHidden)) )
+                this.value = '';
+        }
+    });
+};
+
+/**
+ * Resets the form data.  Causes all form elements to be reset to their original value.
+ */
+$.fn.resetForm = function() {
+    return this.each(function() {
+        // guard against an input with the name of 'reset'
+        // note that IE reports the reset function as an 'object'
+        if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {
+            this.reset();
+        }
+    });
+};
+
+/**
+ * Enables or disables any matching elements.
+ */
+$.fn.enable = function(b) {
+    if (b === undefined) {
+        b = true;
+    }
+    return this.each(function() {
+        this.disabled = !b;
+    });
+};
+
+/**
+ * Checks/unchecks any matching checkboxes or radio buttons and
+ * selects/deselects and matching option elements.
+ */
+$.fn.selected = function(select) {
+    if (select === undefined) {
+        select = true;
+    }
+    return this.each(function() {
+        var t = this.type;
+        if (t == 'checkbox' || t == 'radio') {
+            this.checked = select;
+        }
+        else if (this.tagName.toLowerCase() == 'option') {
+            var $sel = $(this).parent('select');
+            if (select && $sel[0] && $sel[0].type == 'select-one') {
+                // deselect all other options
+                $sel.find('option').selected(false);
+            }
+            this.selected = select;
+        }
+    });
+};
+
+// expose debug var
+$.fn.ajaxSubmit.debug = false;
+
+// helper fn for console logging
+function log() {
+    if (!$.fn.ajaxSubmit.debug)
+        return;
+    var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
+    if (window.console && window.console.log) {
+        window.console.log(msg);
+    }
+    else if (window.opera && window.opera.postError) {
+        window.opera.postError(msg);
+    }
+}
+
+})( (typeof(jQuery) != 'undefined') ? jQuery : window.Zepto );
diff --git a/CubeIT/js/jquery/jquery.hashchange.js b/CubeIT/js/jquery/jquery.hashchange.js
new file mode 100644 (file)
index 0000000..714b1e7
--- /dev/null
@@ -0,0 +1,290 @@
+// Script: jQuery hashchange event
+//
+// *Version: 1.3, Last updated: 7/21/2010*
+// 
+// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/
+// GitHub       - http://github.com/cowboy/jquery-hashchange/
+// Source       - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js
+// (Minified)   - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped)
+// 
+// About: License
+// 
+// Copyright (c) 2010 "Cowboy" Ben Alman,
+// Dual licensed under the MIT and GPL licenses.
+// http://benalman.com/about/license/
+// 
+// About: Examples
+// 
+// These working examples, complete with fully commented code, illustrate a few
+// ways in which this plugin can be used.
+// 
+// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/
+// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/
+// 
+// About: Support and Testing
+// 
+// Information about what version or versions of jQuery this plugin has been
+// tested with, what browsers it has been tested in, and where the unit tests
+// reside (so you can test it yourself).
+// 
+// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2
+// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5,
+//                   Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5.
+// Unit Tests      - http://benalman.com/code/projects/jquery-hashchange/unit/
+// 
+// About: Known issues
+// 
+// While this jQuery hashchange event implementation is quite stable and
+// robust, there are a few unfortunate browser bugs surrounding expected
+// hashchange event-based behaviors, independent of any JavaScript
+// window.onhashchange abstraction. See the following examples for more
+// information:
+// 
+// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/
+// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/
+// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/
+// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/
+// 
+// Also note that should a browser natively support the window.onhashchange 
+// event, but not report that it does, the fallback polling loop will be used.
+// 
+// About: Release History
+// 
+// 1.3   - (7/21/2010) Reorganized IE6/7 Iframe code to make it more
+//         "removable" for mobile-only development. Added IE6/7 document.title
+//         support. Attempted to make Iframe as hidden as possible by using
+//         techniques from http://www.paciellogroup.com/blog/?p=604. Added 
+//         support for the "shortcut" format $(window).hashchange( fn ) and
+//         $(window).hashchange() like jQuery provides for built-in events.
+//         Renamed jQuery.hashchangeDelay to <jQuery.fn.hashchange.delay> and
+//         lowered its default value to 50. Added <jQuery.fn.hashchange.domain>
+//         and <jQuery.fn.hashchange.src> properties plus document-domain.html
+//         file to address access denied issues when setting document.domain in
+//         IE6/7.
+// 1.2   - (2/11/2010) Fixed a bug where coming back to a page using this plugin
+//         from a page on another domain would cause an error in Safari 4. Also,
+//         IE6/7 Iframe is now inserted after the body (this actually works),
+//         which prevents the page from scrolling when the event is first bound.
+//         Event can also now be bound before DOM ready, but it won't be usable
+//         before then in IE6/7.
+// 1.1   - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug
+//         where browser version is incorrectly reported as 8.0, despite
+//         inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag.
+// 1.0   - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special
+//         window.onhashchange functionality into a separate plugin for users
+//         who want just the basic event & back button support, without all the
+//         extra awesomeness that BBQ provides. This plugin will be included as
+//         part of jQuery BBQ, but also be available separately.
+
+(function($,window,undefined){
+  '$:nomunge'; // Used by YUI compressor.
+  
+  // Reused string.
+  var str_hashchange = 'hashchange',
+    
+    // Method / object references.
+    doc = document,
+    fake_onhashchange,
+    special = $.event.special,
+    
+    // Does the browser support window.onhashchange? Note that IE8 running in
+    // IE7 compatibility mode reports true for 'onhashchange' in window, even
+    // though the event isn't supported, so also test document.documentMode.
+    doc_mode = doc.documentMode,
+    supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 );
+  
+  // Get location.hash (or what you'd expect location.hash to be) sans any
+  // leading #. Thanks for making this necessary, Firefox!
+  function get_fragment( url ) {
+    url = url || location.href;
+    return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' );
+  };
+  
+  // Method: jQuery.fn.hashchange
+  // 
+  // Bind a handler to the window.onhashchange event or trigger all bound
+  // window.onhashchange event handlers. This behavior is consistent with
+  // jQuery's built-in event handlers.
+  // 
+  // Usage:
+  // 
+  // > jQuery(window).hashchange( [ handler ] );
+  // 
+  // Arguments:
+  // 
+  //  handler - (Function) Optional handler to be bound to the hashchange
+  //    event. This is a "shortcut" for the more verbose form:
+  //    jQuery(window).bind( 'hashchange', handler ). If handler is omitted,
+  //    all bound window.onhashchange event handlers will be triggered. This
+  //    is a shortcut for the more verbose
+  //    jQuery(window).trigger( 'hashchange' ). These forms are described in
+  //    the <hashchange event> section.
+  // 
+  // Returns:
+  // 
+  //  (jQuery) The initial jQuery collection of elements.
+  
+  // Allow the "shortcut" format $(elem).hashchange( fn ) for binding and
+  // $(elem).hashchange() for triggering, like jQuery does for built-in events.
+  $.fn[ str_hashchange ] = function( fn ) {
+    return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange );
+  };
+  
+  // Property: jQuery.fn.hashchange.delay
+  // 
+  // The numeric interval (in milliseconds) at which the <hashchange event>
+  // polling loop executes. Defaults to 50.
+  
+  // Property: jQuery.fn.hashchange.domain
+  // 
+  // If you're setting document.domain in your JavaScript, and you want hash
+  // history to work in IE6/7, not only must this property be set, but you must
+  // also set document.domain BEFORE jQuery is loaded into the page. This
+  // property is only applicable if you are supporting IE6/7 (or IE8 operating
+  // in "IE7 compatibility" mode).
+  // 
+  // In addition, the <jQuery.fn.hashchange.src> property must be set to the
+  // path of the included "document-domain.html" file, which can be renamed or
+  // modified if necessary (note that the document.domain specified must be the
+  // same in both your main JavaScript as well as in this file).
+  // 
+  // Usage:
+  // 
+  // jQuery.fn.hashchange.domain = document.domain;
+  
+  // Property: jQuery.fn.hashchange.src
+  // 
+  // If, for some reason, you need to specify an Iframe src file (for example,
+  // when setting document.domain as in <jQuery.fn.hashchange.domain>), you can
+  // do so using this property. Note that when using this property, history
+  // won't be recorded in IE6/7 until the Iframe src file loads. This property
+  // is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7
+  // compatibility" mode).
+  // 
+  // Usage:
+  // 
+  // jQuery.fn.hashchange.src = 'path/to/file.html';
+  
+  $.fn[ str_hashchange ].delay = 50;
+  /*
+  $.fn[ str_hashchange ].domain = null;
+  $.fn[ str_hashchange ].src = null;
+  */
+  
+  // Event: hashchange event
+  // 
+  // Fired when location.hash changes. In browsers that support it, the native
+  // HTML5 window.onhashchange event is used, otherwise a polling loop is
+  // initialized, running every <jQuery.fn.hashchange.delay> milliseconds to
+  // see if the hash has changed. In IE6/7 (and IE8 operating in "IE7
+  // compatibility" mode), a hidden Iframe is created to allow the back button
+  // and hash-based history to work.
+  // 
+  // Usage as described in <jQuery.fn.hashchange>:
+  // 
+  // > // Bind an event handler.
+  // > jQuery(window).hashchange( function(e) {
+  // >   var hash = location.hash;
+  // >   ...
+  // > });
+  // > 
+  // > // Manually trigger the event handler.
+  // > jQuery(window).hashchange();
+  // 
+  // A more verbose usage that allows for event namespacing:
+  // 
+  // > // Bind an event handler.
+  // > jQuery(window).bind( 'hashchange', function(e) {
+  // >   var hash = location.hash;
+  // >   ...
+  // > });
+  // > 
+  // > // Manually trigger the event handler.
+  // > jQuery(window).trigger( 'hashchange' );
+  // 
+  // Additional Notes:
+  // 
+  // * The polling loop and Iframe are not created until at least one handler
+  //   is actually bound to the 'hashchange' event.
+  // * If you need the bound handler(s) to execute immediately, in cases where
+  //   a location.hash exists on page load, via bookmark or page refresh for
+  //   example, use jQuery(window).hashchange() or the more verbose 
+  //   jQuery(window).trigger( 'hashchange' ).
+  // * The event can be bound before DOM ready, but since it won't be usable
+  //   before then in IE6/7 (due to the necessary Iframe), recommended usage is
+  //   to bind it inside a DOM ready handler.
+  
+  // Override existing $.event.special.hashchange methods (allowing this plugin
+  // to be defined after jQuery BBQ in BBQ's source code).
+  special[ str_hashchange ] = $.extend( special[ str_hashchange ], {
+    
+    // Called only when the first 'hashchange' event is bound to window.
+    setup: function() {
+      // If window.onhashchange is supported natively, there's nothing to do..
+      if ( supports_onhashchange ) { return false; }
+      
+      // Otherwise, we need to create our own. And we don't want to call this
+      // until the user binds to the event, just in case they never do, since it
+      // will create a polling loop and possibly even a hidden Iframe.
+      $( fake_onhashchange.start );
+    },
+    
+    // Called only when the last 'hashchange' event is unbound from window.
+    teardown: function() {
+      // If window.onhashchange is supported natively, there's nothing to do..
+      if ( supports_onhashchange ) { return false; }
+      
+      // Otherwise, we need to stop ours (if possible).
+      $( fake_onhashchange.stop );
+    }
+    
+  });
+  
+  // fake_onhashchange does all the work of triggering the window.onhashchange
+  // event for browsers that don't natively support it, including creating a
+  // polling loop to watch for hash changes and in IE 6/7 creating a hidden
+  // Iframe to enable back and forward.
+  fake_onhashchange = (function(){
+    var self = {},
+      timeout_id,
+      
+      // Remember the initial hash so it doesn't get triggered immediately.
+      last_hash = get_fragment(),
+      
+      fn_retval = function(val){ return val; },
+      history_set = fn_retval,
+      history_get = fn_retval;
+    
+    // Start the polling loop.
+    self.start = function() {
+      timeout_id || poll();
+    };
+    
+    // Stop the polling loop.
+    self.stop = function() {
+      timeout_id && clearTimeout( timeout_id );
+      timeout_id = undefined;
+    };
+    
+    // This polling loop checks every $.fn.hashchange.delay milliseconds to see
+    // if location.hash has changed, and triggers the 'hashchange' event on
+    // window when necessary.
+    function poll() {
+      var hash = get_fragment(),
+        history_hash = history_get( last_hash );
+      
+      if ( hash !== last_hash ) {
+        history_set( last_hash = hash, history_hash );
+        
+        $(window).trigger( str_hashchange );
+        
+      } else if ( history_hash !== last_hash ) {
+        location.href = location.href.replace( /#.*/, '' ) + history_hash;
+      }
+      
+      timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay );
+    };    
+    return self;
+  })();
+  
+})(jQuery,this);
diff --git a/CubeIT/js/jquery/jquery.transform2d.js b/CubeIT/js/jquery/jquery.transform2d.js
new file mode 100644 (file)
index 0000000..33f0fd0
--- /dev/null
@@ -0,0 +1,551 @@
+/*
+ * transform: A jQuery cssHooks adding cross-browser 2d transform capabilities to $.fn.css() and $.fn.animate()
+ *
+ * limitations:
+ * - requires jQuery 1.4.3+
+ * - Should you use the *translate* property, then your elements need to be absolutely positionned in a relatively positionned wrapper **or it will fail in IE678**.
+ * - transformOrigin is not accessible
+ *
+ * latest version and complete README available on Github:
+ * https://github.com/louisremi/jquery.transform.js
+ *
+ * Copyright 2011 @louis_remi
+ * Licensed under the MIT license.
+ *
+ * This saved you an hour of work?
+ * Send me music http://www.amazon.co.uk/wishlist/HNTU0468LQON
+ *
+ */
+(function( $, window, document, Math, undefined ) {
+
+/*
+ * Feature tests and global variables
+ */
+var div = document.createElement("div"),
+       divStyle = div.style,
+       suffix = "Transform",
+       testProperties = [
+               "O" + suffix,
+               "ms" + suffix,
+               "Webkit" + suffix,
+               "Moz" + suffix
+       ],
+       i = testProperties.length,
+       supportProperty,
+       supportMatrixFilter,
+       supportFloat32Array = "Float32Array" in window,
+       propertyHook,
+       propertyGet,
+       rMatrix = /Matrix([^)]*)/,
+       rAffine = /^\s*matrix\(\s*1\s*,\s*0\s*,\s*0\s*,\s*1\s*(?:,\s*0(?:px)?\s*){2}\)\s*$/,
+       _transform = "transform",
+       _transformOrigin = "transformOrigin",
+       _translate = "translate",
+       _rotate = "rotate",
+       _scale = "scale",
+       _skew = "skew",
+       _matrix = "matrix";
+
+// test different vendor prefixes of these properties
+while ( i-- ) {
+       if ( testProperties[i] in divStyle ) {
+               $.support[_transform] = supportProperty = testProperties[i];
+               $.support[_transformOrigin] = supportProperty + "Origin";
+               continue;
+       }
+}
+// IE678 alternative
+if ( !supportProperty ) {
+       $.support.matrixFilter = supportMatrixFilter = divStyle.filter === "";
+}
+
+// px isn't the default unit of these properties
+$.cssNumber[_transform] = $.cssNumber[_transformOrigin] = true;
+
+/*
+ * fn.css() hooks
+ */
+if ( supportProperty && supportProperty != _transform ) {
+       // Modern browsers can use jQuery.cssProps as a basic hook
+       $.cssProps[_transform] = supportProperty;
+       $.cssProps[_transformOrigin] = supportProperty + "Origin";
+
+       // Firefox needs a complete hook because it stuffs matrix with "px"
+       if ( supportProperty == "Moz" + suffix ) {
+               propertyHook = {
+                       get: function( elem, computed ) {
+                               return (computed ?
+                                       // remove "px" from the computed matrix
+                                       $.css( elem, supportProperty ).split("px").join(""):
+                                       elem.style[supportProperty]
+                               );
+                       },
+                       set: function( elem, value ) {
+                               // add "px" to matrices
+                               elem.style[supportProperty] = /matrix\([^)p]*\)/.test(value) ?
+                                       value.replace(/matrix((?:[^,]*,){4})([^,]*),([^)]*)/, _matrix+"$1$2px,$3px"):
+                                       value;
+                       }
+               };
+       /* Fix two jQuery bugs still present in 1.5.1
+        * - rupper is incompatible with IE9, see http://jqbug.com/8346
+        * - jQuery.css is not really jQuery.cssProps aware, see http://jqbug.com/8402
+        */
+       } else if ( /^1\.[0-5](?:\.|$)/.test($.fn.jquery) ) {
+               propertyHook = {
+                       get: function( elem, computed ) {
+                               return (computed ?
+                                       $.css( elem, supportProperty.replace(/^ms/, "Ms") ):
+                                       elem.style[supportProperty]
+                               );
+                       }
+               };
+       }
+       /* TODO: leverage hardware acceleration of 3d transform in Webkit only
+       else if ( supportProperty == "Webkit" + suffix && support3dTransform ) {
+               propertyHook = {
+                       set: function( elem, value ) {
+                               elem.style[supportProperty] = 
+                                       value.replace();
+                       }
+               }
+       }*/
+
+} else if ( supportMatrixFilter ) {
+       propertyHook = {
+               get: function( elem, computed, asArray ) {
+                       var elemStyle = ( computed && elem.currentStyle ? elem.currentStyle : elem.style ),
+                               matrix, data;
+
+                       if ( elemStyle && rMatrix.test( elemStyle.filter ) ) {
+                               matrix = RegExp.$1.split(",");
+                               matrix = [
+                                       matrix[0].split("=")[1],
+                                       matrix[2].split("=")[1],
+                                       matrix[1].split("=")[1],
+                                       matrix[3].split("=")[1]
+                               ];
+                       } else {
+                               matrix = [1,0,0,1];
+                       }
+
+                       if ( ! $.cssHooks[_transformOrigin] ) {
+                               matrix[4] = elemStyle ? parseInt(elemStyle.left, 10) || 0 : 0;
+                               matrix[5] = elemStyle ? parseInt(elemStyle.top, 10) || 0 : 0;
+
+                       } else {
+                               data = $._data( elem, "transformTranslate", undefined );
+                               matrix[4] = data ? data[0] : 0;
+                               matrix[5] = data ? data[1] : 0;
+                       }
+
+                       return asArray ? matrix : _matrix+"(" + matrix + ")";
+               },
+               set: function( elem, value, animate ) {
+                       var elemStyle = elem.style,
+                               currentStyle,
+                               Matrix,
+                               filter,
+                               centerOrigin;
+
+                       if ( !animate ) {
+                               elemStyle.zoom = 1;
+                       }
+
+                       value = matrix(value);
+
+                       // rotate, scale and skew
+                       Matrix = [
+                               "Matrix("+
+                                       "M11="+value[0],
+                                       "M12="+value[2],
+                                       "M21="+value[1],
+                                       "M22="+value[3],
+                                       "SizingMethod='auto expand'"
+                       ].join();
+                       filter = ( currentStyle = elem.currentStyle ) && currentStyle.filter || elemStyle.filter || "";
+
+                       elemStyle.filter = rMatrix.test(filter) ?
+                               filter.replace(rMatrix, Matrix) :
+                               filter + " progid:DXImageTransform.Microsoft." + Matrix + ")";
+
+                       if ( ! $.cssHooks[_transformOrigin] ) {
+
+                               // center the transform origin, from pbakaus's Transformie http://github.com/pbakaus/transformie
+                               if ( (centerOrigin = $.transform.centerOrigin) ) {
+                                       elemStyle[centerOrigin == "margin" ? "marginLeft" : "left"] = -(elem.offsetWidth/2) + (elem.clientWidth/2) + "px";
+                                       elemStyle[centerOrigin == "margin" ? "marginTop" : "top"] = -(elem.offsetHeight/2) + (elem.clientHeight/2) + "px";
+                               }
+
+                               // translate
+                               // We assume that the elements are absolute positionned inside a relative positionned wrapper
+                               elemStyle.left = value[4] + "px";
+                               elemStyle.top = value[5] + "px";
+
+                       } else {
+                               $.cssHooks[_transformOrigin].set( elem, value );
+                       }
+               }
+       };
+}
+// populate jQuery.cssHooks with the appropriate hook if necessary
+if ( propertyHook ) {
+       $.cssHooks[_transform] = propertyHook;
+}
+// we need a unique setter for the animation logic
+propertyGet = propertyHook && propertyHook.get || $.css;
+
+/*
+ * fn.animate() hooks
+ */
+$.fx.step.transform = function( fx ) {
+       var elem = fx.elem,
+               start = fx.start,
+               end = fx.end,
+               pos = fx.pos,
+               transform = "",
+               precision = 1E5,
+               i, startVal, endVal, unit;
+
+       // fx.end and fx.start need to be converted to interpolation lists
+       if ( !start || typeof start === "string" ) {
+
+               // the following block can be commented out with jQuery 1.5.1+, see #7912
+               if ( !start ) {
+                       start = propertyGet( elem, supportProperty );
+               }
+
+               // force layout only once per animation
+               if ( supportMatrixFilter ) {
+                       elem.style.zoom = 1;
+               }
+
+               // replace "+=" in relative animations (-= is meaningless with transforms)
+               end = end.split("+=").join(start);
+
+               // parse both transform to generate interpolation list of same length
+               $.extend( fx, interpolationList( start, end ) );
+               start = fx.start;
+               end = fx.end;
+       }
+
+       i = start.length;
+
+       // interpolate functions of the list one by one
+       while ( i-- ) {
+               startVal = start[i];
+               endVal = end[i];
+               unit = +false;
+
+               switch ( startVal[0] ) {
+
+                       case _translate:
+                               unit = "px";
+                       case _scale:
+                               unit || ( unit = "");
+
+                               transform = startVal[0] + "(" +
+                                       Math.round( (startVal[1][0] + (endVal[1][0] - startVal[1][0]) * pos) * precision ) / precision + unit +","+
+                                       Math.round( (startVal[1][1] + (endVal[1][1] - startVal[1][1]) * pos) * precision ) / precision + unit + ")"+
+                                       transform;
+                               break;
+
+                       case _skew + "X":
+                       case _skew + "Y":
+                       case _rotate:
+                               transform = startVal[0] + "(" +
+                                       Math.round( (startVal[1] + (endVal[1] - startVal[1]) * pos) * precision ) / precision +"rad)"+
+                                       transform;
+                               break;
+               }
+       }
+
+       fx.origin && ( transform = fx.origin + transform );
+
+       propertyHook && propertyHook.set ?
+               propertyHook.set( elem, transform, +true ):
+               elem.style[supportProperty] = transform;
+};
+
+/*
+ * Utility functions
+ */
+
+// turns a transform string into its "matrix(A,B,C,D,X,Y)" form (as an array, though)
+function matrix( transform ) {
+       transform = transform.split(")");
+       var
+                       trim = $.trim
+               , i = -1
+               // last element of the array is an empty string, get rid of it
+               , l = transform.length -1
+               , split, prop, val
+               , prev = supportFloat32Array ? new Float32Array(6) : []
+               , curr = supportFloat32Array ? new Float32Array(6) : []
+               , rslt = supportFloat32Array ? new Float32Array(6) : [1,0,0,1,0,0]
+               ;
+
+       prev[0] = prev[3] = rslt[0] = rslt[3] = 1;
+       prev[1] = prev[2] = prev[4] = prev[5] = 0;
+
+       // Loop through the transform properties, parse and multiply them
+       while ( ++i < l ) {
+               split = transform[i].split("(");
+               prop = trim(split[0]);
+               val = split[1];
+               curr[0] = curr[3] = 1;
+               curr[1] = curr[2] = curr[4] = curr[5] = 0;
+
+               switch (prop) {
+                       case _translate+"X":
+                               curr[4] = parseInt(val, 10);
+                               break;
+
+                       case _translate+"Y":
+                               curr[5] = parseInt(val, 10);
+                               break;
+
+                       case _translate:
+                               val = val.split(",");
+                               curr[4] = parseInt(val[0], 10);
+                               curr[5] = parseInt(val[1] || 0, 10);
+                               break;
+
+                       case _rotate:
+                               val = toRadian(val);
+                               curr[0] = Math.cos(val);
+                               curr[1] = Math.sin(val);
+                               curr[2] = -Math.sin(val);
+                               curr[3] = Math.cos(val);
+                               break;
+
+                       case _scale+"X":
+                               curr[0] = +val;
+                               break;
+
+                       case _scale+"Y":
+                               curr[3] = val;
+                               break;
+
+                       case _scale:
+                               val = val.split(",");
+                               curr[0] = val[0];
+                               curr[3] = val.length>1 ? val[1] : val[0];
+                               break;
+
+                       case _skew+"X":
+                               curr[2] = Math.tan(toRadian(val));
+                               break;
+
+                       case _skew+"Y":
+                               curr[1] = Math.tan(toRadian(val));
+                               break;
+
+                       case _matrix:
+                               val = val.split(",");
+                               curr[0] = val[0];
+                               curr[1] = val[1];
+                               curr[2] = val[2];
+                               curr[3] = val[3];
+                               curr[4] = parseInt(val[4], 10);
+                               curr[5] = parseInt(val[5], 10);
+                               break;
+               }
+
+               // Matrix product (array in column-major order)
+               rslt[0] = prev[0] * curr[0] + prev[2] * curr[1];
+               rslt[1] = prev[1] * curr[0] + prev[3] * curr[1];
+               rslt[2] = prev[0] * curr[2] + prev[2] * curr[3];
+               rslt[3] = prev[1] * curr[2] + prev[3] * curr[3];
+               rslt[4] = prev[0] * curr[4] + prev[2] * curr[5] + prev[4];
+               rslt[5] = prev[1] * curr[4] + prev[3] * curr[5] + prev[5];
+
+               prev = [rslt[0],rslt[1],rslt[2],rslt[3],rslt[4],rslt[5]];
+       }
+       return rslt;
+}
+
+// turns a matrix into its rotate, scale and skew components
+// algorithm from http://hg.mozilla.org/mozilla-central/file/7cb3e9795d04/layout/style/nsStyleAnimation.cpp
+function unmatrix(matrix) {
+       var
+                       scaleX
+               , scaleY
+               , skew
+               , A = matrix[0]
+               , B = matrix[1]
+               , C = matrix[2]
+               , D = matrix[3]
+               ;
+
+       // Make sure matrix is not singular
+       if ( A * D - B * C ) {
+               // step (3)
+               scaleX = Math.sqrt( A * A + B * B );
+               A /= scaleX;
+               B /= scaleX;
+               // step (4)
+               skew = A * C + B * D;
+               C -= A * skew;
+               D -= B * skew;
+               // step (5)
+               scaleY = Math.sqrt( C * C + D * D );
+               C /= scaleY;
+               D /= scaleY;
+               skew /= scaleY;
+               // step (6)
+               if ( A * D < B * C ) {
+                       A = -A;
+                       B = -B;
+                       skew = -skew;
+                       scaleX = -scaleX;
+               }
+
+       // matrix is singular and cannot be interpolated
+       } else {
+               // In this case the elem shouldn't be rendered, hence scale == 0
+               scaleX = scaleY = skew = 0;
+       }
+
+       // The recomposition order is very important
+       // see http://hg.mozilla.org/mozilla-central/file/7cb3e9795d04/layout/style/nsStyleAnimation.cpp#l971
+       return [
+               [_translate, [+matrix[4], +matrix[5]]],
+               [_rotate, Math.atan2(B, A)],
+               [_skew + "X", Math.atan(skew)],
+               [_scale, [scaleX, scaleY]]
+       ];
+}
+
+// build the list of transform functions to interpolate
+// use the algorithm described at http://dev.w3.org/csswg/css3-2d-transforms/#animation
+function interpolationList( start, end ) {
+       var list = {
+                       start: [],
+                       end: []
+               },
+               i = -1, l,
+               currStart, currEnd, currType;
+
+       // get rid of affine transform matrix
+       ( start == "none" || isAffine( start ) ) && ( start = "" );
+       ( end == "none" || isAffine( end ) ) && ( end = "" );
+
+       // if end starts with the current computed style, this is a relative animation
+       // store computed style as the origin, remove it from start and end
+       if ( start && end && !end.indexOf("matrix") && toArray( start ).join() == toArray( end.split(")")[0] ).join() ) {
+               list.origin = start;
+               start = "";
+               end = end.slice( end.indexOf(")") +1 );
+       }
+
+       if ( !start && !end ) { return; }
+
+       // start or end are affine, or list of transform functions are identical
+       // => functions will be interpolated individually
+       if ( !start || !end || functionList(start) == functionList(end) ) {
+
+               start && ( start = start.split(")") ) && ( l = start.length );
+               end && ( end = end.split(")") ) && ( l = end.length );
+
+               while ( ++i < l-1 ) {
+                       start[i] && ( currStart = start[i].split("(") );
+                       end[i] && ( currEnd = end[i].split("(") );
+                       currType = $.trim( ( currStart || currEnd )[0] );
+
+                       append( list.start, parseFunction( currType, currStart ? currStart[1] : 0 ) );
+                       append( list.end, parseFunction( currType, currEnd ? currEnd[1] : 0 ) );
+               }
+
+       // otherwise, functions will be composed to a single matrix
+       } else {
+               list.start = unmatrix(matrix(start));
+               list.end = unmatrix(matrix(end))
+       }
+
+       return list;
+}
+
+function parseFunction( type, value ) {
+       var
+               // default value is 1 for scale, 0 otherwise
+               defaultValue = +(!type.indexOf(_scale)),
+               scaleX,
+               // remove X/Y from scaleX/Y & translateX/Y, not from skew
+               cat = type.replace( /e[XY]/, "e" );
+
+       switch ( type ) {
+               case _translate+"Y":
+               case _scale+"Y":
+
+                       value = [
+                               defaultValue,
+                               value ?
+                                       parseFloat( value ):
+                                       defaultValue
+                       ];
+                       break;
+
+               case _translate+"X":
+               case _translate:
+               case _scale+"X":
+                       scaleX = 1;
+               case _scale:
+
+                       value = value ?
+                               ( value = value.split(",") ) && [
+                                       parseFloat( value[0] ),
+                                       parseFloat( value.length>1 ? value[1] : type == _scale ? scaleX || value[0] : defaultValue+"" )
+                               ]:
+                               [defaultValue, defaultValue];
+                       break;
+
+               case _skew+"X":
+               case _skew+"Y":
+               case _rotate:
+                       value = value ? toRadian( value ) : 0;
+                       break;
+
+               case _matrix:
+                       return unmatrix( value ? toArray(value) : [1,0,0,1,0,0] );
+                       break;
+       }
+
+       return [[ cat, value ]];
+}
+
+function isAffine( matrix ) {
+       return rAffine.test(matrix);
+}
+
+function functionList( transform ) {
+       return transform.replace(/(?:\([^)]*\))|\s/g, "");
+}
+
+function append( arr1, arr2, value ) {
+       while ( value = arr2.shift() ) {
+               arr1.push( value );
+       }
+}
+
+// converts an angle string in any unit to a radian Float
+function toRadian(value) {
+       return ~value.indexOf("deg") ?
+               parseInt(value,10) * (Math.PI * 2 / 360):
+               ~value.indexOf("grad") ?
+                       parseInt(value,10) * (Math.PI/200):
+                       parseFloat(value);
+}
+
+// Converts "matrix(A,B,C,D,X,Y)" to [A,B,C,D,X,Y]
+function toArray(matrix) {
+       // remove the unit of X and Y for Firefox
+       matrix = /([^,]*),([^,]*),([^,]*),([^,]*),([^,p]*)(?:px)?,([^)p]*)(?:px)?/.exec(matrix);
+       return [matrix[1], matrix[2], matrix[3], matrix[4], matrix[5], matrix[6]];
+}
+
+$.transform = {
+       centerOrigin: "margin"
+};
+
+})( jQuery, window, document, Math );
diff --git a/CubeIT/js/jquery/jquery.transform3d.js b/CubeIT/js/jquery/jquery.transform3d.js
new file mode 100644 (file)
index 0000000..d75ee59
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * transform: A jQuery cssHooks adding 2D/3D transform capabilities to $.fn.css() and $.fn.animate()
+ *
+ * Requirements:
+ * - jQuery 1.5.1+
+ * - jquery.transition.js for animations
+ * - browser implementing W3C's CSS 2DTransforms for 2D tranform
+ * - browser implementing W3C's CSS 3DTransforms for 3D tranform
+ *
+ * latest version and complete README available on Github:
+ * https://github.com/louisremi/jquery.transform.js
+ *
+ * Copyright 2011 @louis_remi
+ * Licensed under the MIT license.
+ *
+ * This saved you an hour of work?
+ * Send me music http://www.amazon.co.uk/wishlist/HNTU0468LQON
+ *
+ */
+(function($, window, document) {
+       "use strict";
+
+       var div = document.createElement("div"),
+                       divStyle = div.style,
+                       prefixes = [
+               "O",
+               "ms",
+               "Webkit",
+               "Moz"
+       ],
+                       prefix,
+                       i = prefixes.length,
+                       properties = [
+               "transform",
+               "transformOrigin",
+               "transformStyle",
+               "perspective",
+               "perspectiveOrigin",
+               "backfaceVisibility"
+       ],
+                       property,
+                       j = prefixes.length;
+
+// Find the right prefix
+       while (i--) {
+               if (prefixes[i] + leadingUppercase(properties[0]) in divStyle) {
+                       prefix = prefixes[i];
+                       continue;
+               }
+       }
+
+// This browser is not compatible with transforms
+       if (!prefix) {
+               return;
+       }
+
+// Build cssHooks for each property
+       while (j--) {
+               property = prefix + leadingUppercase(properties[j]);
+
+               if (property in divStyle) {
+
+// px isn't the default unit of this property
+                       $.cssNumber[ properties[j] ] = true;
+
+// populate cssProps
+                       $.cssProps[ properties[j] ] = property;
+
+// MozTranform requires a complete hook because "px" is required in translate
+                       property === "MozTransform" && ($.cssHooks[ properties[j] ] = {
+                               get: function(elem, computed) {
+                                       return (computed ?
+// remove "px" from the computed matrix
+                                                       $.css(elem, property).split("px").join("") :
+                                                       elem.style[property]
+                                                       );
+                               },
+                               set: function(elem, value) {
+// add "px" to matrices
+                                       /matrix\([^)p]*\)/.test(value) && (
+                                                       value = value.replace(/matrix((?:[^,]*,){4})([^,]*),([^)]*)/, "matrix$1$2px,$3px")
+                                                       );
+                                       elem.style[property] = value;
+                               }
+                       });
+
+               }
+       }
+
+       function leadingUppercase(word) {
+               return word.slice(0, 1).toUpperCase() + word.slice(1);
+       }
+
+})(jQuery, window, document);
\ No newline at end of file
diff --git a/CubeIT/js/jquery/markitup/jquery.markitup.js b/CubeIT/js/jquery/markitup/jquery.markitup.js
new file mode 100644 (file)
index 0000000..183abc4
--- /dev/null
@@ -0,0 +1,620 @@
+// ----------------------------------------------------------------------------
+// markItUp! Universal MarkUp Engine, JQuery plugin
+// v 1.1.x
+// Dual licensed under the MIT and GPL licenses.
+// ----------------------------------------------------------------------------
+// Copyright (C) 2007-2012 Jay Salvat
+// http://markitup.jaysalvat.com/
+// ----------------------------------------------------------------------------
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// ----------------------------------------------------------------------------
+(function($) {
+       $.fn.markItUp = function(settings, extraSettings) {
+               var method, params, options, ctrlKey, shiftKey, altKey;
+               ctrlKey = shiftKey = altKey = false;
+
+               if (typeof settings == 'string') {
+                       method = settings;
+                       params = extraSettings;
+               }
+
+               options = {id: '',
+                       nameSpace: '',
+                       root: '',
+                       previewHandler: false,
+                       previewInWindow: '', // 'width=800, height=600, resizable=yes, scrollbars=yes'
+                       previewInElement: '',
+                       previewAutoRefresh: true,
+                       previewPosition: 'after',
+                       previewTemplatePath: '~/templates/preview.html',
+                       previewParser: false,
+                       previewParserPath: '',
+                       previewParserVar: 'data',
+                       resizeHandle: true,
+                       beforeInsert: '',
+                       afterInsert: '',
+                       onEnter: {},
+                       onShiftEnter: {},
+                       onCtrlEnter: {},
+                       onTab: {},
+                       markupSet: [{ /* set */}]
+               };
+               $.extend(options, settings, extraSettings);
+
+               // compute markItUp! path
+               if (!options.root) {
+                       $('script').each(function(a, tag) {
+                               miuScript = $(tag).get(0).src.match(/(.*)jquery\.markitup(\.pack)?\.js$/);
+                               if (miuScript !== null) {
+                                       options.root = miuScript[1];
+                               }
+                       });
+               }
+
+               return this.each(function() {
+                       var $$, textarea, levels, scrollPosition, caretPosition, caretOffset,
+                                       clicked, hash, header, footer, previewWindow, template, iFrame, abort;
+                       $$ = $(this);
+                       textarea = this;
+                       levels = [];
+                       abort = false;
+                       scrollPosition = caretPosition = 0;
+                       caretOffset = -1;
+
+                       options.previewParserPath = localize(options.previewParserPath);
+                       options.previewTemplatePath = localize(options.previewTemplatePath);
+
+                       if (method) {
+                               switch (method) {
+                                       case 'remove':
+                                               remove();
+                                               break;
+                                       case 'insert':
+                                               markup(params);
+                                               break;
+                                       default:
+                                               $.error('Method ' + method + ' does not exist on jQuery.markItUp');
+                               }
+                               return;
+                       }
+
+                       // apply the computed path to ~/
+                       function localize(data, inText) {
+                               if (inText) {
+                                       return  data.replace(/("|')~\//g, "$1" + options.root);
+                               }
+                               return  data.replace(/^~\//, options.root);
+                       }
+
+                       // init and build editor
+                       function init() {
+                               id = '';
+                               nameSpace = '';
+                               if (options.id) {
+                                       id = 'id="' + options.id + '"';
+                               } else if ($$.attr("id")) {
+                                       id = 'id="markItUp' + ($$.attr("id").substr(0, 1).toUpperCase()) + ($$.attr("id").substr(1)) + '"';
+
+                               }
+                               if (options.nameSpace) {
+                                       nameSpace = 'class="' + options.nameSpace + '"';
+                               }
+                               $$.wrap('<div ' + nameSpace + '></div>');
+                               $$.wrap('<div ' + id + ' class="markItUp"></div>');
+                               $$.wrap('<div class="markItUpContainer"></div>');
+                               $$.addClass("markItUpEditor");
+
+                               // add the header before the textarea
+                               header = $('<div class="markItUpHeader"></div>').insertBefore($$);
+                               $(dropMenus(options.markupSet)).appendTo(header);
+
+                               // add the footer after the textarea
+                               footer = $('<div class="markItUpFooter"></div>').insertAfter($$);
+
+                               // add the resize handle after textarea
+                               if (options.resizeHandle === true) {
+                                       resizeHandle = $('<div class="markItUpResizeHandle"></div>')
+                                                       .insertAfter($$)
+                                                       .bind("mousedown.markItUp", function(e) {
+                                               var h = $$.height(), y = e.clientY, mouseMove, mouseUp;
+                                               mouseMove = function(e) {
+                                                       $$.css("height", Math.max(20, e.clientY + h - y) + "px");
+                                                       return false;
+                                               };
+                                               mouseUp = function(e) {
+                                                       $("html").unbind("mousemove.markItUp", mouseMove).unbind("mouseup.markItUp", mouseUp);
+                                                       return false;
+                                               };
+                                               $("html").bind("mousemove.markItUp", mouseMove).bind("mouseup.markItUp", mouseUp);
+                                       });
+                                       footer.append(resizeHandle);
+                               }
+
+                               // listen key events
+                               $$.bind('keydown.markItUp', keyPressed).bind('keyup', keyPressed);
+
+                               // bind an event to catch external calls
+                               $$.bind("insertion.markItUp", function(e, settings) {
+                                       if (settings.target !== false) {
+                                               get();
+                                       }
+                                       if (textarea === $.markItUp.focused) {
+                                               markup(settings);
+                                       }
+                               });
+
+                               // remember the last focus
+                               $$.bind('focus.markItUp', function() {
+                                       $.markItUp.focused = this;
+                               });
+
+                               if (options.previewInElement) {
+                                       refreshPreview();
+                               }
+                       }
+
+                       // recursively build header with dropMenus from markupset
+                       function dropMenus(markupSet) {
+                               var ul = $('<ul></ul>'), i = 0;
+                               $('li:hover > ul', ul).css('display', 'block');
+                               $.each(markupSet, function() {
+                                       var button = this, t = '', title, li, j;
+                                       title = (button.key) ? (button.name || '') + ' [Ctrl+' + button.key + ']' : (button.name || '');
+                                       key = (button.key) ? 'accesskey="' + button.key + '"' : '';
+                                       if (button.separator) {
+                                               li = $('<li class="markItUpSeparator">' + (button.separator || '') + '</li>').appendTo(ul);
+                                       } else {
+                                               i++;
+                                               for (j = levels.length - 1; j >= 0; j--) {
+                                                       t += levels[j] + "-";
+                                               }
+                                               li = $('<li class="markItUpButton markItUpButton' + t + (i) + ' ' + (button.className || '') + '"><a href="" ' + key + ' title="' + title + '">' + (button.name || '') + '</a></li>')
+                                                               .bind("contextmenu.markItUp", function() { // prevent contextmenu on mac and allow ctrl+click
+                                                       return false;
+                                               }).bind('click.markItUp', function() {
+                                                       return false;
+                                               }).bind("focusin.markItUp", function() {
+                                                       $$.focus();
+                                               }).bind('mouseup', function() {
+                                                       if (button.call) {
+                                                               eval(button.call)();
+                                                       }
+                                                       setTimeout(function() {
+                                                               markup(button)
+                                                       }, 1);
+                                                       return false;
+                                               }).bind('mouseenter.markItUp', function() {
+                                                       $('> ul', this).show();
+                                                       $(document).one('click', function() { // close dropmenu if click outside
+                                                               $('ul ul', header).hide();
+                                                       }
+                                                       );
+                                               }).bind('mouseleave.markItUp', function() {
+                                                       $('> ul', this).hide();
+                                               }).appendTo(ul);
+                                               if (button.dropMenu) {
+                                                       levels.push(i);
+                                                       $(li).addClass('markItUpDropMenu').append(dropMenus(button.dropMenu));
+                                               }
+                                       }
+                               });
+                               levels.pop();
+                               return ul;
+                       }
+
+                       // markItUp! markups
+                       function magicMarkups(string) {
+                               if (string) {
+                                       string = string.toString();
+                                       string = string.replace(/\(\!\(([\s\S]*?)\)\!\)/g,
+                                                       function(x, a) {
+                                                               var b = a.split('|!|');
+                                                               if (altKey === true) {
+                                                                       return (b[1] !== undefined) ? b[1] : b[0];
+                                                               } else {
+                                                                       return (b[1] === undefined) ? "" : b[0];
+                                                               }
+                                                       }
+                                       );
+                                       // [![prompt]!], [![prompt:!:value]!]
+                                       string = string.replace(/\[\!\[([\s\S]*?)\]\!\]/g,
+                                                       function(x, a) {
+                                                               var b = a.split(':!:');
+                                                               if (abort === true) {
+                                                                       return false;
+                                                               }
+                                                               value = prompt(b[0], (b[1]) ? b[1] : '');
+                                                               if (value === null) {
+                                                                       abort = true;
+                                                               }
+                                                               return value;
+                                                       }
+                                       );
+                                       return string;
+                               }
+                               return "";
+                       }
+
+                       // prepare action
+                       function prepare(action) {
+                               if ($.isFunction(action)) {
+                                       action = action(hash);
+                               }
+                               return magicMarkups(action);
+                       }
+
+                       // build block to insert
+                       function build(string) {
+                               var openWith = prepare(clicked.openWith);
+                               var placeHolder = prepare(clicked.placeHolder);
+                               var replaceWith = prepare(clicked.replaceWith);
+                               var closeWith = prepare(clicked.closeWith);
+                               var openBlockWith = prepare(clicked.openBlockWith);
+                               var closeBlockWith = prepare(clicked.closeBlockWith);
+                               var multiline = clicked.multiline;
+
+                               if (replaceWith !== "") {
+                                       block = openWith + replaceWith + closeWith;
+                               } else if (selection === '' && placeHolder !== '') {
+                                       block = openWith + placeHolder + closeWith;
+                               } else {
+                                       string = string || selection;
+
+                                       var lines = [string], blocks = [];
+
+                                       if (multiline === true) {
+                                               lines = string.split(/\r?\n/);
+                                       }
+
+                                       for (var l = 0; l < lines.length; l++) {
+                                               var line = '';
+                                               try {
+                                                       line = lines[l];
+                                               } catch (err) {
+
+                                               }
+                                               var trailingSpaces;
+                                               if (trailingSpaces = line.match(/ *$/)) {
+                                                       blocks.push(openWith + line.replace(/ *$/g, '') + closeWith + trailingSpaces);
+                                               } else {
+                                                       blocks.push(openWith + line + closeWith);
+                                               }
+                                       }
+
+                                       block = blocks.join("\n");
+                               }
+
+                               block = openBlockWith + block + closeBlockWith;
+
+                               return {block: block,
+                                       openWith: openWith,
+                                       replaceWith: replaceWith,
+                                       placeHolder: placeHolder,
+                                       closeWith: closeWith
+                               };
+                       }
+
+                       // define markup to insert
+                       function markup(button) {
+                               var len, j, n, i;
+                               hash = clicked = button;
+                               get();
+                               $.extend(hash, {line: "",
+                                       root: options.root,
+                                       textarea: textarea,
+                                       selection: (selection || ''),
+                                       caretPosition: caretPosition,
+                                       ctrlKey: ctrlKey,
+                                       shiftKey: shiftKey,
+                                       altKey: altKey
+                               }
+                               );
+                               // callbacks before insertion
+                               prepare(options.beforeInsert);
+                               prepare(clicked.beforeInsert);
+                               if ((ctrlKey === true && shiftKey === true) || button.multiline === true) {
+                                       prepare(clicked.beforeMultiInsert);
+                               }
+                               $.extend(hash, {line: 1});
+
+                               if ((ctrlKey === true && shiftKey === true)) {
+                                       lines = selection.split(/\r?\n/);
+                                       for (j = 0, n = lines.length, i = 0; i < n; i++) {
+                                               if ($.trim(lines[i]) !== '') {
+                                                       $.extend(hash, {line: ++j, selection: lines[i]});
+                                                       lines[i] = build(lines[i]).block;
+                                               } else {
+                                                       lines[i] = "";
+                                               }
+                                       }
+
+                                       string = {block: lines.join('\n')};
+                                       start = caretPosition;
+                                       len = string.block.length;
+                               } else if (ctrlKey === true) {
+                                       string = build(selection);
+                                       start = caretPosition + string.openWith.length;
+                                       len = string.block.length - string.openWith.length - string.closeWith.length;
+                                       len = len - (string.block.match(/ $/) ? 1 : 0);
+                                       len -= fixIeBug(string.block);
+                               } else if (shiftKey === true) {
+                                       string = build(selection);
+                                       start = caretPosition;
+                                       len = string.block.length;
+                                       len -= fixIeBug(string.block);
+                               } else {
+                                       string = build(selection);
+                                       start = caretPosition + string.block.length;
+                                       len = 0;
+                                       start -= fixIeBug(string.block);
+                               }
+                               if ((selection === '' && string.replaceWith === '')) {
+                                       caretOffset += fixOperaBug(string.block);
+
+                                       start = caretPosition + string.openWith.length;
+                                       len = string.block.length - string.openWith.length - string.closeWith.length;
+
+                                       caretOffset = $$.val().substring(caretPosition, $$.val().length).length;
+                                       caretOffset -= fixOperaBug($$.val().substring(0, caretPosition));
+                               }
+                               $.extend(hash, {caretPosition: caretPosition, scrollPosition: scrollPosition});
+
+                               if (string.block !== selection && abort === false) {
+                                       insert(string.block);
+                                       set(start, len);
+                               } else {
+                                       caretOffset = -1;
+                               }
+                               get();
+
+                               $.extend(hash, {line: '', selection: selection});
+
+                               // callbacks after insertion
+                               if ((ctrlKey === true && shiftKey === true) || button.multiline === true) {
+                                       prepare(clicked.afterMultiInsert);
+                               }
+                               prepare(clicked.afterInsert);
+                               prepare(options.afterInsert);
+
+                               // refresh preview if opened
+                               if (previewWindow && options.previewAutoRefresh) {
+                                       refreshPreview();
+                               }
+
+                               // reinit keyevent
+                               shiftKey = altKey = ctrlKey = abort = false;
+                       }
+
+                       // Substract linefeed in Opera
+                       function fixOperaBug(string) {
+                               return 0;
+                       }
+                       // Substract linefeed in IE
+                       function fixIeBug(string) {
+                               return 0;
+                       }
+
+                       // add markup
+                       function insert(block) {
+                               if (document.selection) {
+                                       var newSelection = document.selection.createRange();
+                                       newSelection.text = block;
+                               } else {
+                                       textarea.value = textarea.value.substring(0, caretPosition) + block + textarea.value.substring(caretPosition + selection.length, textarea.value.length);
+                               }
+                       }
+
+                       // set a selection
+                       function set(start, len) {
+                               if (textarea.createTextRange) {
+                                       // quick fix to make it work on Opera 9.5
+
+                                       range = textarea.createTextRange();
+                                       range.collapse(true);
+                                       range.moveStart('character', start);
+                                       range.moveEnd('character', len);
+                                       range.select();
+                               } else if (textarea.setSelectionRange) {
+                                       textarea.setSelectionRange(start, start + len);
+                               }
+                               textarea.scrollTop = scrollPosition;
+                               textarea.focus();
+                       }
+
+                       // get the selection
+                       function get() {
+                               textarea.focus();
+
+                               scrollPosition = textarea.scrollTop;
+                               caretPosition = textarea.selectionStart;
+                               selection = textarea.value.substring(caretPosition, textarea.selectionEnd);
+
+                               return selection;
+                       }
+
+                       // open preview window
+                       function preview() {
+                               if (typeof options.previewHandler === 'function') {
+                                       previewWindow = true;
+                               } else if (options.previewInElement) {
+                                       previewWindow = $(options.previewInElement);
+                               } else if (!previewWindow || previewWindow.closed) {
+                                       if (options.previewInWindow) {
+                                               previewWindow = window.open('', 'preview', options.previewInWindow);
+                                               $(window).unload(function() {
+                                                       previewWindow.close();
+                                               });
+                                       } else {
+                                               iFrame = $('<iframe class="markItUpPreviewFrame"></iframe>');
+                                               if (options.previewPosition == 'after') {
+                                                       iFrame.insertAfter(footer);
+                                               } else {
+                                                       iFrame.insertBefore(header);
+                                               }
+                                               previewWindow = iFrame[iFrame.length - 1].contentWindow || frame[iFrame.length - 1];
+                                       }
+                               } else if (altKey === true) {
+                                       if (iFrame) {
+                                               iFrame.remove();
+                                       } else {
+                                               previewWindow.close();
+                                       }
+                                       previewWindow = iFrame = false;
+                               }
+                               if (!options.previewAutoRefresh) {
+                                       refreshPreview();
+                               }
+                               if (options.previewInWindow) {
+                                       previewWindow.focus();
+                               }
+                       }
+
+                       // refresh Preview window
+                       function refreshPreview() {
+                               renderPreview();
+                       }
+
+                       function renderPreview() {
+                               var phtml;
+                               if (options.previewHandler && typeof options.previewHandler === 'function') {
+                                       options.previewHandler($$.val());
+                               } else if (options.previewParser && typeof options.previewParser === 'function') {
+                                       var data = options.previewParser($$.val());
+                                       writeInPreview(localize(data, 1));
+                               } else if (options.previewParserPath !== '') {
+                                       $.ajax({
+                                               type: 'POST',
+                                               dataType: 'text',
+                                               global: false,
+                                               url: options.previewParserPath,
+                                               data: options.previewParserVar + '=' + encodeURIComponent($$.val()),
+                                               success: function(data) {
+                                                       writeInPreview(localize(data, 1));
+                                               }
+                                       });
+                               } else {
+                                       if (!template) {
+                                               $.ajax({
+                                                       url: options.previewTemplatePath,
+                                                       dataType: 'text',
+                                                       global: false,
+                                                       success: function(data) {
+                                                               writeInPreview(localize(data, 1).replace(/<!-- content -->/g, $$.val()));
+                                                       }
+                                               });
+                                       }
+                               }
+                               return false;
+                       }
+
+                       function writeInPreview(data) {
+                               if (options.previewInElement) {
+                                       $(options.previewInElement).html(data);
+                               } else if (previewWindow && previewWindow.document) {
+                                       try {
+                                               sp = previewWindow.document.documentElement.scrollTop
+                                       } catch (e) {
+                                               sp = 0;
+                                       }
+                                       previewWindow.document.open();
+                                       previewWindow.document.write(data);
+                                       previewWindow.document.close();
+                                       previewWindow.document.documentElement.scrollTop = sp;
+                               }
+                       }
+
+                       // set keys pressed
+                       function keyPressed(e) {
+                               shiftKey = e.shiftKey;
+                               altKey = e.altKey;
+                               ctrlKey = (!(e.altKey && e.ctrlKey)) ? (e.ctrlKey || e.metaKey) : false;
+
+                               if (e.type === 'keydown') {
+                                       if (ctrlKey === true) {
+                                               li = $('a[accesskey="' + ((e.keyCode == 13) ? '\\n' : String.fromCharCode(e.keyCode)) + '"]', header).parent('li');
+                                               if (li.length !== 0) {
+                                                       ctrlKey = false;
+                                                       setTimeout(function() {
+                                                               li.triggerHandler('mouseup');
+                                                       }, 1);
+                                                       return false;
+                                               }
+                                       }
+                                       if (e.keyCode === 13 || e.keyCode === 10) { // Enter key
+                                               if (ctrlKey === true) {  // Enter + Ctrl
+                                                       ctrlKey = false;
+                                                       markup(options.onCtrlEnter);
+                                                       return options.onCtrlEnter.keepDefault;
+                                               } else if (shiftKey === true) { // Enter + Shift
+                                                       shiftKey = false;
+                                                       markup(options.onShiftEnter);
+                                                       return options.onShiftEnter.keepDefault;
+                                               } else { // only Enter
+                                                       markup(options.onEnter);
+                                                       return options.onEnter.keepDefault;
+                                               }
+                                       }
+                                       if (e.keyCode === 9) { // Tab key
+                                               if (shiftKey == true || ctrlKey == true || altKey == true) {
+                                                       return false;
+                                               }
+                                               if (caretOffset !== -1) {
+                                                       get();
+                                                       caretOffset = $$.val().length - caretOffset;
+                                                       set(caretOffset, 0);
+                                                       caretOffset = -1;
+                                                       return false;
+                                               } else {
+                                                       markup(options.onTab);
+                                                       return options.onTab.keepDefault;
+                                               }
+                                       }
+                               }
+                       }
+
+                       function remove() {
+                               $$.unbind(".markItUp").removeClass('markItUpEditor');
+                               $$.parent('div').parent('div.markItUp').parent('div').replaceWith($$);
+                               $$.data('markItUp', null);
+                       }
+
+                       init();
+               });
+       };
+
+       $.fn.markItUpRemove = function() {
+               return this.each(function() {
+                       $(this).markItUp('remove');
+               }
+               );
+       };
+
+       $.markItUp = function(settings) {
+               var options = {target: false};
+               $.extend(options, settings);
+               if (options.target) {
+                       return $(options.target).each(function() {
+                               $(this).focus();
+                               $(this).trigger('insertion', [options]);
+                       });
+               } else {
+                       $('textarea').trigger('insertion', [options]);
+               }
+       };
+})(jQuery);
diff --git a/CubeIT/js/jquery/markitup/sets/default/images/bold.png b/CubeIT/js/jquery/markitup/sets/default/images/bold.png
new file mode 100644 (file)
index 0000000..889ae80
Binary files /dev/null and b/CubeIT/js/jquery/markitup/sets/default/images/bold.png differ
diff --git a/CubeIT/js/jquery/markitup/sets/default/images/clean.png b/CubeIT/js/jquery/markitup/sets/default/images/clean.png
new file mode 100644 (file)
index 0000000..7e7cefb
Binary files /dev/null and b/CubeIT/js/jquery/markitup/sets/default/images/clean.png differ
diff --git a/CubeIT/js/jquery/markitup/sets/default/images/image.png b/CubeIT/js/jquery/markitup/sets/default/images/image.png
new file mode 100644 (file)
index 0000000..fc3c393
Binary files /dev/null and b/CubeIT/js/jquery/markitup/sets/default/images/image.png differ
diff --git a/CubeIT/js/jquery/markitup/sets/default/images/italic.png b/CubeIT/js/jquery/markitup/sets/default/images/italic.png
new file mode 100644 (file)
index 0000000..8482ac8
Binary files /dev/null and b/CubeIT/js/jquery/markitup/sets/default/images/italic.png differ
diff --git a/CubeIT/js/jquery/markitup/sets/default/images/link.png b/CubeIT/js/jquery/markitup/sets/default/images/link.png
new file mode 100644 (file)
index 0000000..25eacb7
Binary files /dev/null and b/CubeIT/js/jquery/markitup/sets/default/images/link.png differ
diff --git a/CubeIT/js/jquery/markitup/sets/default/images/list-bullet.png b/CubeIT/js/jquery/markitup/sets/default/images/list-bullet.png
new file mode 100644 (file)
index 0000000..4a8672b
Binary files /dev/null and b/CubeIT/js/jquery/markitup/sets/default/images/list-bullet.png differ
diff --git a/CubeIT/js/jquery/markitup/sets/default/images/list-numeric.png b/CubeIT/js/jquery/markitup/sets/default/images/list-numeric.png
new file mode 100644 (file)
index 0000000..33b0b8d
Binary files /dev/null and b/CubeIT/js/jquery/markitup/sets/default/images/list-numeric.png differ
diff --git a/CubeIT/js/jquery/markitup/sets/default/images/picture.png b/CubeIT/js/jquery/markitup/sets/default/images/picture.png
new file mode 100644 (file)
index 0000000..4a158fe
Binary files /dev/null and b/CubeIT/js/jquery/markitup/sets/default/images/picture.png differ
diff --git a/CubeIT/js/jquery/markitup/sets/default/images/preview.png b/CubeIT/js/jquery/markitup/sets/default/images/preview.png
new file mode 100644 (file)
index 0000000..a9925a0
Binary files /dev/null and b/CubeIT/js/jquery/markitup/sets/default/images/preview.png differ
diff --git a/CubeIT/js/jquery/markitup/sets/default/images/stroke.png b/CubeIT/js/jquery/markitup/sets/default/images/stroke.png
new file mode 100644 (file)
index 0000000..612058a
Binary files /dev/null and b/CubeIT/js/jquery/markitup/sets/default/images/stroke.png differ
diff --git a/CubeIT/js/jquery/markitup/sets/default/set.js b/CubeIT/js/jquery/markitup/sets/default/set.js
new file mode 100644 (file)
index 0000000..b7fdf81
--- /dev/null
@@ -0,0 +1,30 @@
+// ----------------------------------------------------------------------------
+// markItUp!
+// ----------------------------------------------------------------------------
+// Copyright (C) 2011 Jay Salvat
+// http://markitup.jaysalvat.com/
+// ----------------------------------------------------------------------------
+// Html tags
+// http://en.wikipedia.org/wiki/html
+// ----------------------------------------------------------------------------
+// Basic set. Feel free to add more tags
+// ----------------------------------------------------------------------------
+var mySettings = {
+       onShiftEnter:   {keepDefault:false, replaceWith:'<br />\n'},
+       onCtrlEnter:    {keepDefault:false, openWith:'\n<p>', closeWith:'</p>'},
+       onTab:                  {keepDefault:false, replaceWith:'    '},
+       markupSet:  [   
+               {name:'Bold', key:'B', openWith:'(!(<strong>|!|<b>)!)', closeWith:'(!(</strong>|!|</b>)!)' },
+               {name:'Italic', key:'I', openWith:'(!(<em>|!|<i>)!)', closeWith:'(!(</em>|!|</i>)!)'  },
+               {name:'Stroke through', key:'S', openWith:'<del>', closeWith:'</del>' },
+               {separator:'---------------' },
+               {name:'Bulleted List', openWith:'    <li>', closeWith:'</li>', multiline:true, openBlockWith:'<ul>\n', closeBlockWith:'\n</ul>'},
+               {name:'Numeric List', openWith:'    <li>', closeWith:'</li>', multiline:true, openBlockWith:'<ol>\n', closeBlockWith:'\n</ol>'},
+               {separator:'---------------' },
+               {name:'Picture', key:'P', replaceWith:'<img src="[![Source:!:http://]!]" alt="[![Alternative text]!]" />' },
+               {name:'Link', key:'L', openWith:'<a href="[![Link:!:http://]!]"(!( title="[![Title]!]")!)>', closeWith:'</a>', placeHolder:'Your text to link...' },
+               {separator:'---------------' },
+               {name:'Clean', className:'clean', replaceWith:function(markitup) { return markitup.selection.replace(/<(.*?)>/g, "") } },               
+               {name:'Preview', className:'preview',  call:'preview'}
+       ]
+}
diff --git a/CubeIT/js/jquery/markitup/sets/default/style.css b/CubeIT/js/jquery/markitup/sets/default/style.css
new file mode 100644 (file)
index 0000000..336b60e
--- /dev/null
@@ -0,0 +1,34 @@
+/* -------------------------------------------------------------------
+// markItUp!
+// By Jay Salvat - http://markitup.jaysalvat.com/
+// ------------------------------------------------------------------*/
+.markItUp .markItUpButton1 a {
+       background-image:url(images/bold.png);
+}
+.markItUp .markItUpButton2 a {
+       background-image:url(images/italic.png);
+}
+.markItUp .markItUpButton3 a {
+       background-image:url(images/stroke.png);
+}
+
+.markItUp .markItUpButton4 a {
+       background-image:url(images/list-bullet.png); 
+}
+.markItUp .markItUpButton5 a {
+       background-image:url(images/list-numeric.png);
+}
+
+.markItUp .markItUpButton6 a {
+       background-image:url(images/picture.png); 
+}
+.markItUp .markItUpButton7 a {
+       background-image:url(images/link.png);
+}
+
+.markItUp .markItUpButton8 a {
+       background-image:url(images/clean.png);
+}
+.markItUp .preview a {
+       background-image:url(images/preview.png);
+}
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/images/bg-container.png b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-container.png
new file mode 100644 (file)
index 0000000..ec38b8e
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-container.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-bbcode.png b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-bbcode.png
new file mode 100644 (file)
index 0000000..39cdbd8
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-bbcode.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-dotclear.png b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-dotclear.png
new file mode 100644 (file)
index 0000000..b3188dc
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-dotclear.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-html.png b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-html.png
new file mode 100644 (file)
index 0000000..11bff45
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-html.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-json.png b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-json.png
new file mode 100644 (file)
index 0000000..e898c1d
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-json.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-markdown.png b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-markdown.png
new file mode 100644 (file)
index 0000000..c199715
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-markdown.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-textile.png b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-textile.png
new file mode 100644 (file)
index 0000000..3ab1e9f
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-textile.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-wiki.png b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-wiki.png
new file mode 100644 (file)
index 0000000..7887181
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-wiki.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-xml.png b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-xml.png
new file mode 100644 (file)
index 0000000..33b1c5d
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor-xml.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor.png b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor.png
new file mode 100644 (file)
index 0000000..fc06bd2
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/markitup/images/bg-editor.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/images/handle.png b/CubeIT/js/jquery/markitup/skins/markitup/images/handle.png
new file mode 100644 (file)
index 0000000..3993b20
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/markitup/images/handle.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/images/menu.png b/CubeIT/js/jquery/markitup/skins/markitup/images/menu.png
new file mode 100644 (file)
index 0000000..de337c8
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/markitup/images/menu.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/images/submenu.png b/CubeIT/js/jquery/markitup/skins/markitup/images/submenu.png
new file mode 100644 (file)
index 0000000..03d1977
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/markitup/images/submenu.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/markitup/style.css b/CubeIT/js/jquery/markitup/skins/markitup/style.css
new file mode 100644 (file)
index 0000000..800aaad
--- /dev/null
@@ -0,0 +1,183 @@
+/* -------------------------------------------------------------------
+// markItUp! Universal MarkUp Engine, JQuery plugin
+// By Jay Salvat - http://markitup.jaysalvat.com/
+// ------------------------------------------------------------------*/
+.markItUp * {
+       margin: 0px;
+       padding: 0px;
+       outline: none;
+}
+
+.markItUp a:link,
+.markItUp a:visited {
+       color: #000;
+       text-decoration: none;
+}
+
+.markItUp {
+
+}
+
+.markItUpContainer {
+       border: 1px solid #3C769D;
+       background: #FFF url(images/bg-container.png) repeat-x top left;
+       padding: 5px 5px 2px 5px;
+       font: 11px Verdana, Arial, Helvetica, sans-serif;
+       border-radius: 5px;
+}
+
+.markItUpEditor {
+       font: 12px 'Courier New', Courier, monospace;
+       padding: 5px 5px 5px 35px;
+       border: 3px solid #3C769D;
+       height: 320px;
+       background: #FFF url(images/bg-editor.png) no-repeat;
+       clear: both;
+       line-height: 18px;
+       overflow: auto;
+}
+
+.markItUpPreviewFrame {
+       overflow: auto;
+       background-color: #FFFFFF;
+       border: 1px solid #3C769D;
+       width: 99.9%;
+       height: 300px;
+       margin: 5px 0;
+}
+
+.markItUpFooter {
+       width: 100%;
+       cursor: n-resize;
+}
+
+.markItUpResizeHandle {
+       overflow: hidden;
+       width: 22px;
+       height: 5px;
+       margin-left: auto;
+       margin-right: auto;
+       background-image: url(images/handle.png);
+       cursor: n-resize;
+}
+
+/***************************************************************************************/
+/* first row of buttons */
+.markItUpHeader ul li {
+       list-style: none;
+       float: left;
+       position: relative;
+}
+
+.markItUpHeader ul li a.color {
+       margin-right: 4px;
+       padding: 0;
+}
+
+.markItUpHeader ul li ul {
+       display: none;
+}
+
+.markItUpHeader ul li:hover > ul {
+       display: block;
+}
+
+.markItUpHeader ul .markItUpDropMenu {
+       background: transparent url(images/menu.png) no-repeat 115% 50%;
+       margin-right: 5px;
+}
+
+.markItUpHeader ul .markItUpDropMenu li {
+       margin-right: 0px;
+}
+
+.markItUpHeader ul .markItUpSeparator {
+       margin: 0 10px;
+       width: 1px;
+       height: 16px;
+       overflow: hidden;
+       background-color: #CCC;
+}
+
+.markItUpHeader ul ul .markItUpSeparator {
+       width: auto;
+       height: 1px;
+       margin: 0px;
+}
+
+/* next rows of buttons */
+.markItUpHeader ul ul {
+       display: none;
+       position: absolute;
+       top: 18px;
+       left: 0px;
+       background: #F5F5F5;
+       border: 1px solid #3C769D;
+       height: inherit;
+}
+
+.markItUpHeader ul ul li {
+       float: none;
+       border-bottom: 1px solid #3C769D;
+}
+
+.markItUpHeader ul ul .markItUpDropMenu {
+       background: #F5F5F5 url(images/submenu.png) no-repeat 100% 50%;
+}
+
+/* next rows of buttons */
+.markItUpHeader ul ul ul {
+       position: absolute;
+       top: -1px;
+       left: 150px;
+}
+
+.markItUpHeader ul ul ul li {
+       float: none;
+}
+
+.markItUpHeader ul a {
+       display: block;
+       width: 16px;
+       height: 16px;
+       text-indent: -10000px;
+       background-repeat: no-repeat;
+       padding: 3px;
+       margin: 0px;
+}
+
+.markItUpHeader ul ul a {
+       display: block;
+       padding-left: 0px;
+       text-indent: 0;
+       width: 120px;
+       padding: 5px 5px 5px 25px;
+       background-position: 2px 50%;
+}
+
+.markItUpHeader ul ul a:hover {
+       color: #FFF;
+       background-color: #3C769D;
+}
+
+/***************************************************************************************/
+.html .markItUpEditor {
+       background-image: url(images/bg-editor-html.png);
+}
+
+.markdown .markItUpEditor {
+       background-image: url(images/bg-editor-markdown.png);
+}
+
+.textile .markItUpEditor {
+       background-image: url(images/bg-editor-textile.png);
+}
+
+.bbcode .markItUpEditor {
+       background-image: url(images/bg-editor-bbcode.png);
+}
+
+.wiki .markItUpEditor,
+.dotclear .markItUpEditor {
+       background-image: url(images/bg-editor-wiki.png);
+}
\ No newline at end of file
diff --git a/CubeIT/js/jquery/markitup/skins/simple/images/handle.png b/CubeIT/js/jquery/markitup/skins/simple/images/handle.png
new file mode 100644 (file)
index 0000000..3993b20
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/simple/images/handle.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/simple/images/menu.png b/CubeIT/js/jquery/markitup/skins/simple/images/menu.png
new file mode 100644 (file)
index 0000000..44a07af
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/simple/images/menu.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/simple/images/submenu.png b/CubeIT/js/jquery/markitup/skins/simple/images/submenu.png
new file mode 100644 (file)
index 0000000..03d1977
Binary files /dev/null and b/CubeIT/js/jquery/markitup/skins/simple/images/submenu.png differ
diff --git a/CubeIT/js/jquery/markitup/skins/simple/style.css b/CubeIT/js/jquery/markitup/skins/simple/style.css
new file mode 100644 (file)
index 0000000..fe3753c
--- /dev/null
@@ -0,0 +1,118 @@
+/* -------------------------------------------------------------------
+// markItUp! Universal MarkUp Engine, JQuery plugin
+// By Jay Salvat - http://markitup.jaysalvat.com/
+// ------------------------------------------------------------------*/
+.markItUp * {
+       margin:0px; padding:0px;
+       outline:none;
+}
+.markItUp a:link,
+.markItUp a:visited {
+       color:#000;
+       text-decoration:none;
+}
+.markItUp  {
+       width:700px;
+       margin:5px 0 5px 0;
+}
+.markItUpContainer  {
+       font:11px Verdana, Arial, Helvetica, sans-serif;
+}
+.markItUpEditor {
+       font:12px 'Courier New', Courier, monospace;
+       padding:5px;
+       width:690px;
+       height:320px;
+       clear:both;
+       line-height:18px;
+       overflow:auto;
+}
+.markItUpPreviewFrame  {
+       overflow:auto;
+       background-color:#FFF;
+       width:99.9%;
+       height:300px;
+       margin:5px 0;
+}
+.markItUpFooter {
+       width:100%;
+}
+.markItUpResizeHandle {
+       overflow:hidden;
+       width:22px; height:5px;
+       margin-left:auto;
+       margin-right:auto;
+       background-image:url(images/handle.png);
+       cursor:n-resize;
+}
+/***************************************************************************************/
+/* first row of buttons */
+.markItUpHeader ul li  {
+       list-style:none;
+       float:left;
+       position:relative;
+}
+.markItUpHeader ul li:hover > ul{
+       display:block;
+}
+.markItUpHeader ul .markItUpDropMenu {
+       background:transparent url(images/menu.png) no-repeat 115% 50%;
+       margin-right:5px;
+}
+.markItUpHeader ul .markItUpDropMenu li {
+       margin-right:0px;
+}
+/* next rows of buttons */
+.markItUpHeader ul ul {
+       display:none;
+       position:absolute;
+       top:18px; left:0px;     
+       background:#FFF;
+       border:1px solid #000;
+}
+.markItUpHeader ul ul li {
+       float:none;
+       border-bottom:1px solid #000;
+}
+.markItUpHeader ul ul .markItUpDropMenu {
+       background:#FFF url(images/submenu.png) no-repeat 100% 50%;
+}
+.markItUpHeader ul .markItUpSeparator {
+       margin:0 10px;
+       width:1px;
+       height:16px;
+       overflow:hidden;
+       background-color:#CCC;
+}
+.markItUpHeader ul ul .markItUpSeparator {
+       width:auto; height:1px;
+       margin:0px;
+}
+/* next rows of buttons */
+.markItUpHeader ul ul ul {
+       position:absolute;
+       top:-1px; left:150px; 
+}
+.markItUpHeader ul ul ul li {
+       float:none;
+}
+.markItUpHeader ul a {
+       display:block;
+       width:16px; height:16px;
+       text-indent:-10000px;
+       background-repeat:no-repeat;
+       padding:3px;
+       margin:0px;
+}
+.markItUpHeader ul ul a {
+       display:block;
+       padding-left:0px;
+       text-indent:0;
+       width:120px; 
+       padding:5px 5px 5px 25px;
+       background-position:2px 50%;
+}
+.markItUpHeader ul ul a:hover  {
+       color:#FFF;
+       background-color:#000;
+}
diff --git a/CubeIT/js/jquery/markitup/templates/preview.css b/CubeIT/js/jquery/markitup/templates/preview.css
new file mode 100644 (file)
index 0000000..ad91a87
--- /dev/null
@@ -0,0 +1,5 @@
+/* preview style examples */
+body {
+       background-color:#EFEFEF;
+       font:70% Verdana, Arial, Helvetica, sans-serif;
+}
\ No newline at end of file
diff --git a/CubeIT/js/jquery/markitup/templates/preview.html b/CubeIT/js/jquery/markitup/templates/preview.html
new file mode 100644 (file)
index 0000000..b8b3702
--- /dev/null
@@ -0,0 +1,11 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>markItUp! preview template</title>
+<link rel="stylesheet" type="text/css" href="~/templates/preview.css" />
+</head>
+<body>
+<!-- content -->
+</body>
+</html>
diff --git a/CubeIT/js/jquery/nanoscroller/jquery.nanoscroller.js b/CubeIT/js/jquery/nanoscroller/jquery.nanoscroller.js
new file mode 100644 (file)
index 0000000..6d973f4
--- /dev/null
@@ -0,0 +1,813 @@
+/*! nanoScrollerJS - v0.7.4 - 2013
+* http://jamesflorentino.github.com/nanoScrollerJS/
+* Copyright (c) 2013 James Florentino; Licensed MIT */
+(function($, window, document) {
+  "use strict";
+  var BROWSER_IS_IE7, BROWSER_SCROLLBAR_WIDTH, DOMSCROLL, DOWN, DRAG, KEYDOWN, KEYUP, MOUSEDOWN, MOUSEMOVE, MOUSEUP, MOUSEWHEEL, NanoScroll, PANEDOWN, RESIZE, SCROLL, SCROLLBAR, TOUCHMOVE, UP, WHEEL, defaults, getBrowserScrollbarWidth;
+  defaults = {
+    /**
+      a classname for the pane element.
+      @property paneClass
+      @type String
+      @default 'pane'
+    */
+
+    paneClass: 'pane',
+    /**
+      a classname for the slider element.
+      @property sliderClass
+      @type String
+      @default 'slider'
+    */
+
+    sliderClass: 'slider',
+    /**
+      a classname for the content element.
+      @property contentClass
+      @type String
+      @default 'content'
+    */
+
+    contentClass: 'content',
+    /**
+      a setting to enable native scrolling in iOS devices.
+      @property iOSNativeScrolling
+      @type Boolean
+      @default false
+    */
+
+    iOSNativeScrolling: false,
+    /**
+      a setting to prevent the rest of the page being
+      scrolled when user scrolls the `.content` element.
+      @property preventPageScrolling
+      @type Boolean
+      @default false
+    */
+
+    preventPageScrolling: false,
+    /**
+      a setting to disable binding to the resize event.
+      @property disableResize
+      @type Boolean
+      @default false
+    */
+
+    disableResize: false,
+    /**
+      a setting to make the scrollbar always visible.
+      @property alwaysVisible
+      @type Boolean
+      @default false
+    */
+
+    alwaysVisible: false,
+    /**
+      a default timeout for the `flash()` method.
+      @property flashDelay
+      @type Number
+      @default 1500
+    */
+
+    flashDelay: 1500,
+    /**
+      a minimum height for the `.slider` element.
+      @property sliderMinHeight
+      @type Number
+      @default 20
+    */
+
+    sliderMinHeight: 20,
+    /**
+      a maximum height for the `.slider` element.
+      @property sliderMaxHeight
+      @type Number
+      @default null
+    */
+
+    sliderMaxHeight: null,
+    /**
+      an alternate document context.
+      @property documentContext
+      @type Document
+      @default null
+    */
+
+    documentContext: null,
+    /**
+      an alternate window context.
+      @property windowContext
+      @type Window
+      @default null
+    */
+
+    windowContext: null
+  };
+  /**
+    @property SCROLLBAR
+    @type String
+    @static
+    @final
+    @private
+  */
+
+  SCROLLBAR = 'scrollbar';
+  /**
+    @property SCROLL
+    @type String
+    @static
+    @final
+    @private
+  */
+
+  SCROLL = 'scroll';
+  /**
+    @property MOUSEDOWN
+    @type String
+    @final
+    @private
+  */
+
+  MOUSEDOWN = 'mousedown';
+  /**
+    @property MOUSEMOVE
+    @type String
+    @static
+    @final
+    @private
+  */
+
+  MOUSEMOVE = 'mousemove';
+  /**
+    @property MOUSEWHEEL
+    @type String
+    @final
+    @private
+  */
+
+  MOUSEWHEEL = 'mousewheel';
+  /**
+    @property MOUSEUP
+    @type String
+    @static
+    @final
+    @private
+  */
+
+  MOUSEUP = 'mouseup';
+  /**
+    @property RESIZE
+    @type String
+    @final
+    @private
+  */
+
+  RESIZE = 'resize';
+  /**
+    @property DRAG
+    @type String
+    @static
+    @final
+    @private
+  */
+
+  DRAG = 'drag';
+  /**
+    @property UP
+    @type String
+    @static
+    @final
+    @private
+  */
+
+  UP = 'up';
+  /**
+    @property PANEDOWN
+    @type String
+    @static
+    @final
+    @private
+  */
+
+  PANEDOWN = 'panedown';
+  /**
+    @property DOMSCROLL
+    @type String
+    @static
+    @final
+    @private
+  */
+
+  DOMSCROLL = 'DOMMouseScroll';
+  /**
+    @property DOWN
+    @type String
+    @static
+    @final
+    @private
+  */
+
+  DOWN = 'down';
+  /**
+    @property WHEEL
+    @type String
+    @static
+    @final
+    @private
+  */
+
+  WHEEL = 'wheel';
+  /**
+    @property KEYDOWN
+    @type String
+    @static
+    @final
+    @private
+  */
+
+  KEYDOWN = 'keydown';
+  /**
+    @property KEYUP
+    @type String
+    @static
+    @final
+    @private
+  */
+
+  KEYUP = 'keyup';
+  /**
+    @property TOUCHMOVE
+    @type String
+    @static
+    @final
+    @private
+  */
+
+  TOUCHMOVE = 'touchmove';
+  /**
+    @property BROWSER_IS_IE7
+    @type Boolean
+    @static
+    @final
+    @private
+  */
+
+  BROWSER_IS_IE7 = window.navigator.appName === 'Microsoft Internet Explorer' && /msie 7./i.test(window.navigator.appVersion) && window.ActiveXObject;
+  /**
+    @property BROWSER_SCROLLBAR_WIDTH
+    @type Number
+    @static
+    @default null
+    @private
+  */
+
+  BROWSER_SCROLLBAR_WIDTH = null;
+  /**
+    Returns browser's native scrollbar width
+    @method getBrowserScrollbarWidth
+    @return {Number} the scrollbar width in pixels
+    @static
+    @private
+  */
+
+  getBrowserScrollbarWidth = function() {
+    var outer, outerStyle, scrollbarWidth;
+    outer = document.createElement('div');
+    outerStyle = outer.style;
+    outerStyle.position = 'absolute';
+    outerStyle.width = '100px';
+    outerStyle.height = '100px';
+    outerStyle.overflow = SCROLL;
+    outerStyle.top = '-9999px';
+    document.body.appendChild(outer);
+    scrollbarWidth = outer.offsetWidth - outer.clientWidth;
+    document.body.removeChild(outer);
+    return scrollbarWidth;
+  };
+  /**
+    @class NanoScroll
+    @param element {HTMLElement|Node} the main element
+    @param options {Object} nanoScroller's options
+    @constructor
+  */
+
+  NanoScroll = (function() {
+    function NanoScroll(el, options) {
+      this.el = el;
+      this.options = options;
+      BROWSER_SCROLLBAR_WIDTH || (BROWSER_SCROLLBAR_WIDTH = getBrowserScrollbarWidth());
+      this.$el = $(this.el);
+      this.doc = $(this.options.documentContext || document);
+      this.win = $(this.options.windowContext || window);
+      this.$content = this.$el.find("." + options.contentClass);
+      this.$content.attr('tabindex', this.options.tabIndex || 0);
+      this.content = this.$content[0];
+      if (this.options.iOSNativeScrolling && (this.el.style.WebkitOverflowScrolling != null)) {
+        this.nativeScrolling();
+      } else {
+        this.generate();
+      }
+      this.createEvents();
+      this.addEvents();
+      this.reset();
+    }
+
+    /**
+      Prevents the rest of the page being scrolled
+      when user scrolls the `.content` element.
+      @method preventScrolling
+      @param event {Event}
+      @param direction {String} Scroll direction (up or down)
+      @private
+    */
+
+
+    NanoScroll.prototype.preventScrolling = function(e, direction) {
+      if (!this.isActive) {
+        return;
+      }
+      if (e.type === DOMSCROLL) {
+        if (direction === DOWN && e.originalEvent.detail > 0 || direction === UP && e.originalEvent.detail < 0) {
+          e.preventDefault();
+        }
+      } else if (e.type === MOUSEWHEEL) {
+        if (!e.originalEvent || !e.originalEvent.wheelDelta) {
+          return;
+        }
+        if (direction === DOWN && e.originalEvent.wheelDelta < 0 || direction === UP && e.originalEvent.wheelDelta > 0) {
+          e.preventDefault();
+        }
+      }
+    };
+
+    /**
+      Enable iOS native scrolling
+    */
+
+
+    NanoScroll.prototype.nativeScrolling = function() {
+      this.$content.css({
+        WebkitOverflowScrolling: 'touch'
+      });
+      this.iOSNativeScrolling = true;
+      this.isActive = true;
+    };
+
+    /**
+      Updates those nanoScroller properties that
+      are related to current scrollbar position.
+      @method updateScrollValues
+      @private
+    */
+
+
+    NanoScroll.prototype.updateScrollValues = function() {
+      var content;
+      content = this.content;
+      this.maxScrollTop = content.scrollHeight - content.clientHeight;
+      this.prevScrollTop = this.contentScrollTop || 0;
+      this.contentScrollTop = content.scrollTop;
+      if (!this.iOSNativeScrolling) {
+        this.maxSliderTop = this.paneHeight - this.sliderHeight;
+        this.sliderTop = this.maxScrollTop === 0 ? 0 : this.contentScrollTop * this.maxSliderTop / this.maxScrollTop;
+      }
+    };
+
+    /**
+      Creates event related methods
+      @method createEvents
+      @private
+    */
+
+
+    NanoScroll.prototype.createEvents = function() {
+      var _this = this;
+      this.events = {
+        down: function(e) {
+          _this.isBeingDragged = true;
+          _this.offsetY = e.pageY - _this.slider.offset().top;
+          _this.pane.addClass('active');
+          _this.doc.bind(MOUSEMOVE, _this.events[DRAG]).bind(MOUSEUP, _this.events[UP]);
+          return false;
+        },
+        drag: function(e) {
+          _this.sliderY = e.pageY - _this.$el.offset().top - _this.offsetY;
+          _this.scroll();
+          _this.updateScrollValues();
+          if (_this.contentScrollTop >= _this.maxScrollTop && _this.prevScrollTop !== _this.maxScrollTop) {
+            _this.$el.trigger('scrollend');
+          } else if (_this.contentScrollTop === 0 && _this.prevScrollTop !== 0) {
+            _this.$el.trigger('scrolltop');
+          }
+          return false;
+        },
+        up: function(e) {
+          _this.isBeingDragged = false;
+          _this.pane.removeClass('active');
+          _this.doc.unbind(MOUSEMOVE, _this.events[DRAG]).unbind(MOUSEUP, _this.events[UP]);
+          return false;
+        },
+        resize: function(e) {
+          _this.reset();
+        },
+        panedown: function(e) {
+          _this.sliderY = (e.offsetY || e.originalEvent.layerY) - (_this.sliderHeight * 0.5);
+          _this.scroll();
+          _this.events.down(e);
+          return false;
+        },
+        scroll: function(e) {
+          if (_this.isBeingDragged) {
+            return;
+          }
+          _this.updateScrollValues();
+          if (!_this.iOSNativeScrolling) {
+            _this.sliderY = _this.sliderTop;
+            _this.slider.css({
+              top: _this.sliderTop
+            });
+          }
+          if (e == null) {
+            return;
+          }
+          if (_this.contentScrollTop >= _this.maxScrollTop) {
+            if (_this.options.preventPageScrolling) {
+              _this.preventScrolling(e, DOWN);
+            }
+            if (_this.prevScrollTop !== _this.maxScrollTop) {
+              _this.$el.trigger('scrollend');
+            }
+          } else if (_this.contentScrollTop === 0) {
+            if (_this.options.preventPageScrolling) {
+              _this.preventScrolling(e, UP);
+            }
+            if (_this.prevScrollTop !== 0) {
+              _this.$el.trigger('scrolltop');
+            }
+          }
+        },
+        wheel: function(e) {
+          var delta;
+          if (e == null) {
+            return;
+          }
+          delta = e.delta || e.wheelDelta || (e.originalEvent && e.originalEvent.wheelDelta) || -e.detail || (e.originalEvent && -e.originalEvent.detail);
+          if (delta) {
+            _this.sliderY += -delta / 3;
+          }
+          _this.scroll();
+          return false;
+        }
+      };
+    };
+
+    /**
+      Adds event listeners with jQuery.
+      @method addEvents
+      @private
+    */
+
+
+    NanoScroll.prototype.addEvents = function() {
+      var events;
+      this.removeEvents();
+      events = this.events;
+      if (!this.options.disableResize) {
+        this.win.bind(RESIZE, events[RESIZE]);
+      }
+      if (!this.iOSNativeScrolling) {
+        this.slider.bind(MOUSEDOWN, events[DOWN]);
+        this.pane.bind(MOUSEDOWN, events[PANEDOWN]).bind("" + MOUSEWHEEL + " " + DOMSCROLL, events[WHEEL]);
+      }
+      this.$content.bind("" + SCROLL + " " + MOUSEWHEEL + " " + DOMSCROLL + " " + TOUCHMOVE, events[SCROLL]);
+    };
+
+    /**
+      Removes event listeners with jQuery.
+      @method removeEvents
+      @private
+    */
+
+
+    NanoScroll.prototype.removeEvents = function() {
+      var events;
+      events = this.events;
+      this.win.unbind(RESIZE, events[RESIZE]);
+      if (!this.iOSNativeScrolling) {
+        this.slider.unbind();
+        this.pane.unbind();
+      }
+      this.$content.unbind("" + SCROLL + " " + MOUSEWHEEL + " " + DOMSCROLL + " " + TOUCHMOVE, events[SCROLL]);
+    };
+
+    /**
+      Generates nanoScroller's scrollbar and elements for it.
+      @method generate
+      @chainable
+      @private
+    */
+
+
+    NanoScroll.prototype.generate = function() {
+      var contentClass, cssRule, options, paneClass, sliderClass;
+      options = this.options;
+      paneClass = options.paneClass, sliderClass = options.sliderClass, contentClass = options.contentClass;
+      if (!this.$el.find("" + paneClass).length && !this.$el.find("" + sliderClass).length) {
+        this.$el.append("<div class=\"" + paneClass + "\"><div class=\"" + sliderClass + "\" /></div>");
+      }
+      this.pane = this.$el.children("." + paneClass);
+      this.slider = this.pane.find("." + sliderClass);
+      if (BROWSER_SCROLLBAR_WIDTH) {
+        cssRule = {
+          right: -BROWSER_SCROLLBAR_WIDTH
+        };
+        this.$el.addClass('has-scrollbar');
+      }
+      if (cssRule != null) {
+        this.$content.css(cssRule);
+      }
+      return this;
+    };
+
+    /**
+      @method restore
+      @private
+    */
+
+
+    NanoScroll.prototype.restore = function() {
+      this.stopped = false;
+      this.pane.show();
+      this.addEvents();
+    };
+
+    /**
+      Resets nanoScroller's scrollbar.
+      @method reset
+      @chainable
+      @example
+          $(".nano").nanoScroller();
+    */
+
+
+    NanoScroll.prototype.reset = function() {
+      var content, contentHeight, contentStyle, contentStyleOverflowY, paneBottom, paneHeight, paneOuterHeight, paneTop, parentMaxHeight, sliderHeight;
+      if (this.iOSNativeScrolling) {
+        this.contentHeight = this.content.scrollHeight;
+        return;
+      }
+      if (!this.$el.find("." + this.options.paneClass).length) {
+        this.generate().stop();
+      }
+      if (this.stopped) {
+        this.restore();
+      }
+      content = this.content;
+      contentStyle = content.style;
+      contentStyleOverflowY = contentStyle.overflowY;
+      if (BROWSER_IS_IE7) {
+        this.$content.css({
+          height: this.$content.height()
+        });
+      }
+      contentHeight = content.scrollHeight + BROWSER_SCROLLBAR_WIDTH;
+      parentMaxHeight = parseInt(this.$el.css("max-height"), 10);
+      if (parentMaxHeight > 0) {
+        this.$el.height("");
+        this.$el.height(content.scrollHeight > parentMaxHeight ? parentMaxHeight : content.scrollHeight);
+      }
+      paneHeight = this.pane.outerHeight(false);
+      paneTop = parseInt(this.pane.css('top'), 10);
+      paneBottom = parseInt(this.pane.css('bottom'), 10);
+      paneOuterHeight = paneHeight + paneTop + paneBottom;
+      sliderHeight = Math.round(paneOuterHeight / contentHeight * paneOuterHeight);
+      if (sliderHeight < this.options.sliderMinHeight) {
+        sliderHeight = this.options.sliderMinHeight;
+      } else if ((this.options.sliderMaxHeight != null) && sliderHeight > this.options.sliderMaxHeight) {
+        sliderHeight = this.options.sliderMaxHeight;
+      }
+      if (contentStyleOverflowY === SCROLL && contentStyle.overflowX !== SCROLL) {
+        sliderHeight += BROWSER_SCROLLBAR_WIDTH;
+      }
+      this.maxSliderTop = paneOuterHeight - sliderHeight;
+      this.contentHeight = contentHeight;
+      this.paneHeight = paneHeight;
+      this.paneOuterHeight = paneOuterHeight;
+      this.sliderHeight = sliderHeight;
+      this.slider.height(sliderHeight);
+      this.events.scroll();
+      this.pane.show();
+      this.isActive = true;
+      if ((content.scrollHeight === content.clientHeight) || (this.pane.outerHeight(true) >= content.scrollHeight && contentStyleOverflowY !== SCROLL)) {
+        this.pane.hide();
+        this.isActive = false;
+      } else if (this.el.clientHeight === content.scrollHeight && contentStyleOverflowY === SCROLL) {
+        this.slider.hide();
+      } else {
+        this.slider.show();
+      }
+      this.pane.css({
+        opacity: (this.options.alwaysVisible ? 1 : ''),
+        visibility: (this.options.alwaysVisible ? 'visible' : '')
+      });
+      return this;
+    };
+
+    /**
+      @method scroll
+      @private
+      @example
+          $(".nano").nanoScroller({ scroll: 'top' });
+    */
+
+
+    NanoScroll.prototype.scroll = function() {
+      if (!this.isActive) {
+        return;
+      }
+      this.sliderY = Math.max(0, this.sliderY);
+      this.sliderY = Math.min(this.maxSliderTop, this.sliderY);
+      this.$content.scrollTop((this.paneHeight - this.contentHeight + BROWSER_SCROLLBAR_WIDTH) * this.sliderY / this.maxSliderTop * -1);
+      if (!this.iOSNativeScrolling) {
+        this.slider.css({
+          top: this.sliderY
+        });
+      }
+      return this;
+    };
+
+    /**
+      Scroll at the bottom with an offset value
+      @method scrollBottom
+      @param offsetY {Number}
+      @chainable
+      @example
+          $(".nano").nanoScroller({ scrollBottom: value });
+    */
+
+
+    NanoScroll.prototype.scrollBottom = function(offsetY) {
+      if (!this.isActive) {
+        return;
+      }
+      this.reset();
+      this.$content.scrollTop(this.contentHeight - this.$content.height() - offsetY).trigger(MOUSEWHEEL);
+      return this;
+    };
+
+    /**
+      Scroll at the top with an offset value
+      @method scrollTop
+      @param offsetY {Number}
+      @chainable
+      @example
+          $(".nano").nanoScroller({ scrollTop: value });
+    */
+
+
+    NanoScroll.prototype.scrollTop = function(offsetY) {
+      if (!this.isActive) {
+        return;
+      }
+      this.reset();
+      this.$content.scrollTop(+offsetY).trigger(MOUSEWHEEL);
+      return this;
+    };
+
+    /**
+      Scroll to an element
+      @method scrollTo
+      @param node {Node} A node to scroll to.
+      @chainable
+      @example
+          $(".nano").nanoScroller({ scrollTo: $('#a_node') });
+    */
+
+
+    NanoScroll.prototype.scrollTo = function(node) {
+      if (!this.isActive) {
+        return;
+      }
+      this.reset();
+      this.scrollTop($(node).get(0).offsetTop);
+      return this;
+    };
+
+    /**
+      To stop the operation.
+      This option will tell the plugin to disable all event bindings and hide the gadget scrollbar from the UI.
+      @method stop
+      @chainable
+      @example
+          $(".nano").nanoScroller({ stop: true });
+    */
+
+
+    NanoScroll.prototype.stop = function() {
+      this.stopped = true;
+      this.removeEvents();
+      this.pane.hide();
+      return this;
+    };
+
+    /**
+      Destroys nanoScroller and restores browser's native scrollbar.
+      @method destroy
+      @chainable
+      @example
+          $(".nano").nanoScroller({ destroy: true });
+    */
+
+
+    NanoScroll.prototype.destroy = function() {
+      if (!this.stopped) {
+        this.stop();
+      }
+      if (this.pane.length) {
+        this.pane.remove();
+      }
+      if (BROWSER_IS_IE7) {
+        this.$content.height('');
+      }
+      this.$content.removeAttr('tabindex');
+      if (this.$el.hasClass('has-scrollbar')) {
+        this.$el.removeClass('has-scrollbar');
+        this.$content.css({
+          right: ''
+        });
+      }
+      return this;
+    };
+
+    /**
+      To flash the scrollbar gadget for an amount of time defined in plugin settings (defaults to 1,5s).
+      Useful if you want to show the user (e.g. on pageload) that there is more content waiting for him.
+      @method flash
+      @chainable
+      @example
+          $(".nano").nanoScroller({ flash: true });
+    */
+
+
+    NanoScroll.prototype.flash = function() {
+      var _this = this;
+      if (!this.isActive) {
+        return;
+      }
+      this.reset();
+      this.pane.addClass('flashed');
+      setTimeout(function() {
+        _this.pane.removeClass('flashed');
+      }, this.options.flashDelay);
+      return this;
+    };
+
+    return NanoScroll;
+
+  })();
+  $.fn.nanoScroller = function(settings) {
+    return this.each(function() {
+      var options, scrollbar;
+      if (!(scrollbar = this.nanoscroller)) {
+        options = $.extend({}, defaults, settings);
+        this.nanoscroller = scrollbar = new NanoScroll(this, options);
+      }
+      if (settings && typeof settings === "object") {
+        $.extend(scrollbar.options, settings);
+        if (settings.scrollBottom) {
+          return scrollbar.scrollBottom(settings.scrollBottom);
+        }
+        if (settings.scrollTop) {
+          return scrollbar.scrollTop(settings.scrollTop);
+        }
+        if (settings.scrollTo) {
+          return scrollbar.scrollTo(settings.scrollTo);
+        }
+        if (settings.scroll === 'bottom') {
+          return scrollbar.scrollBottom(0);
+        }
+        if (settings.scroll === 'top') {
+          return scrollbar.scrollTop(0);
+        }
+        if (settings.scroll && settings.scroll instanceof $) {
+          return scrollbar.scrollTo(settings.scroll);
+        }
+        if (settings.stop) {
+          return scrollbar.stop();
+        }
+        if (settings.destroy) {
+          return scrollbar.destroy();
+        }
+        if (settings.flash) {
+          return scrollbar.flash();
+        }
+      }
+      return scrollbar.reset();
+    });
+  };
+  $.fn.nanoScroller.Constructor = NanoScroll;
+})(jQuery, window, document);
+
+/*
+ //@ sourceMappingURL=jquery.nanoscroller.js.map
+ */
\ No newline at end of file
diff --git a/CubeIT/js/jquery/nanoscroller/nanoscroller.css b/CubeIT/js/jquery/nanoscroller/nanoscroller.css
new file mode 100644 (file)
index 0000000..b0b7999
--- /dev/null
@@ -0,0 +1,55 @@
+/** initial setup **/
+.nano {
+  position : relative;
+  width    : 100%;
+  height   : 100%;
+  overflow : hidden;
+}
+.nano .content {
+  position      : absolute;
+  overflow      : scroll;
+  overflow-x    : hidden;
+  top           : 0;
+  right         : 0;
+  bottom        : 0;
+  left          : 0;
+}
+.nano .content:focus {
+  outline: thin dotted;
+}
+.nano .content::-webkit-scrollbar {
+  visibility: hidden;
+}
+.has-scrollbar .content::-webkit-scrollbar {
+  visibility: visible;
+}
+.nano > .pane {
+  background : rgba(0,0,0,.25);
+  position   : absolute;
+  width      : 10px;
+  right      : 0;
+  top        : 0;
+  bottom     : 0;
+  visibility : hidden\9; /* Target only IE7 and IE8 with this hack */
+  opacity    : .01; 
+  -webkit-transition    : .2s;
+  -moz-transition       : .2s;
+  -o-transition         : .2s;
+  transition            : .2s;
+  -moz-border-radius    : 5px;
+  -webkit-border-radius : 5px;  
+  border-radius         : 5px;
+}
+.nano > .pane > .slider {
+  background: #444;
+  background: rgba(0,0,0,.5);
+  position              : relative;
+  margin                : 0 1px;
+  -moz-border-radius    : 3px;
+  -webkit-border-radius : 3px;  
+  border-radius         : 3px;
+}
+.nano:hover > .pane, .pane.active, .pane.flashed {
+  visibility : visible\9; /* Target only IE7 and IE8 with this hack */
+  opacity    : 0.99;
+}
diff --git a/CubeIT/js/jquery/scroll/jquery.localScroll.js b/CubeIT/js/jquery/scroll/jquery.localScroll.js
new file mode 100644 (file)
index 0000000..0a9ba8c
--- /dev/null
@@ -0,0 +1,133 @@
+/**
+ * jQuery.LocalScroll
+ * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Dual licensed under MIT and GPL.
+ * Date: 3/11/2009
+ *
+ * @projectDescription Animated scrolling navigation, using anchors.
+ * http://flesler.blogspot.com/2007/10/jquerylocalscroll-10.html
+ * @author Ariel Flesler
+ * @version 1.2.7
+ *
+ * @id jQuery.fn.localScroll
+ * @param {Object} settings Hash of settings, it is passed in to jQuery.ScrollTo, none is required.
+ * @return {jQuery} Returns the same jQuery object, for chaining.
+ *
+ * @example $('ul.links').localScroll();
+ *
+ * @example $('ul.links').localScroll({ filter:'.animated', duration:400, axis:'x' });
+ *
+ * @example $.localScroll({ target:'#pane', axis:'xy', queue:true, event:'mouseover' });
+ *
+ * Notes:
+ *     - The plugin requires jQuery.ScrollTo.
+ *     - The hash of settings, is passed to jQuery.ScrollTo, so the settings are valid for that plugin as well.
+ *     - jQuery.localScroll can be used if the desired links, are all over the document, it accepts the same settings.
+ *  - If the setting 'lazy' is set to true, then the binding will still work for later added anchors.
+  *    - If onBefore returns false, the event is ignored.
+ **/
+;(function( $ ){
+       var URI = location.href.replace(/#.*/,''); // local url without hash
+
+       var $localScroll = $.localScroll = function( settings ){
+               $('body').localScroll( settings );
+       };
+
+       // Many of these defaults, belong to jQuery.ScrollTo, check it's demo for an example of each option.
+       // @see http://flesler.demos.com/jquery/scrollTo/
+       // The defaults are public and can be overriden.
+       $localScroll.defaults = {
+               duration:1000, // How long to animate.
+               axis:'y', // Which of top and left should be modified.
+               event:'click', // On which event to react.
+               stop:true, // Avoid queuing animations 
+               target: window, // What to scroll (selector or element). The whole window by default.
+               reset: true // Used by $.localScroll.hash. If true, elements' scroll is resetted before actual scrolling
+               /*
+               lock:false, // ignore events if already animating
+               lazy:false, // if true, links can be added later, and will still work.
+               filter:null, // filter some anchors out of the matched elements.
+               hash: false // if true, the hash of the selected link, will appear on the address bar.
+               */
+       };
+
+       // If the URL contains a hash, it will scroll to the pointed element
+       $localScroll.hash = function( settings ){
+               if( location.hash ){
+                       settings = $.extend( {}, $localScroll.defaults, settings );
+                       settings.hash = false; // can't be true
+                       
+                       if( settings.reset ){
+                               var d = settings.duration;
+                               delete settings.duration;
+                               $(settings.target).scrollTo( 0, settings );
+                               settings.duration = d;
+                       }
+                       scroll( 0, location, settings );
+               }
+       };
+
+       $.fn.localScroll = function( settings ){
+               settings = $.extend( {}, $localScroll.defaults, settings );
+
+               return settings.lazy ?
+                       // use event delegation, more links can be added later.         
+                       this.bind( settings.event, function( e ){
+                               // Could use closest(), but that would leave out jQuery -1.3.x
+                               var a = $([e.target, e.target.parentNode]).filter(filter)[0];
+                               // if a valid link was clicked
+                               if( a )
+                                       scroll( e, a, settings ); // do scroll.
+                       }) :
+                       // bind concretely, to each matching link
+                       this.find('a,area')
+                               .filter( filter ).bind( settings.event, function(e){
+                                       scroll( e, this, settings );
+                               }).end()
+                       .end();
+
+               function filter(){// is this a link that points to an anchor and passes a possible filter ? href is checked to avoid a bug in FF.
+                       return !!this.href && !!this.hash && this.href.replace(this.hash,'') == URI && (!settings.filter || $(this).is( settings.filter ));
+               };
+       };
+
+       function scroll( e, link, settings ){
+               var id = link.hash.slice(1),
+                       elem = document.getElementById(id) || document.getElementsByName(id)[0];
+
+               if ( !elem )
+                       return;
+
+               if( e )
+                       e.preventDefault();
+
+               var $target = $( settings.target );
+
+               if( settings.lock && $target.is(':animated') ||
+                       settings.onBefore && settings.onBefore.call(settings, e, elem, $target) === false ) 
+                       return;
+
+               if( settings.stop )
+                       $target.stop(true); // remove all its animations
+
+               if( settings.hash ){
+                       var attr = elem.id == id ? 'id' : 'name',
+                               $a = $('<a> </a>').attr(attr, id).css({
+                                       position:'absolute',
+                                       top: $(window).scrollTop(),
+                                       left: $(window).scrollLeft()
+                               });
+
+                       elem[attr] = '';
+                       $('body').prepend($a);
+                       location = link.hash;
+                       $a.remove();
+                       elem[attr] = id;
+               }
+                       
+               $target
+                       .scrollTo( elem, settings ) // do scroll
+                       .trigger('notify.serialScroll',[elem]); // notify serialScroll about this change
+       };
+
+})( jQuery );
\ No newline at end of file
diff --git a/CubeIT/js/jquery/scroll/jquery.serialScroll.js b/CubeIT/js/jquery/scroll/jquery.serialScroll.js
new file mode 100644 (file)
index 0000000..ea6e03a
--- /dev/null
@@ -0,0 +1,196 @@
+/*!
+ * jQuery.SerialScroll
+ * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Dual licensed under MIT and GPL.
+ * Date: 06/14/2009
+ *
+ * @projectDescription Animated scrolling of series.
+ * @author Ariel Flesler
+ * @version 1.2.2
+ *
+ * @id jQuery.serialScroll
+ * @id jQuery.fn.serialScroll
+ * @param {Object} settings Hash of settings, it is passed in to jQuery.ScrollTo, none is required.
+ * @return {jQuery} Returns the same jQuery object, for chaining.
+ *
+ * @link {http://flesler.blogspot.com/2008/02/jqueryserialscroll.html Homepage}
+ *
+ * Notes:
+ *     - The plugin requires jQuery.ScrollTo.
+ *     - The hash of settings, is passed to jQuery.ScrollTo, so its settings can be used as well.
+ */
+;(function( $ ){
+
+       var $serialScroll = $.serialScroll = function( settings ){
+               return $(window).serialScroll( settings );
+       };
+
+       // Many of these defaults, belong to jQuery.ScrollTo, check it's demo for an example of each option.
+       // @link {http://demos.flesler.com/jquery/scrollTo/ ScrollTo's Demo}
+       $serialScroll.defaults = {// the defaults are public and can be overriden.
+               duration:1000, // how long to animate.
+               axis:'x', // which of top and left should be scrolled
+               event:'click', // on which event to react.
+               start:0, // first element (zero-based index)
+               step:1, // how many elements to scroll on each action
+               lock:true,// ignore events if already animating
+               cycle:true, // cycle endlessly ( constant velocity )
+               constant:true // use contant speed ?
+               /*
+               navigation:null,// if specified, it's a selector a collection of items to navigate the container
+               target:window, // if specified, it's a selector to the element to be scrolled.
+               interval:0, // it's the number of milliseconds to automatically go to the next
+               lazy:false,// go find the elements each time (allows AJAX or JS content, or reordering)
+               stop:false, // stop any previous animations to avoid queueing
+               force:false,// force the scroll to the first element on start ?
+               jump: false,// if true, when the event is triggered on an element, the pane scrolls to it
+               items:null, // selector to the items (relative to the matched elements)
+               prev:null, // selector to the 'prev' button
+               next:null, // selector to the 'next' button
+               onBefore: function(){}, // function called before scrolling, if it returns false, the event is ignored
+               exclude:0 // exclude the last x elements, so we cannot scroll past the end
+               */
+       };
+
+       $.fn.serialScroll = function( options ){
+
+               return this.each(function(){
+                       var 
+                               settings = $.extend( {}, $serialScroll.defaults, options ),
+                               event = settings.event, // this one is just to get shorter code when compressed
+                               step = settings.step, // ditto
+                               lazy = settings.lazy, // ditto
+                               context = settings.target ? this : document, // if a target is specified, then everything's relative to 'this'.
+                               $pane = $(settings.target || this, context),// the element to be scrolled (will carry all the events)
+                               pane = $pane[0], // will be reused, save it into a variable
+                               items = settings.items, // will hold a lazy list of elements
+                               active = settings.start, // active index
+                               auto = settings.interval, // boolean, do auto or not
+                               nav = settings.navigation, // save it now to make the code shorter
+                               timer; // holds the interval id
+
+                       if( !lazy )// if not lazy, save the items now
+                               items = getItems();
+
+                       if( settings.force )
+                               jump( {}, active );// generate an initial call
+
+                       // Button binding, optional
+                       $(settings.prev||[], context).bind( event, -step, move );
+                       $(settings.next||[], context).bind( event, step, move );
+
+                       // Custom events bound to the container
+                       if( !pane.ssbound )// don't bind more than once
+                               $pane
+                                       .bind('prev.serialScroll', -step, move ) // you can trigger with just 'prev'
+                                       .bind('next.serialScroll', step, move ) // f.e: $(container).trigger('next');
+                                       .bind('goto.serialScroll', jump ); // f.e: $(container).trigger('goto', 4 );
+
+                       if( auto )
+                               $pane
+                                       .bind('start.serialScroll', function(e){
+                                               if( !auto ){
+                                                       clear();
+                                                       auto = true;
+                                                       next();
+                                               }
+                                        })
+                                       .bind('stop.serialScroll', function(){// stop a current animation
+                                               clear();
+                                               auto = false;
+                                       });
+
+                       $pane.bind('notify.serialScroll', function(e, elem){// let serialScroll know that the index changed externally
+                               var i = index(elem);
+                               if( i > -1 )
+                                       active = i;
+                       });
+
+                       pane.ssbound = true;// avoid many bindings
+
+                       if( settings.jump )// can't use jump if using lazy items and a non-bubbling event
+                               (lazy ? $pane : getItems()).bind( event, function( e ){
+                                       jump( e, index(e.target) );
+                               });
+
+                       if( nav )
+                               nav = $(nav, context).bind(event, function( e ){
+                                       e.data = Math.round(getItems().length / nav.length) * nav.index(this);
+                                       jump( e, this );
+                               });
+
+                       function move( e ){
+                               e.data += active;
+                               jump( e, this );
+                       };
+                       function jump( e, button ){
+                               if( !isNaN(button) ){// initial or special call from the outside $(container).trigger('goto',[index]);
+                                       e.data = button;
+                                       button = pane;
+                               }
+
+                               var
+                                       pos = e.data, n,
+                                       real = e.type, // is a real event triggering ?
+                                       $items = settings.exclude ? getItems().slice(0,-settings.exclude) : getItems(),// handle a possible exclude
+                                       limit = $items.length,
+                                       elem = $items[pos],
+                                       duration = settings.duration;
+
+                               if( real )// real event object
+                                       e.preventDefault();
+
+                               if( auto ){
+                                       clear();// clear any possible automatic scrolling.
+                                       timer = setTimeout( next, settings.interval ); 
+                               }
+
+                               if( !elem ){ // exceeded the limits
+                                       n = pos < 0 ? 0 : limit - 1;
+                                       if( active != n )// we exceeded for the first time
+                                               pos = n;
+                                       else if( !settings.cycle )// this is a bad case
+                                               return;
+                                       else
+                                               pos = limit - n - 1;// invert, go to the other side
+                                       elem = $items[pos];
+                               }
+
+                               if( !elem || settings.lock && $pane.is(':animated') || // no animations while busy
+                                       real && settings.onBefore &&
+                                       settings.onBefore(e, elem, $pane, getItems(), pos) === false ) return;
+
+                               if( settings.stop )
+                                       $pane.queue('fx',[]).stop();// remove all its animations
+
+                               if( settings.constant )
+                                       duration = Math.abs(duration/step * (active - pos ));// keep constant velocity
+
+                               $pane
+                                       .scrollTo( elem, duration, settings )// do scroll
+                                       .trigger('notify.serialScroll',[pos]);// in case serialScroll was called on this elem more than once.
+                       };
+
+                       function next(){// I'll use the namespace to avoid conflicts
+                               $pane.trigger('next.serialScroll');
+                       };
+
+                       function clear(){
+                               clearTimeout(timer);
+                       };
+
+                       function getItems(){
+                               return $( items, pane );
+                       };
+
+                       function index( elem ){
+                               if( !isNaN(elem) ) return elem;// number
+                               var $items = getItems(), i;
+                               while(( i = $items.index(elem)) == -1 && elem != pane )// see if it matches or one of its ancestors
+                                       elem = elem.parentNode;
+                               return i;
+                       };
+               });
+       };
+
+})( jQuery );
\ No newline at end of file
diff --git a/CubeIT/js/jquery/taghandler/jquery.taghandler.css b/CubeIT/js/jquery/taghandler/jquery.taghandler.css
new file mode 100644 (file)
index 0000000..a4317ca
--- /dev/null
@@ -0,0 +1,60 @@
+.tagHandler {
+    width: 100%;
+    position: relative;
+}
+.tagHandler ul.tagHandlerContainer {
+    overflow: hidden;
+    min-height: 30px;
+    line-height: 30px;
+    cursor: text;
+}
+.tagHandler ul.tagHandlerContainer li {
+    -webkit-border-radius: 15px;
+    -moz-border-radius: 15px;
+    border-radius: 15px;
+    height: 14px;
+    line-height: 14px;
+    display: block;
+    float: left;
+    font-size: 12px;
+    margin: 0 5px 0 0;
+    white-space: nowrap;
+}
+.tagHandler ul.tagHandlerContainer li.tagItem {
+    background-color: #0066bd;
+    color: #FFF;
+    padding: 3px 8px;
+    cursor: url('tag_remove.cur'), pointer;
+       margin:2px;
+}
+.tagHandler ul.tagHandlerContainer li.tagItem:hover {
+    background-color: #008afb;
+}
+.tagHandler ul.tagHandlerContainer li.tagInput {
+    padding: 3px 4px;
+}
+.tagHandler ul.tagHandlerContainer input.tagInputField {
+    border: none;
+    width: inherit;
+    font-size: 12px;
+       background-color:transparent;
+}
+.tagHandler div.tagLoader {
+    position: absolute;
+    right: -24px;
+    top: 12px;
+    display: none;
+    background: url('loader.gif') center center no-repeat;
+    width: 16px;
+    height: 18px;
+    cursor: default;
+}
+.tagHandler div.tagUpdate {
+    position: absolute;
+    right: -24px;
+    top: 14px;
+    background: url('tag_update.png') center center no-repeat;
+    width: 16px;
+    height: 16px;
+    cursor: pointer;
+}
\ No newline at end of file
diff --git a/CubeIT/js/jquery/taghandler/jquery.taghandler.js b/CubeIT/js/jquery/taghandler/jquery.taghandler.js
new file mode 100644 (file)
index 0000000..c3b2c35
--- /dev/null
@@ -0,0 +1,943 @@
+/*
+ jQuery Tag Handler v1.3.1
+ Copyright (C) 2010-2011 Mark Jubenville
+ Mark Jubenville - ioncache@gmail.com
+ http://ioncache.github.com/Tag-Handler
+
+ Development time supported by:
+ Raybec Communications
+ http://www.raybec.com
+ http://www.mysaleslink.com
+
+ Modified by Javier Fernandez Escribano - fesjav@gmail.com
+ Added autocomplete queries as the user writes
+
+ Development time supported by:
+ Tourist Eye
+ http://www.touristeye.com
+
+ Based heavily on:
+ Tag it! by Levy Carneiro Jr (http://levycarneiro.com/)
+ http://levycarneiro.com/projects/tag-it/example.html
+ http://github.com/levycarneiro/tag-it
+ http://plugins.jquery.com/project/tag-it
+
+ Tag icons/cursors converted from:
+ From the famfamfam.com Silk icon set:
+ http://www.famfamfam.com/lab/icons/silk/
+
+ Loader image created at:
+ Preloaders.net
+ http://preloaders.net/
+
+ ------------------------------------------------------------------------------
+ Description 
+ ------------------------------------------------------------------------------
+
+ Tag Handler is a jQuery plugin used for managing tag-type metadata. 
+
+ ------------------------------------------------------------------------------
+ Basic Usage Instructions
+ ------------------------------------------------------------------------------
+
+ * Tag Handler must be attached to one or more <ul> tags in your HTML.
+
+ * To add a tag, click on the tag box, type in a name, and hit enter or comma.
+
+ * Tags may be removed from the tag box by hitting backspace inside the box or
+ by clicking on the tag.
+
+ * The list of tags may be initialized in 1 of 3 ways:
+
+ 1. By passing arrays of tag names as options to the plugin
+ ("availableTags" and "assignedTags"); or,
+
+ 2. By supplying a "getURL" for the tags to be retrieved via AJAX.
+
+ When using this method, the server must supply a JSON formatted array
+ named "availableTags" and optionally an additional array named
+ "assignedTags".
+
+ 3. By supplying a "getURL" and initLoad: false.
+
+ When using this method, it will get the "assignedTags" from the array as in 
+ method 1. When the user writes a tag, it will query the server searching for
+ similar tags.        
+
+ Either way, the information from these 3 methods will be used in the
+ following manner:
+
+ availableTags: each item in this array will populate the autocomplete
+ drop-down list
+
+ assignedTags: each item this array will become a tag in the tag box
+
+ * Tags may be sent back to the server by supplying an "updateURL". In this case,
+ an array will be sent back to the server named "tags".
+
+ * You can define whether the user can create new tags or select tags only.
+
+ * You can define if the user can edit the tags.
+
+ * A sample CSS file is included that can be used to help with formatting tags.
+
+ ------------------------------------------------------------------------------
+ Plugin Examples
+ ------------------------------------------------------------------------------
+
+ Example 1: The Tag Handler will be initialized with no options and no default
+ tags:
+
+ $("#basic_tag_handler").tagHandler();
+
+ Example 2: The Tag Handler will be initialized with preset tags from the
+ assignedTags and availableTags arrays, and autocomplete witll be
+ turned on:
+
+ $("#array_tag_handler").tagHandler({
+ assignedTags: [ 'Perl' ],
+ availableTags: [ 'C', 'C++', 'C#', 'Java', 'Perl', 'PHP', 'Python' ],
+ autocomplete: true
+ });
+
+ See http://ioncache.github.com/Tag-Handler for more examples
+
+ ------------------------------------------------------------------------------
+ Plugin Options
+ ------------------------------------------------------------------------------
+
+ Tag data specific options:
+ --------------------------
+
+ Option          Description                                     Default Value
+ --------------  ----------------------------------------------  --------------
+ assignedTags    array to pass a list of already assigned tags   []
+ availableTags   array to pass a list of all available tags      []
+ getData         data field with info for getURL                 ''
+ getURL          URL for retrieving tag lists via ajax           {}
+ initLoad        indicates if all tags should be loaded on init  true
+ updateData      data field with additional info for updtateURL  {}
+ updateURL       URL for saving tags via ajax                    ''
+
+ Callback options:
+ -----------------
+ Option          Description                                     Default Value
+ --------------  ----------------------------------------------  --------------
+ onAdd           function to be called when a new tag is added   {}
+ onDelete        function to be called when a tag is deleted     {}
+ afterAdd        function to be called after a new tag is added  {}
+ afterDelete     function to be called after a tag is deleted    {}
+
+ Miscellaneous options:
+ ----------------------
+
+ Option          Description                                     Default Value
+ --------------  ----------------------------------------------  --------------
+ allowAdd        indicates whether the user can add new tags     true
+ allowEdit       indicates whether the tag list is editable      true
+ autocomplete    requires jqueryui autocomplete plugin           false
+ autoUpdate      indicates whether updating occurs automatically false
+ whenever a tag is added/deleted - if set true,
+ the save button will not be shown
+ className       base class name that will be added to the tag   'tagHandler'
+ container 
+ debug           will turn on some console logging debug info    false
+ delimiter       extra delimiter to use to separate tags         ''
+ note 'enter' and 'comma' are always allowed 
+ maxTags         sets a limit to the number of allowed tags, set 0
+ to 0 to allow unlimited
+ minChars        minimum number of chars to type before starting 0
+ autocomplete
+ msgError        message shown when there is an error loading    'There was an
+ the tags                                        error getting
+ the tag list.'
+ msgNoNewTag     message shown when the user cannot add a new    'You don't have
+ tag                                             permission to
+ create a new
+ tag.'
+ queryname       query term used to send user typed data         'q'
+ sortTags        sets sorting of tag names alphabetically        true
+
+ Methods
+ ----------------------
+
+ Name               Description               Usage
+ -----------------  -----------------------  --------------------------------
+ getTags            returns an array of tags .tagHandler("getTags")
+ getSerializedTags  returns comma separated  .tagHandler("getSerializedTags")
+ string of tags
+
+ ------------------------------------------------------------------------------
+ License
+ ------------------------------------------------------------------------------
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the Lesser GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ Lesser GNU General Public License for more details.
+
+ You should have received a copy of the Lesser GNU General Public License
+ along with this program.  If not, see < http://www.gnu.org/licenses/ >.
+
+ */
+
+(function ($) {
+
+    // some helper methods
+    var methods = {
+        getSerializedTags: function () {
+            var currentTags = [];
+            $(this).find("li.tagItem").each(function (i, e) {
+                currentTags.push($(e).text());
+            });
+            return currentTags.join(',');
+        },
+        getTags: function () {
+            var currentTags = [];
+            $(this).find("li.tagItem").each(function (i, e) {
+                currentTags.push($(e).text());
+            });
+            return currentTags;
+        },
+        version: function () {
+            return "1.3.0";
+        }
+    };
+
+    // main plugin initialization
+    $.fn.tagHandler = function (options) {
+        if (typeof (options) == 'object' || typeof (options) == 'undefined') {
+
+            var opts = $.extend({}, $.fn.tagHandler.defaults, options);
+            debug($(this), opts);
+
+
+            // processes each specified object and adds a tag handler to each
+            return this.each(function () {
+
+                // checks to make sure the supplied element is a <ul>
+                if (!$(this).is('ul')) {
+                    return true;
+                }
+
+                // caches the container to avoid scope issues.
+                var tagContainer = this;
+                var tagContainerObject = $(tagContainer);
+
+                // adds an id to the tagContainer in case it doesn't have one
+                if (!tagContainer.id) {
+                    var d = new Date();
+                    tagContainer.id = d.getTime();
+                }
+
+                // wraps the <ul> element in a div mainly for use in positioning
+                // the save button and loader image.
+                tagContainerObject.wrap('<div class="' + opts.className + '" />');
+
+                // adds the the tag class to the tagContainer and creates the tag
+                // input field
+                tagContainerObject.addClass(opts.className + "Container");
+                if (opts.allowEdit) {
+                    tagContainerObject.html('<li class="tagInput"><input class="tagInputField" type="text" placeholder="' + opts.placeholder + '" /></li>');
+                }
+                var inputField = tagContainerObject.find(".tagInputField");
+
+                $(this).parent().on('addtag.taghandler', function () {
+                    var e = jQuery.Event("keypress");
+                    e.which = 13; // # Some key code value
+                    $(inputField).trigger(e);
+                });
+
+                // master tag list, will contain 3 arrays of tags
+                var tags = [];
+                tags.availableTags = [];
+                tags.originalTags = [];
+                tags.assignedTags = [];
+                if (opts.availableTagsIndex) {
+                    tags.availableTagsIndex = opts.availableTagsIndex;
+                }
+
+                this.opts = opts;
+
+                // adds save/loader divs to the tagContainer if needed
+                if (opts.updateURL !== '') {
+                    if (!opts.autoUpdate) {
+                        $("<div />").attr({
+                            id: tagContainer.id + "_save",
+                            title: "Save Tags"
+                        }).addClass("tagUpdate").click(function () {
+                            saveTags(tags, opts, tagContainer.id);
+                        }).appendTo(tagContainerObject.parent());
+                    }
+                    $("<div />").attr({
+                        id: tagContainer.id + "_loader",
+                        title: "Saving Tags"
+                    }).addClass("tagLoader").appendTo(tagContainerObject.parent());
+                }
+
+                // adds autocomplete functionality for the tag names
+                if (opts.autocomplete && typeof ($.fn.autocomplete) == 'function' && opts.initLoad) {
+                    $(inputField).autocomplete({
+                        source: getAutocompleteSource(tags, opts),
+                        open: function (event, ui) {
+                            $(inputField).addClass('autocompleting');
+                        },
+                        close: function (event, ui) {
+                            $(inputField).removeClass('autocompleting');
+                        },
+                        select: function (event, ui) {
+                            var $el = $(this);
+                            if (!checkTag(removeDiacritics($.trim(ui.item.value)), tags.assignedTags)) {
+                                if (opts.maxTags > 0 && tags.assignedTags.length >= opts.maxTags) {
+                                    var msg = opts.msgTagLimit;
+                                    msg = msg.replace('%s', opts.maxTags);
+                                    alert(msg);
+                                }
+                                else {
+                                    var newTag = removeDiacritics($.trim(ui.item.value));
+                                    var rc = 1;
+                                    if (typeof (opts.onAdd) == "function") {
+                                        rc = opts.onAdd.call(this, newTag);
+                                    }
+                                    if (rc || typeof (rc) == "undefined") {
+                                        tags = addTag(this, newTag, tags, opts.sortTags, opts.tagsPosition);
+                                        if (opts.updateURL !== '' && opts.autoUpdate) {
+                                            saveTags(tags, opts, tagContainer.id);
+                                        }
+
+                                        $(inputField).autocomplete('option', 'source', getAutocompleteSource(tags, opts));
+
+                                        if (typeof (opts.afterAdd) == "function") {
+                                            opts.afterAdd.call(this, newTag);
+                                        }
+                                    }
+                                }
+                                $el.focus();
+                            }
+                            $el.val("");
+                            return false;
+                        },
+                        minLength: opts.minChars
+                    }).data("ui-autocomplete")._renderItem = function (ul, item) {
+                        var key = objectIndexOf(tags.availableTagsIndex, item.value)
+                        return $("<li>").attr('data-key', key)
+                            .append('<a data-key="' + key + '">' + item.label + "</a>")
+                            .appendTo(ul);
+                    };
+
+
+                    $(inputField).data('ui-autocomplete')._renderMenu = function (ul, items) {
+                        var that = this;
+                        $.each(items, function (index, item) {
+                            that._renderItemData(ul, item);
+                        });
+                        $(ul).find("li:odd").addClass("odd");
+                        $(ul).attr('data-name', opts.name);
+                    };
+
+                }
+                // Make an AJAX request to get the list of tags based on typed data
+                else if (opts.autocomplete && typeof ($.fn.autocomplete) == 'function') {
+                    $(inputField).autocomplete({
+                        source: function (request, response) {
+                            opts.getData[opts.queryname] = request.term;
+                            var lastXhr = $.getJSON(opts.getURL, opts.getData, function (data, status, xhr) {
+                                response(data.availableTags);
+                            });
+                        },
+                        select: function (event, ui) {
+                            var $el = $(this);
+                            if (!checkTag($.trim(ui.item.value), tags.assignedTags)) {
+                                if (opts.maxTags > 0 && tags.assignedTags.length >= opts.maxTags) {
+                                    alert('Maximum tags allowed: ' + opts.maxTags);
+                                }
+                                else {
+                                    var newTag = $.trim(ui.item.value);
+                                    var rc = 1;
+                                    if (typeof (opts.onAdd) == "function") {
+                                        opts.onAdd.call(this, newTag);
+                                    }
+                                    if (rc || typeof (rc) == "undefined") {
+                                        tags = addTag(this, $.trim(ui.item.value), tags, opts.sortTags, opts.tagsPosition);
+                                        if (opts.updateURL !== '' && opts.autoUpdate) {
+                                            saveTags(tags, opts, tagContainer.id);
+                                        }
+                                        if (typeof (opts.afterAdd) == "function") {
+                                            opts.afterAdd.call(this, newTag);
+                                        }
+                                    }
+                                }
+                                $el.focus();
+                            }
+                            $el.val('');
+                            return false;
+                        },
+                        minLength: opts.minChars
+                    });
+                }
+
+                // initializes the tag lists
+                // tag lists will be pulled from a URL
+                if (opts.getURL !== '' && opts.initLoad) {
+                    $.ajax({
+                        url: opts.getURL,
+                        cache: false,
+                        data: opts.getData,
+                        dataType: 'json',
+                        success: function (data, text, xhr) {
+                            if (data.availableTags.length) {
+                                tags.availableTags = data.availableTags.slice();
+                                tags.originalTags = tags.availableTags.slice();
+                            }
+                            if (opts.sortTags) {
+                                tags = sortTags(tags);
+                            }
+                            if (data.assignedTags.length) {
+                                tags.assignedTags = data.assignedTags.slice();
+                                if (opts.sortTags) {
+                                    tags = sortTags(tags);
+                                }
+
+                                tags = addAssignedTags(opts, tags, inputField, tagContainer, opts.tagsPosition);
+
+                            }
+                            if (opts.autocomplete && typeof ($.fn.autocomplete) == 'function' && opts.allowEdit) {
+                                $(inputField).autocomplete('option', 'source', getAutocompleteSource(tags, opts));
+                            }
+                        },
+                        error: function (xhr, text, error) {
+                            debug(xhr, text, error);
+                            alert(opts.msgError);
+                        }
+                    });
+
+                    // show assigned tags only if we load the data as we write
+                }
+                else if (opts.getURL !== '') {
+
+                    tags.assignedTags = opts.assignedTags.slice();
+                    if (opts.sortTags) {
+                        tags = sortTags(tags);
+                    }
+
+                    tags = addAssignedTags(opts, tags, inputField, tagContainer);
+
+                    // or load the lists of tags
+                }
+                else {
+
+                    if (opts.availableTags.length) {
+                        tags.availableTags = opts.availableTags.slice();
+                        tags.originalTags = tags.availableTags.slice();
+                    }
+                    if (opts.sortTags) {
+                        tags = sortTags(tags);
+                    }
+                    if (opts.assignedTags.length) {
+                        tags.assignedTags = opts.assignedTags.slice();
+                        if (opts.sortTags) {
+                            tags = sortTags(tags);
+                        }
+
+                        tags = addAssignedTags(opts, tags, inputField, tagContainer);
+                    }
+                    if (opts.autocomplete && typeof ($.fn.autocomplete) == 'function' && opts.allowEdit && opts.initLoad) {
+                        $(inputField).autocomplete("option", "source", getAutocompleteSource(tags, opts));
+                    }
+                }
+
+                // all tag editing functionality only activated if set in options
+                if (opts.allowEdit) {
+                    // delegates a click event function to all future <li> elements with
+                    // the tagItem class that will remove the tag upon click
+                    tagContainerObject.delegate("li.tagItem", "click", function () {
+                        var $el = $(this);
+                        var rc = 1;
+
+                        if (typeof (opts.onDelete) == "function") {
+                            rc = opts.onDelete.call(this, $.trim($el.text()));
+                        }
+
+                        if (rc) {
+                            tags = removeTag($el, tags, opts.sortTags);
+                            if (opts.updateURL !== '' && opts.autoUpdate) {
+                                saveTags(tags, opts, tagContainer.id);
+                            }
+                        }
+
+                        if (typeof (opts.afterDelete) == "function") {
+                            opts.afterDelete.call(this, $.trim($el.text()));
+                        }
+
+                        if (opts.autocomplete && typeof ($.fn.autocomplete) == 'function' && opts.initLoad) {
+                            $(inputField).autocomplete("option", "source", getAutocompleteSource(tags, opts));
+                        }
+                    });
+
+                    // checks the keypress event for enter or comma, and adds a new tag
+                    // when either of those keys are pressed
+                    $(inputField).keypress(function (e) {
+                        var $el = $(this);
+                        if (e.which === 13 || e.which === 44 || e.which === opts.delimiter.charCodeAt(0)) {
+                            e.preventDefault();
+                            if ($el.val() !== "" && !checkTag($.trim($el.val()), tags.assignedTags)) {
+
+                                // check if the tag is in availableTags
+                                if (!opts.allowAdd && !checkTag(removeDiacritics($.trim($el.val())), tags.availableTags)) {
+                                    alert(opts.msgNoNewTag);
+                                    return;
+                                }
+
+                                if (opts.maxTags > 0 && tags.assignedTags.length >= opts.maxTags) {
+                                    alert(opts.msgNoNewTag);
+                                }
+                                else {
+                                    var newTag = $.trim($el.val());
+
+                                    // allow addition onAdd return code to control whether
+                                    // addition is allowed to go through
+                                    var rc = 1;
+                                    if (typeof (opts.onAdd) == "function") {
+                                        rc = opts.onAdd.call(this, newTag);
+                                    }
+
+                                    if (rc || typeof (rc) == "undefined") {
+                                        tags = addTag(this, newTag, tags, opts.sorttags, opts.tagsPosition);
+                                        if (opts.updateURL !== '' && opts.autoUpdate) {
+                                            saveTags(tags, opts, tagContainer.id);
+                                        }
+                                        if (opts.autocomplete && typeof ($.fn.autocomplete) == 'function' && opts.initload) {
+                                            $(inputField).autocomplete("option", "source", getAutocompleteSource(tags, opts));
+                                        }
+                                        if (typeof (opts.afterAdd) == "function") {
+                                            opts.afterAdd.call(this, newTag);
+                                        }
+                                    }
+                                }
+                                $el.val("");
+                                $el.focus();
+                            }
+                        }
+                    });
+
+                    // checks the keydown event for the backspace key as checking the
+                    // keypress event doesn't work in IE
+                    $(inputField).keydown(function (e) {
+                        if (!opts.deleteOnDeleteKey) {
+                            return;
+                        }
+                        var $el = $(this);
+
+                        if (e.which === 8 && $el.val() === "") {
+                            var deleted_tag = tagContainerObject.find(".tagItem:last").text();
+                            if (typeof (opts.onDelete) == "function") {
+                                opts.onDelete.call(this, $.trim(deleted_tag));
+                            }
+                            tags = removeTag(tagContainerObject.find(".tagItem:last"), tags, opts.sortTags);
+                            if (opts.updateURL !== '' && opts.autoUpdate) {
+                                saveTags(tags, opts, tagContainer.id);
+                            }
+                            if (typeof (opts.afterDelete) == "function") {
+                                opts.afterDelete.call(this, $.trim(deleted_tag));
+                            }
+                            if (opts.autocomplete && typeof ($.fn.autocomplete) == 'function' && opts.initLoad) {
+                                $(inputField).autocomplete("option", "source", getAutocompleteSource(tags, opts));
+                            }
+                            $el.focus();
+                        }
+                    });
+
+                    // sets the input field to show the autocomplete list on focus
+                    // when there is no value
+                    $(inputField).focus(function () {
+                        if ($(inputField).val() === '' && opts.autocomplete && typeof ($.fn.autocomplete) == 'function' && opts.initLoad) {
+                            $(inputField).autocomplete("search", "");
+                        }
+                    });
+
+                    // sets the focus to the input field whenever the user clicks
+                    // anywhere on the tagContainer -- since the input field by default
+                    // has no border it isn't obvious where to click to access it
+                    tagContainerObject.click(function () {
+                        $(inputField).focus();
+                    });
+                }
+                this.getTags = function () {
+                    return tags.assignedTags;
+                };
+                return 1;
+            });
+        }
+        else if (typeof (options) == "string" && methods[options]) {
+            return methods[options].apply(this, Array.prototype.slice.call(arguments, 1));
+        }
+    };
+
+    // plugin option defaults
+    $.fn.tagHandler.defaults = {
+        allowEdit: true,
+        allowAdd: true,
+        assignedTags: [],
+        autocomplete: false,
+        autoUpdate: false,
+        availableTags: [],
+        className: 'tagHandler',
+        debug: false,
+        delimiter: '',
+        getData: {},
+        getURL: '',
+        initLoad: true,
+        maxTags: 0,
+        minChars: 0,
+        msgNoNewTag: "You don't have permission to create a new tag.",
+        msgError: "There was an error getting the tag list.",
+        msgTagLimit: "Max items : %s",
+        onAdd: {},
+        onDelete: {},
+        afterAdd: {},
+        afterDelete: {},
+        queryname: 'q',
+        sortTags: true,
+        updateData: {},
+        updateURL: '',
+        deleteOnDeleteKey: false,
+        tagsPosition: 'before',
+        placeholder: '',
+        searchAnywhere: true,
+    };
+
+    // checks to to see if a tag is already found in a list of tags
+    function checkTag(value, tags) {
+        var check = false;
+        jQuery.each(tags, function (i, e) {
+            if (e === value) {
+                check = true;
+                return false;
+            }
+        });
+
+        return check;
+    }
+
+    // removes a tag from a tag list
+    function removeTagFromList(value, tags) {
+        jQuery.each(tags, function (i, e) {
+            if (e === value) {
+                tags.splice(i, 1);
+            }
+        });
+
+        return tags;
+    }
+
+    // adds a tag to the tag box and the assignedTags list
+    function addTag(tagField, value, tags, sort, pos) {
+        tags.assignedTags.push(value);
+        tags.availableTags = removeTagFromList(value, tags.availableTags);
+        var key = objectIndexOf(tags.availableTagsIndex, value);
+
+        var li = $("<li><div class=\"tagItemContent\">" + value + "</div></li>").addClass("tagItem").attr('data-key', key);
+        if (pos == 'before') {
+            $(li).insertBefore($(tagField).parent());
+        } else {
+            $(li).appendTo($(tagField).parent().parent());
+        }
+
+
+        if (sort) {
+            tags = sortTags(tags);
+        }
+        return tags;
+    }
+
+    // removes a tag from the tag box and the assignedTags list
+    function removeTag(tag, tags, sort) {
+        var value = $(tag).text();
+        tags.assignedTags = removeTagFromList(value, tags.assignedTags);
+        if (checkTag(value, tags.originalTags)) {
+            tags.availableTags.push(value);
+        }
+        $(tag).remove();
+
+        if (sort) {
+            tags = sortTags(tags);
+        }
+        return tags;
+    }
+
+    // sorts each of the sets of tags
+    function sortTags(tags) {
+        tags.availableTags = tags.availableTags.sort();
+        tags.assignedTags = tags.assignedTags.sort();
+        tags.originalTags = tags.originalTags.sort();
+
+        return tags;
+    }
+
+    // saves the tags to the server via ajax
+    function saveTags(tags, opts, tcID) {
+        var sendData = {
+            tags: tags.assignedTags
+        };
+        $.extend(sendData, opts.updateData);
+        $.ajax({
+            type: 'POST',
+            url: opts.updateURL,
+            cache: false,
+            data: sendData,
+            dataType: 'json',
+            beforeSend: function () {
+                if ($("#" + tcID + "_save").length) {
+                    $("#" + tcID + "_save").fadeOut(200,
+                        function () {
+                            $("#" + tcID + "_loader").fadeIn(200);
+                        });
+                }
+                else {
+                    $("#" + tcID + "_loader").fadeIn(200);
+                }
+            },
+            complete: function () {
+                $("#" + tcID + "_loader").fadeOut(200,
+                    function () {
+                        if ($("#" + tcID + "_save").length) {
+                            $("#" + tcID + "_save").fadeIn(200);
+                        }
+                    });
+            }
+        });
+    }
+
+    // adds any already assigned tags to the tag box
+    function addAssignedTags(opts, tags, inputField, tagContainer, pos) {
+        $(tags.assignedTags).each(function (i, e) {
+            var key = objectIndexOf(tags.availableTagsIndex, e);
+            if (opts.allowEdit) {
+                var li = $("<li><div class=\"tagItemContent\">" + e + "</div></li>").addClass("tagItem").attr('data-key', key)
+                if (pos == 'before') {
+                    $(li).insertBefore($(inputField).parent());
+                } else {
+                    $(li).appendTo($(inputField).parent().parent());
+                }
+            }
+            else {
+                $("<li><div class=\"tagItemContent\">" + e + "</div></li>").addClass("tagItem").css("cursor", "default").attr('data-key', key).appendTo($(tagContainer));
+            }
+            tags.availableTags = removeTagFromList(e, tags.availableTags);
+        });
+
+        return tags;
+    }
+
+    // some debugging information
+    function debug(tagContainer, options) {
+        if (options.debug && window.console && window.console.log) {
+            window.console.log(tagContainer);
+            window.console.log(options);
+            window.console.log($.fn.tagHandler.defaults);
+        }
+    }
+
+    function getAutocompleteSource(tags, options) {
+        var src;
+        if (options.searchAnywhere) {
+            src = tags.availableTags;
+        } else {
+
+            src = function (request, response) {
+                var term = removeDiacritics(request.term);
+                var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(term), "i");
+                response($.grep(tags.availableTags, function (item) {
+                    return matcher.test(item);
+                }));
+            };
+        }
+        return src;
+    }
+
+})(jQuery);
+
+
+var defaultDiacriticsRemovalap = [
+    {
+        'base': 'A',
+        'letters': '\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F'
+    },
+    {'base': 'AA', 'letters': '\uA732'},
+    {'base': 'AE', 'letters': '\u00C6\u01FC\u01E2'},
+    {'base': 'AO', 'letters': '\uA734'},
+    {'base': 'AU', 'letters': '\uA736'},
+    {'base': 'AV', 'letters': '\uA738\uA73A'},
+    {'base': 'AY', 'letters': '\uA73C'},
+    {'base': 'B', 'letters': '\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181'},
+    {'base': 'C', 'letters': '\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E'},
+    {'base': 'D', 'letters': '\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779'},
+    {'base': 'DZ', 'letters': '\u01F1\u01C4'},
+    {'base': 'Dz', 'letters': '\u01F2\u01C5'},
+    {
+        'base': 'E',
+        'letters': '\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E'
+    },
+    {'base': 'F', 'letters': '\u0046\u24BB\uFF26\u1E1E\u0191\uA77B'},
+    {
+        'base': 'G',
+        'letters': '\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E'
+    },
+    {'base': 'H', 'letters': '\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D'},
+    {
+        'base': 'I',
+        'letters': '\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197'
+    },
+    {'base': 'J', 'letters': '\u004A\u24BF\uFF2A\u0134\u0248'},
+    {'base': 'K', 'letters': '\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2'},
+    {
+        'base': 'L',
+        'letters': '\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780'
+    },
+    {'base': 'LJ', 'letters': '\u01C7'},
+    {'base': 'Lj', 'letters': '\u01C8'},
+    {'base': 'M', 'letters': '\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C'},
+    {
+        'base': 'N',
+        'letters': '\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4'
+    },
+    {'base': 'NJ', 'letters': '\u01CA'},
+    {'base': 'Nj', 'letters': '\u01CB'},
+    {
+        'base': 'O',
+        'letters': '\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C'
+    },
+    {'base': 'OI', 'letters': '\u01A2'},
+    {'base': 'OO', 'letters': '\uA74E'},
+    {'base': 'OU', 'letters': '\u0222'},
+    {'base': 'OE', 'letters': '\u008C\u0152'},
+    {'base': 'oe', 'letters': '\u009C\u0153'},
+    {'base': 'P', 'letters': '\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754'},
+    {'base': 'Q', 'letters': '\u0051\u24C6\uFF31\uA756\uA758\u024A'},
+    {
+        'base': 'R',
+        'letters': '\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782'
+    },
+    {
+        'base': 'S',
+        'letters': '\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784'
+    },
+    {
+        'base': 'T',
+        'letters': '\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786'
+    },
+    {'base': 'TZ', 'letters': '\uA728'},
+    {
+        'base': 'U',
+        'letters': '\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244'
+    },
+    {'base': 'V', 'letters': '\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245'},
+    {'base': 'VY', 'letters': '\uA760'},
+    {'base': 'W', 'letters': '\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72'},
+    {'base': 'X', 'letters': '\u0058\u24CD\uFF38\u1E8A\u1E8C'},
+    {
+        'base': 'Y',
+        'letters': '\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE'
+    },
+    {'base': 'Z', 'letters': '\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762'},
+    {
+        'base': 'a',
+        'letters': '\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250'
+    },
+    {'base': 'aa', 'letters': '\uA733'},
+    {'base': 'ae', 'letters': '\u00E6\u01FD\u01E3'},
+    {'base': 'ao', 'letters': '\uA735'},
+    {'base': 'au', 'letters': '\uA737'},
+    {'base': 'av', 'letters': '\uA739\uA73B'},
+    {'base': 'ay', 'letters': '\uA73D'},
+    {'base': 'b', 'letters': '\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253'},
+    {'base': 'c', 'letters': '\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184'},
+    {'base': 'd', 'letters': '\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A'},
+    {'base': 'dz', 'letters': '\u01F3\u01C6'},
+    {
+        'base': 'e',
+        'letters': '\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD'
+    },
+    {'base': 'f', 'letters': '\u0066\u24D5\uFF46\u1E1F\u0192\uA77C'},
+    {
+        'base': 'g',
+        'letters': '\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F'
+    },
+    {
+        'base': 'h',
+        'letters': '\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265'
+    },
+    {'base': 'hv', 'letters': '\u0195'},
+    {
+        'base': 'i',
+        'letters': '\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131'
+    },
+    {'base': 'j', 'letters': '\u006A\u24D9\uFF4A\u0135\u01F0\u0249'},
+    {'base': 'k', 'letters': '\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3'},
+    {
+        'base': 'l',
+        'letters': '\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747'
+    },
+    {'base': 'lj', 'letters': '\u01C9'},
+    {'base': 'm', 'letters': '\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F'},
+    {
+        'base': 'n',
+        'letters': '\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5'
+    },
+    {'base': 'nj', 'letters': '\u01CC'},
+    {
+        'base': 'o',
+        'letters': '\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275'
+    },
+    {'base': 'oi', 'letters': '\u01A3'},
+    {'base': 'ou', 'letters': '\u0223'},
+    {'base': 'oo', 'letters': '\uA74F'},
+    {'base': 'p', 'letters': '\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755'},
+    {'base': 'q', 'letters': '\u0071\u24E0\uFF51\u024B\uA757\uA759'},
+    {
+        'base': 'r',
+        'letters': '\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783'
+    },
+    {
+        'base': 's',
+        'letters': '\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B'
+    },
+    {
+        'base': 't',
+        'letters': '\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787'
+    },
+    {'base': 'tz', 'letters': '\uA729'},
+    {
+        'base': 'u',
+        'letters': '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289'
+    },
+    {'base': 'v', 'letters': '\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C'},
+    {'base': 'vy', 'letters': '\uA761'},
+    {'base': 'w', 'letters': '\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73'},
+    {'base': 'x', 'letters': '\u0078\u24E7\uFF58\u1E8B\u1E8D'},
+    {
+        'base': 'y',
+        'letters': '\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF'
+    },
+    {'base': 'z', 'letters': '\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763'}
+];
+
+var diacriticsMap = {};
+for (var i = 0; i < defaultDiacriticsRemovalap.length; i++) {
+    var letters = defaultDiacriticsRemovalap[i].letters;
+    for (var j = 0; j < letters.length; j++) {
+        diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;
+    }
+}
+
+// "what?" version ... http://jsperf.com/diacritics/12
+function removeDiacritics(str) {
+    return str.replace(/[^\u0000-\u007E]/g, function (a) {
+        return diacriticsMap[a] || a;
+    });
+}
\ No newline at end of file
diff --git a/CubeIT/js/jquery/taghandler/loader.gif b/CubeIT/js/jquery/taghandler/loader.gif
new file mode 100644 (file)
index 0000000..b6369dd
Binary files /dev/null and b/CubeIT/js/jquery/taghandler/loader.gif differ
diff --git a/CubeIT/js/jquery/taghandler/tag_remove.cur b/CubeIT/js/jquery/taghandler/tag_remove.cur
new file mode 100644 (file)
index 0000000..8634781
Binary files /dev/null and b/CubeIT/js/jquery/taghandler/tag_remove.cur differ
diff --git a/CubeIT/js/jquery/taghandler/tag_remove.png b/CubeIT/js/jquery/taghandler/tag_remove.png
new file mode 100644 (file)
index 0000000..2518e4e
Binary files /dev/null and b/CubeIT/js/jquery/taghandler/tag_remove.png differ
diff --git a/CubeIT/js/jquery/taghandler/tag_update.png b/CubeIT/js/jquery/taghandler/tag_update.png
new file mode 100644 (file)
index 0000000..caea546
Binary files /dev/null and b/CubeIT/js/jquery/taghandler/tag_update.png differ
diff --git a/CubeIT/js/markitup.js b/CubeIT/js/markitup.js
new file mode 100644 (file)
index 0000000..7dc228b
--- /dev/null
@@ -0,0 +1,65 @@
+registerLoader(load_markitup);
+
+function load_markitup() {
+    // MarkItUp
+    $('.markitup').each(function () {
+        try {
+            _markitUpInit(this);
+        } catch (err) {
+            fb(err);
+        }
+    });
+
+    popup_dimensions();
+}
+
+
+function _markitUpInit(f, inMultiForm) {
+    if (inMultiForm == undefined) {
+        inMultiForm = false;
+    }
+    if (!inMultiForm && $(f).parents('.cubeit_multiform').length > 0) {
+        return;
+    }
+    if ($(f).attr('rows') == undefined) {
+        $(f).attr('rows', 10);
+    }
+    var settings = $(f).data('settings');
+    if (settings == null) {
+        settings = mySettings;
+    }
+
+    var icons = [];
+    $.each(settings.markupSet, function (k, v) {
+        if (v != undefined && v['function'] != undefined) {
+            v.replaceWith = new Function('h', v['function']);
+        }
+    });
+
+    $(f).markItUp(settings);
+    $(f).css('height', parseInt($(f).css('lineHeight')) * parseInt($(f).attr('rows')));
+    $(f).removeClass('markitup');
+
+    // Set icons
+    var icons = [];
+    $.each(settings.markupSet, function (k, v) {
+        if (v.icon != undefined) {
+            icons.push(v.icon);
+        }
+    });
+
+    var main = $(f).parents('.markItUp');
+
+    var i = 0;
+    $(main).find('.markItUpButton a').each(function () {
+        if (icons[i] == undefined) {
+            return;
+        }
+        if (icons[i].indexOf('color|') === 0) {
+            $(this).addClass('color').css('background-color', icons[i].split('|')[1]);
+        } else {
+            $(this).css('background-image', 'url("' + icons[i] + '")');
+        }
+        i++;
+    });
+}
\ No newline at end of file
diff --git a/CubeIT/js/modernizr/custom.js b/CubeIT/js/modernizr/custom.js
new file mode 100644 (file)
index 0000000..095583e
--- /dev/null
@@ -0,0 +1,87 @@
+Modernizr.addTest('inputfile', function () {
+    var file = document.createElement("input");
+    file.type = "file";
+    return !file.disabled;
+});
+
+Modernizr.addTest('fullscreen', function () {
+    for (var i = 0; i < Modernizr._domPrefixes.length; i++) {
+        if (document[Modernizr._domPrefixes[i].toLowerCase() + 'CancelFullScreen'] || document[Modernizr._domPrefixes[i].toLowerCase() + 'ExitFullscreen'])
+            return true;
+    }
+    return !!document['cancelFullScreen'] || false;
+});
+
+
+Modernizr.addTest('cookies', function () {
+    // navigator.cookieEnabled is in IE9 but always true. Don't rely on it.
+
+    // try..catch because some in situations `document.cookie` is exposed but throws a
+    // SecurityError if you try to access it; e.g. documents created from data URIs
+    // or in sandboxed iframes (depending on flags/context)
+    try {
+        // Create cookie
+        document.cookie = 'cookietest=1';
+        var ret = document.cookie.indexOf('cookietest=') != -1;
+        // Delete cookie
+        document.cookie = 'cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT';
+        return ret;
+    }
+    catch (e) {
+        return false;
+    }
+});
+
+Modernizr.addTest('ipad', function () {
+    return !!navigator.userAgent.match(/iPad/i);
+});
+
+Modernizr.addTest('iphone', function () {
+    return !!navigator.userAgent.match(/iPhone/i);
+});
+
+Modernizr.addTest('ipod', function () {
+    return !!navigator.userAgent.match(/iPod/i);
+});
+
+Modernizr.addTest('ios', function () {
+    return (Modernizr.ipad || Modernizr.ipod || Modernizr.iphone);
+});
+
+Modernizr.addTest('macos', function () {
+    return !!navigator.userAgent.match(/Mac/);
+});
+
+Modernizr.addTest('backgroundblendmode', function () {
+    var div = document.createElement("div");
+    return !!('backgroundBlendMode' in div.style);
+});
+
+Modernizr.addTest('ie10', function () {
+    if (Function('/*@cc_on return document.documentMode===10@*/')()) {
+        return true;
+    }
+    return false;
+});
+
+Modernizr.addTest('ie11', function () {
+    return !!window.MSInputMethodContext && !!document.documentMode;
+});
+
+(function () {
+    var image = new Image();
+
+    image.onerror = function () {
+        Modernizr.addTest('webp', function () {
+            return false;
+        });
+    };
+    image.onload = function () {
+        Modernizr.addTest('webp', function () {
+            return image.width == 1;
+        });
+    };
+
+    image.src = 'data:image/webp;base64,UklGRjgAAABXRUJQVlA4ICwAAAAQAgCdASoEAAQAAAcIhYWIhYSIgIIADA1gAAUAAAEAAAEAAP7%2F2fIAAAAA';
+
+})();
\ No newline at end of file
diff --git a/CubeIT/js/modernizr/polyfill/placeholder.js b/CubeIT/js/modernizr/polyfill/placeholder.js
new file mode 100644 (file)
index 0000000..a4f3d69
--- /dev/null
@@ -0,0 +1,32 @@
+(function($) {
+       $.fn.placeHolder = function() {
+               if($(this).attr('placeholder')==undefined){
+                       return;
+               }
+               if(Modernizr.input.placeholder){
+                       return;
+               }
+               
+               $(this).attr('data-placeholder-done','1');
+               
+               if($(this).attr('type')=='password'){
+                       $(this).attr('title',$(this).attr('placeholder'));
+                       return;
+               }
+
+               if($(this).val()==''){
+                       $(this).val($(this).attr('placeholder'));
+               }
+               $(this).focus(function(){
+                       if($(this).val()==$(this).attr('placeholder')){
+                               $(this).val('');
+                       }
+               });
+               
+               $(this).blur(function(){
+                       if($(this).val()==''){
+                               $(this).val($(this).attr('placeholder'));
+                       }
+               });
+       };
+})(jQuery);
\ No newline at end of file
diff --git a/CubeIT/js/modernizr/polyfill/storage.js b/CubeIT/js/modernizr/polyfill/storage.js
new file mode 100644 (file)
index 0000000..9f51cf9
--- /dev/null
@@ -0,0 +1,123 @@
+// https://gist.github.com/jarrodirwin/0ce4c0888336b533b2c4
+try {
+    // Test webstorage existence.
+    if (!window.localStorage || !window.sessionStorage) throw "exception";
+    // Test webstorage accessibility - Needed for Safari private browsing.
+    localStorage.setItem('storage_test', 1);
+    localStorage.removeItem('storage_test');
+} catch (e) {
+    (function () {
+        var Storage = function (type) {
+            function createCookie(name, value, days) {
+                var date, expires;
+
+                if (days) {
+                    date = new Date();
+                    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
+                    expires = "; expires=" + date.toGMTString();
+                } else {
+                    expires = "";
+                }
+                document.cookie = name + "=" + value + expires + "; path=/";
+            }
+
+            function readCookie(name) {
+                var nameEQ = name + "=",
+                    ca = document.cookie.split(';'),
+                    i, c;
+
+                for (i = 0; i < ca.length; i++) {
+                    c = ca[i];
+                    while (c.charAt(0) == ' ') {
+                        c = c.substring(1, c.length);
+                        2480
+                    }
+
+                    if (c.indexOf(nameEQ) == 0) {
+                        return c.substring(nameEQ.length, c.length);
+                    }
+                }
+                return null;
+            }
+
+            function setData(data) {
+                // Convert data into JSON and encode to accommodate for special characters.
+                data = encodeURIComponent(JSON.stringify(data));
+                // Create cookie.
+                if (type == 'session') {
+                    createCookie(getSessionName(), data, 365);
+                } else {
+                    createCookie('localStorage', data, 365);
+                }
+            }
+
+            function clearData() {
+                if (type == 'session') {
+                    createCookie(getSessionName(), '', 365);
+                } else {
+                    createCookie('localStorage', '', 365);
+                }
+            }
+
+            function getData() {
+                // Get cookie data.
+                var data = type == 'session' ? readCookie(getSessionName()) : readCookie('localStorage');
+                // If we have some data decode, parse and return it.
+                return data ? JSON.parse(decodeURIComponent(data)) : {};
+            }
+
+            function getSessionName() {
+                // If there is no name for this window, set one.
+                // To ensure it's unquie use the current timestamp.
+                if (!window.name) {
+                    window.name = new Date().getTime();
+                }
+                return 'sessionStorage' + window.name;
+            }
+
+            // Initialise if there's already data.
+            var data = getData();
+
+            return {
+                length: 0,
+                clear: function () {
+                    data = {};
+                    this.length = 0;
+                    clearData();
+                },
+                getItem: function (key) {
+                    return data[key] === undefined ? null : data[key];
+                },
+                key: function (i) {
+                    // not perfect, but works
+                    var ctr = 0;
+                    for (var k in data) {
+                        if (ctr == i) return k;
+                        else ctr++;
+                    }
+                    return null;
+                },
+                removeItem: function (key) {
+                    delete data[key];
+                    this.length--;
+                    setData(data);
+                },
+                setItem: function (key, value) {
+                    data[key] = value + ''; // forces the value to a string
+                    this.length++;
+                    setData(data);
+                }
+            };
+        };
+
+        // Replace window.localStorage and window.sessionStorage with out custom
+        // implementation.
+        var localStorage = new Storage('local');
+        var sessionStorage = new Storage('session');
+        window.localStorage = localStorage;
+        window.sessionStorage = sessionStorage;
+        // For Safari private browsing need to also set the proto value.
+        window.localStorage.__proto__ = localStorage;
+        window.sessionStorage.__proto__ = sessionStorage;
+    })();
+}
diff --git a/CubeIT/js/multiform.js b/CubeIT/js/multiform.js
new file mode 100644 (file)
index 0000000..46c0de9
--- /dev/null
@@ -0,0 +1,278 @@
+registerLoader(load_multiform);
+
+function load_multiform() {
+    $(".cubeit_multiform").cubeitMultiform();
+}
+
+(function ($) {
+    function CubeitMultiform(form) {
+        this.sortable = true;
+        this.accordion = true;
+        this.addAfter = false;
+        this.deleteLabel = '';
+        this.addLabel = '';
+        this.style = 'classic';
+        this.form = form;
+        this.init();
+    }
+
+    CubeitMultiform.prototype = {
+        init: function () {
+            if (this.form.data('max') != undefined) {
+                return;
+            }
+
+            if (this.form.parents('[id^=cubeitbase]').length > 0) {
+                return;
+            }
+
+            this.sortable = this.form.data('sortable') == '1';
+            this.accordion = this.form.data('accordion') == '1';
+            this.addAfter = this.form.data('addafter') == '1';
+            this.deleteLabel = this.form.data('deletelabel');
+            this.addLabel = this.form.data('addlabel');
+            this.style = this.form.data('style');
+            this.isTable = this.style == 'table';
+
+            var $this = this;
+
+            this.form.data('max', 1000);
+
+            var toClone = '<div class="toClone"></div>';
+            var base = this.form.find('>dd[id^="cubeitbase"]');
+
+            baseId = $(base).attr('id').split('-', 2).shift();
+
+            $(base).wrap(toClone);
+            this.form.find('>.toClone').hide();
+            this.form.data('base', baseId);
+            this.markitUp();
+
+            this.form.parents('form').one('submit', function () {
+                var datas = false;
+                $this.form.find('>dd').each(function () {
+                    if ($(this).data('saveme') === false) {
+                        $(this).find(':input').prop('disabled', true);
+                    } else {
+                        datas = true;
+                    }
+                });
+
+                if (datas === false) {
+                    $this.form.append('<input type="hidden" value="" name="' + $this.form.data('name') + '" />');
+                }
+
+                return true;
+            });
+
+            if (this.sortable) {
+                this.form.sortable({
+                    axis: 'y',
+                    handle: '.move',
+                    items: '>dd',
+                    placeholder: "ui-state-highlight"
+                });
+            }
+
+            this.form.find('>dd>fieldset>.legendholder>legend').each(function () {
+                $this.initElement($(this), false);
+            });
+
+            if (this.addAfter) {
+                this.addAddButton();
+            }
+
+            if (this.isTable) {
+                this.initTable();
+                this.form.parents('form').on('submit', function () {
+                    $this.form.find('dd').each(function () {
+                        if ($(this).data('saveme') === false) {
+                            var renabled = $(this).find('input,select,textarea').prop('disabled', true);
+                            setTimeout(function () {
+                                $(renabled).prop('disabled', false);
+                            }, 1000);
+                        }
+                    });
+                    return true;
+                });
+            }
+            //.
+        },
+        initTable: function () {
+            this.initTableEmptyElement();
+        },
+        initTableEmptyElement: function () {
+            this.addElement(this.form.find('>.toClone'), true);
+        },
+        moveCloneToEnd: function () {
+            this.form.append(this.form.find('>.toClone'));
+        },
+        markitUp: function () {
+            this.form.find('.markitup').each(function () {
+                if ($(this).parents('.toClone').length > 0) {
+                    return;
+                }
+                _markitUpInit(this, true);
+            });
+        },
+        initElement: function (element, add) {
+            var $this = this;
+
+            var e = element.parent();
+
+            element.parent().find(".cubeit_multiform").cubeitMultiform();
+
+            element.html('<span class="legend">' + element.text() + '</span>');
+
+            var deleteButton = '<span class="del">' + this.deleteLabel + '</span>';
+            var addButton = '<span class="add">' + this.addLabel + '</span>';
+
+            e = e.parent();
+
+            var dd = e.parent();
+            var d = e.find('>dl');
+
+            if (!this.isTable) {
+                if (this.sortable) {
+                    element.prepend('<span class="move"></span>');
+                }
+                if (dd.find('>fieldset').data('saveme') !== undefined) {
+                    dd.data('saveme', dd.find('>fieldset').data('saveme'));
+                } else {
+                    if (add) {
+                        dd.data('saveme', false);
+                    } else {
+                        dd.data('saveme', true);
+                    }
+                }
+
+
+                if (dd.data('saveme') === false) {
+                    $(dd).one('change', '*', function () {
+                        $(dd).data('saveme', true).trigger('change');
+                    });
+                }
+
+                element.append(deleteButton);
+                if (!this.addAfter && !this.isTable) {
+                    element.append(addButton);
+                }
+
+                if (this.accordion) {
+                    element.find('.legend').click(function () {
+                        $(this).parent().parent().next().slideToggle(500, popup_dimensions);
+                    });
+                }
+            } else {
+
+                if (add) {
+                    d.append('<div class="but">' + addButton + '</div>');
+                    dd.data('saveme', false);
+                } else {
+                    d.append('<div class="but">' + deleteButton + '</div>');
+                    dd.data('saveme', true);
+                }
+
+                $(d).off('click');
+                $(d).off('change');
+
+                $(dd).on('change', '*', function () {
+                    $(dd).data('saveme', true);
+                });
+                $(d).on('click', '.but>.del', function () {
+                    $(this).parents('dd:first()').remove();
+                    popup_dimensions();
+                });
+
+                $(d).on('click', '.but>.add', function () {
+                    $(this).parents('.but').html(deleteButton);
+                    $this.initTableEmptyElement();
+                });
+            }
+
+            element.find('>.del').click(function () {
+                if ($this.form.parent().attr('data-confirm') == undefined || window.confirm($this.form.parent().attr('data-confirm'))) {
+                    $(this).parent().parent().parent().parent().remove();
+                    $this.afterDelete();
+                    popup_dimensions();
+                }
+            });
+
+            element.find('>.add').click(function () {
+                $this.addElement($(this).parent().parent().parent().parent(), true);
+            });
+
+            $(this.form).trigger('cubeitmultiformupdate');
+            $(this.form).find('>.cubeit_multiform_addbutton').appendTo($(this.form));
+
+            this.form.find(".cubeit_multiform").cubeitMultiform();
+        },
+        addElement: function (addAfter, add) {
+            var $this = this;
+            var max = parseInt($this.form.data('max'));
+            var c = $this.form.find('>.toClone').html();
+            var regexp = new RegExp($this.form.data('base'), 'g');
+            c = c.replace(regexp, max);
+            $(addAfter).after(c);
+
+            var created = $this.form.find('>#' + max + '-element');
+
+            $(created).find('>fieldset>.legendholder>legend').each(function () {
+                $this.initElement($(this), add);
+            });
+
+
+            $(created).find('.cubeit-file-manager').each(function () {
+                var pp1 = $(this).data('params');
+                var pp1d = base64.decode(pp1);
+                var p = JSON.parse(pp1d);
+                p.id = p.id.replace(regexp, max);
+                p.name = p.name.replace(regexp, max);
+                var s = JSON.stringify(p, true);
+                var pp = base64.encode(s);
+                $(this).attr('data-params', pp);
+                $(this).data('params', pp);
+                $(this).find('.cubeit-open-upload-form').attr('href', $(this).find('.cubeit-open-upload-form').attr('href').replace(pp1, pp));
+            });
+
+            $this.form.data('max', max + 1);
+            $this.markitUp();
+            $(window).trigger('cubeitresize');
+
+            try {
+                load_filemanager();
+            } catch (err) {
+
+            }
+            $(document).trigger('cubeitdomchange');
+            this.moveCloneToEnd();
+        },
+        addAddButton: function () {
+            this.form.append('<a href="#" class="cubeit_multiform_addbutton">' + this.addLabel + '</a>');
+            var $this = this;
+            this.form.find('a.cubeit_multiform_addbutton').click(function () {
+                var l = $this.form.find('>.toClone');
+                $this.addElement(l);
+                $this.form.append(l);
+
+                return false;
+            });
+            return;
+        },
+        afterDelete: function () {
+            if (this.form.find('>dd').length > 0) {
+                return;
+            }
+            if (!this.addAfter) {
+                this.addElement(this.form.find('>.toClone'), true);
+            }
+        }
+    };
+
+    jQuery.fn.cubeitMultiform = function () {
+        return this.each(function () {
+            var $this = $(this);
+            var form = new CubeitMultiform($this);
+        })
+    }
+})(jQuery);
\ No newline at end of file
diff --git a/CubeIT/js/orderform.js b/CubeIT/js/orderform.js
new file mode 100644 (file)
index 0000000..66e03fd
--- /dev/null
@@ -0,0 +1,32 @@
+(function ($) {
+    function JQorderform(element) {
+        this.element = element;
+        this.init();
+    }
+
+    JQorderform.prototype = {
+        init: function () {
+            this.element.sortable({
+                axis: 'y',
+                //items: '>li',
+                placeholder: "ui-state-highlight"
+            });
+        }
+    };
+
+    jQuery.fn.orderform = function () {
+        return this.each(function () {
+            var $this = $(this);
+            if ($(this).data('orderform') === undefined) {
+                $(this).data('orderform', new JQorderform($this));
+            }
+        })
+    };
+})(jQuery);
+
+registerLoader(load_orderform);
+
+function load_orderform() {
+
+    $(".cubeit_formorder").orderform();
+}
diff --git a/CubeIT/js/orientation.js b/CubeIT/js/orientation.js
new file mode 100644 (file)
index 0000000..5a76cde
--- /dev/null
@@ -0,0 +1,59 @@
+$(function() {
+       var currentOrientation = '';
+       var supportMq = Modernizr.mq('only all');
+
+       if ("onorientationchange" in window) {
+               window.addEventListener('orientationchange', function() {
+                       checkOrientation();
+                       setTimeout(function() {
+                               checkOrientation();
+                       }, 750);
+               }, false);
+       } else {
+               $(window).resize(checkOrientation);
+       }
+
+
+       checkOrientation();
+
+
+       function handleRotation() {
+               checkOrientation();
+       }
+
+       function checkOrientation() {
+               var o = getOrientation();
+               if (o == currentOrientation) {
+                       return;
+               }
+               var toRemove;
+               if (o == 'landscape') {
+                       toRemove = 'portrait';
+               } else {
+                       toRemove = 'landscape';
+               }
+               $('html').removeClass(toRemove);
+               $('html').addClass(o);
+               currentOrientation = o;
+       }
+
+       function getOrientation() {
+               if (supportMq) {
+                       if (Modernizr.mq('(orientation:portrait)')) {
+                               return 'portrait';
+                       } else {
+                               return 'landscape';
+                       }
+               } else {
+                       if ($(window).width() > $(window).height()) {
+                               return 'landscape';
+                       } else {
+                               return 'portrait';
+                       }
+               }
+       }
+
+});
+
+
+
diff --git a/CubeIT/js/overthrow/overthrow.js b/CubeIT/js/overthrow/overthrow.js
new file mode 100644 (file)
index 0000000..0660175
--- /dev/null
@@ -0,0 +1,400 @@
+/*! overthrow - An overflow:auto polyfill for responsive design. - v0.6.6 - 2013-08-13
+ * Copyright (c) 2013 Scott Jehl, Filament Group, Inc.; Licensed MIT */
+/*! Overthrow. An overflow:auto polyfill for responsive design. (c) 2012: Scott Jehl, Filament Group, Inc. http://filamentgroup.github.com/Overthrow/license.txt */
+(function(w, undefined) {
+
+       var doc = w.document,
+                       docElem = doc.documentElement,
+                       enabledClassName = "overthrow-enabled",
+                       // Touch events are used in the polyfill, and thus are a prerequisite
+                       canBeFilledWithPoly = "ontouchmove" in doc,
+                       // The following attempts to determine whether the browser has native overflow support
+                       // so we can enable it but not polyfill
+                       nativeOverflow =
+                       // Features-first. iOS5 overflow scrolling property check - no UA needed here. thanks Apple :)
+                       "WebkitOverflowScrolling" in docElem.style ||
+                       // Test the windows scrolling property as well
+                       "msOverflowStyle" in docElem.style ||
+                       // Touch events aren't supported and screen width is greater than X
+                                       // ...basically, this is a loose "desktop browser" check.
+                                                       // It may wrongly opt-in very large tablets with no touch support.
+                                                                       (!canBeFilledWithPoly && w.screen.width > 800) ||
+                                                                       // Hang on to your hats.
+                                                                                       // Whitelist some popular, overflow-supporting mobile browsers for now and the future
+                                                                                                       // These browsers are known to get overlow support right, but give us no way of detecting it.
+                                                                                                                       (function() {
+                                                                                                                               var ua = w.navigator.userAgent,
+                                                                                                                                               // Webkit crosses platforms, and the browsers on our list run at least version 534
+                                                                                                                                               webkit = ua.match(/AppleWebKit\/([0-9]+)/),
+                                                                                                                                               wkversion = webkit && webkit[1],
+                                                                                                                                               wkLte534 = webkit && wkversion >= 534;
+
+                                                                                                                               return (
+                                                                                                                                               /* Android 3+ with webkit gte 534
+                                                                                                                                                ~: Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13 */
+                                                                                                                                               ua.match(/Android ([0-9]+)/) && RegExp.$1 >= 3 && wkLte534 ||
+                                                                                                                                               /* Blackberry 7+ with webkit gte 534
+                                                                                                                                                ~: Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0 Mobile Safari/534.11+ */
+                                                                                                                                               ua.match(/ Version\/([0-9]+)/) && RegExp.$1 >= 0 && w.blackberry && wkLte534 ||
+                                                                                                                                               /* Blackberry Playbook with webkit gte 534
+                                                                                                                                                ~: Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/0.0.1 Safari/534.8+ */
+                                                                                                                                               ua.indexOf("PlayBook") > -1 && wkLte534 && !ua.indexOf("Android 2") === -1 ||
+                                                                                                                                               /* Firefox Mobile (Fennec) 4 and up
+                                                                                                                                                ~: Mozilla/5.0 (Mobile; rv:15.0) Gecko/15.0 Firefox/15.0 */
+                                                                                                                                               ua.match(/Firefox\/([0-9]+)/) && RegExp.$1 >= 4 ||
+                                                                                                                                               /* WebOS 3 and up (TouchPad too)
+                                                                                                                                                ~: Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.48 Safari/534.6 TouchPad/1.0 */
+                                                                                                                                               ua.match(/wOSBrowser\/([0-9]+)/) && RegExp.$1 >= 233 && wkLte534 ||
+                                                                                                                                               /* Nokia Browser N8
+                                                                                                                                                ~: Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/012.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.0 Mobile Safari/533.4 3gpp-gba
+                                                                                                                                                ~: Note: the N9 doesn't have native overflow with one-finger touch. wtf */
+                                                                                                                                               ua.match(/NokiaBrowser\/([0-9\.]+)/) && parseFloat(RegExp.$1) === 7.3 && webkit && wkversion >= 533
+                                                                                                                                               );
+                                                                                                                       })();
+
+                                                                                                       // Expose overthrow API
+                                                                                                       w.overthrow = {};
+
+                                                                                                       w.overthrow.enabledClassName = enabledClassName;
+
+                                                                                                       w.overthrow.addClass = function() {
+                                                                                                               if (docElem.className.indexOf(w.overthrow.enabledClassName) === -1) {
+                                                                                                                       docElem.className += " " + w.overthrow.enabledClassName;
+                                                                                                               }
+                                                                                                       };
+
+                                                                                                       w.overthrow.removeClass = function() {
+                                                                                                               docElem.className = docElem.className.replace(w.overthrow.enabledClassName, "");
+                                                                                                       };
+
+                                                                                                       // Enable and potentially polyfill overflow
+                                                                                                       w.overthrow.set = function() {
+
+                                                                                                               // If nativeOverflow or at least the element canBeFilledWithPoly, add a class to cue CSS that assumes overflow scrolling will work (setting height on elements and such)
+                                                                                                               if (nativeOverflow) {
+                                                                                                                       w.overthrow.addClass();
+                                                                                                               }
+
+                                                                                                       };
+
+                                                                                                       // expose polyfillable
+                                                                                                       w.overthrow.canBeFilledWithPoly = canBeFilledWithPoly;
+
+                                                                                                       // Destroy everything later. If you want to.
+                                                                                                       w.overthrow.forget = function() {
+
+                                                                                                               w.overthrow.removeClass();
+
+                                                                                                       };
+
+                                                                                                       // Expose overthrow API
+                                                                                                       w.overthrow.support = nativeOverflow ? "native" : "none";
+
+                                                                                               })(this);
+
+                                                                               /*! Overthrow. An overflow:auto polyfill for responsive design. (c) 2012: Scott Jehl, Filament Group, Inc. http://filamentgroup.github.com/Overthrow/license.txt */
+                                                                               (function(w, o, undefined) {
+
+                                                                                       // o is overthrow reference from overthrow-polyfill.js
+                                                                                       if (o === undefined) {
+                                                                                               return;
+                                                                                       }
+
+                                                                                       // Easing can use any of Robert Penner's equations (http://www.robertpenner.com/easing_terms_of_use.html). By default, overthrow includes ease-out-cubic
+                                                                                       // arguments: t = current iteration, b = initial value, c = end value, d = total iterations
+                                                                                       // use w.overthrow.easing to provide a custom function externally, or pass an easing function as a callback to the toss method
+                                                                                       o.easing = function(t, b, c, d) {
+                                                                                               return c * ((t = t / d - 1) * t * t + 1) + b;
+                                                                                       };
+
+                                                                                       // tossing property is true during a programatic scroll
+                                                                                       o.tossing = false;
+
+                                                                                       // Keeper of intervals
+                                                                                       var timeKeeper;
+
+                                                                                       /* toss scrolls and element with easing
+
+                                                                                        // elem is the element to scroll
+                                                                                        // options hash:
+                                                                                        * left is the desired horizontal scroll. Default is "+0". For relative distances, pass a string with "+" or "-" in front.
+                                                                                        * top is the desired vertical scroll. Default is "+0". For relative distances, pass a string with "+" or "-" in front.
+                                                                                        * duration is the number of milliseconds the throw will take. Default is 100.
+                                                                                        * easing is an optional custom easing function. Default is w.overthrow.easing. Must follow the easing function signature
+
+                                                                                        */
+                                                                                       o.toss = function(elem, options) {
+                                                                                               o.intercept();
+                                                                                               var i = 0,
+                                                                                                               sLeft = elem.scrollLeft,
+                                                                                                               sTop = elem.scrollTop,
+                                                                                                               // Toss defaults
+                                                                                                               op = {
+                                                                                                                       top: "+0",
+                                                                                                                       left: "+0",
+                                                                                                                       duration: 50,
+                                                                                                                       easing: o.easing
+                                                                                                               },
+                                                                                               endLeft, endTop;
+
+                                                                                               // Mixin based on predefined defaults
+                                                                                               if (options) {
+                                                                                                       for (var j in op) {
+                                                                                                               if (options[ j ] !== undefined) {
+                                                                                                                       op[ j ] = options[ j ];
+                                                                                                               }
+                                                                                                       }
+                                                                                               }
+
+                                                                                               // Convert relative values to ints
+                                                                                               // First the left val
+                                                                                               if (typeof op.left === "string") {
+                                                                                                       op.left = parseFloat(op.left);
+                                                                                                       endLeft = op.left + sLeft;
+                                                                                               }
+                                                                                               else {
+                                                                                                       endLeft = op.left;
+                                                                                                       op.left = op.left - sLeft;
+                                                                                               }
+                                                                                               // Then the top val
+                                                                                               if (typeof op.top === "string") {
+
+                                                                                                       op.top = parseFloat(op.top);
+                                                                                                       endTop = op.top + sTop;
+                                                                                               }
+                                                                                               else {
+                                                                                                       endTop = op.top;
+                                                                                                       op.top = op.top - sTop;
+                                                                                               }
+
+                                                                                               o.tossing = true;
+                                                                                               timeKeeper = setInterval(function() {
+                                                                                                       if (i++ < op.duration) {
+                                                                                                               elem.scrollLeft = op.easing(i, sLeft, op.left, op.duration);
+                                                                                                               elem.scrollTop = op.easing(i, sTop, op.top, op.duration);
+                                                                                                       }
+                                                                                                       else {
+                                                                                                               if (endLeft !== elem.scrollLeft) {
+                                                                                                                       elem.scrollLeft = endLeft;
+                                                                                                               }
+                                                                                                               if (endTop !== elem.scrollTop) {
+                                                                                                                       elem.scrollTop = endTop;
+                                                                                                               }
+                                                                                                               o.intercept();
+                                                                                                       }
+                                                                                               }, 1);
+
+                                                                                               // Return the values, post-mixin, with end values specified
+                                                                                               return {top: endTop, left: endLeft, duration: o.duration, easing: o.easing};
+                                                                                       };
+
+                                                                                       // Intercept any throw in progress
+                                                                                       o.intercept = function() {
+                                                                                               clearInterval(timeKeeper);
+                                                                                               o.tossing = false;
+                                                                                       };
+
+                                                                               })(this, this.overthrow);
+                                                                               /*! Overthrow. An overflow:auto polyfill for responsive design. (c) 2012: Scott Jehl, Filament Group, Inc. http://filamentgroup.github.com/Overthrow/license.txt */
+                                                                               (function(w, o, undefined) {
+
+                                                                                       // o is overthrow reference from overthrow-polyfill.js
+                                                                                       if (o === undefined) {
+                                                                                               return;
+                                                                                       }
+
+                                                                                       o.scrollIndicatorClassName = "overthrow";
+
+                                                                                       var doc = w.document,
+                                                                                                       docElem = doc.documentElement,
+                                                                                                       // o api
+                                                                                                       nativeOverflow = o.support === "native",
+                                                                                                       canBeFilledWithPoly = o.canBeFilledWithPoly,
+                                                                                                       configure = o.configure,
+                                                                                                       set = o.set,
+                                                                                                       forget = o.forget,
+                                                                                                       scrollIndicatorClassName = o.scrollIndicatorClassName;
+
+                                                                                       // find closest overthrow (elem or a parent)
+                                                                                       o.closest = function(target, ascend) {
+                                                                                               return !ascend && target.className && target.className.indexOf(scrollIndicatorClassName) > -1 && target || o.closest(target.parentNode);
+                                                                                       };
+
+                                                                                       // polyfill overflow
+                                                                                       var enabled = false;
+                                                                                       o.set = function() {
+
+                                                                                               set();
+
+                                                                                               // If nativeOverflow or it doesn't look like the browser canBeFilledWithPoly, our job is done here. Exit viewport left.
+                                                                                               if (enabled || nativeOverflow || !canBeFilledWithPoly) {
+                                                                                                       return;
+                                                                                               }
+
+                                                                                               w.overthrow.addClass();
+
+                                                                                               enabled = true;
+
+                                                                                               o.support = "polyfilled";
+
+                                                                                               o.forget = function() {
+                                                                                                       forget();
+                                                                                                       enabled = false;
+                                                                                                       // Remove touch binding (check for method support since this part isn't qualified by touch support like the rest)
+                                                                                                       if (doc.removeEventListener) {
+                                                                                                               doc.removeEventListener("touchstart", start, false);
+                                                                                                       }
+                                                                                               };
+
+                                                                                               // Fill 'er up!
+                                                                                               // From here down, all logic is associated with touch scroll handling
+                                                                                               // elem references the overthrow element in use
+                                                                                               var elem,
+                                                                                                               // The last several Y values are kept here
+                                                                                                               lastTops = [],
+                                                                                                               // The last several X values are kept here
+                                                                                                               lastLefts = [],
+                                                                                                               // lastDown will be true if the last scroll direction was down, false if it was up
+                                                                                                               lastDown,
+                                                                                                               // lastRight will be true if the last scroll direction was right, false if it was left
+                                                                                                               lastRight,
+                                                                                                               // For a new gesture, or change in direction, reset the values from last scroll
+                                                                                                               resetVertTracking = function() {
+                                                                                                                       lastTops = [];
+                                                                                                                       lastDown = null;
+                                                                                                               },
+                                                                                                               resetHorTracking = function() {
+                                                                                                                       lastLefts = [];
+                                                                                                                       lastRight = null;
+                                                                                                               },
+                                                                                                               // On webkit, touch events hardly trickle through textareas and inputs
+                                                                                                               // Disabling CSS pointer events makes sure they do, but it also makes the controls innaccessible
+                                                                                                               // Toggling pointer events at the right moments seems to do the trick
+                                                                                                               // Thanks Thomas Bachem http://stackoverflow.com/a/5798681 for the following
+                                                                                                               inputs,
+                                                                                                               setPointers = function(val) {
+                                                                                                                       inputs = elem.querySelectorAll("textarea, input");
+                                                                                                                       for (var i = 0, il = inputs.length; i < il; i++) {
+                                                                                                                               inputs[ i ].style.pointerEvents = val;
+                                                                                                                       }
+                                                                                                               },
+                                                                                                               // For nested overthrows, changeScrollTarget restarts a touch event cycle on a parent or child overthrow
+                                                                                                               changeScrollTarget = function(startEvent, ascend) {
+                                                                                                                       if (doc.createEvent) {
+                                                                                                                               var newTarget = (!ascend || ascend === undefined) && elem.parentNode || elem.touchchild || elem,
+                                                                                                                                               tEnd;
+
+                                                                                                                               if (newTarget !== elem) {
+                                                                                                                                       tEnd = doc.createEvent("HTMLEvents");
+                                                                                                                                       tEnd.initEvent("touchend", true, true);
+                                                                                                                                       elem.dispatchEvent(tEnd);
+                                                                                                                                       newTarget.touchchild = elem;
+                                                                                                                                       elem = newTarget;
+                                                                                                                                       newTarget.dispatchEvent(startEvent);
+                                                                                                                               }
+                                                                                                                       }
+                                                                                                               },
+                                                                                                               // Touchstart handler
+                                                                                                               // On touchstart, touchmove and touchend are freshly bound, and all three share a bunch of vars set by touchstart
+                                                                                                               // Touchend unbinds them again, until next time
+                                                                                                               start = function(e) {
+
+                                                                                                                       // Stop any throw in progress
+                                                                                                                       if (o.intercept) {
+                                                                                                                               o.intercept();
+                                                                                                                       }
+
+                                                                                                                       // Reset the distance and direction tracking
+                                                                                                                       resetVertTracking();
+                                                                                                                       resetHorTracking();
+
+                                                                                                                       elem = o.closest(e.target);
+
+                                                                                                                       if (!elem || elem === docElem || e.touches.length > 1) {
+                                                                                                                               return;
+                                                                                                                       }
+
+                                                                                                                       setPointers("none");
+                                                                                                                       var touchStartE = e,
+                                                                                                                                       scrollT = elem.scrollTop,
+                                                                                                                                       scrollL = elem.scrollLeft,
+                                                                                                                                       height = elem.offsetHeight,
+                                                                                                                                       width = elem.offsetWidth,
+                                                                                                                                       startY = e.touches[ 0 ].pageY,
+                                                                                                                                       startX = e.touches[ 0 ].pageX,
+                                                                                                                                       scrollHeight = elem.scrollHeight,
+                                                                                                                                       scrollWidth = elem.scrollWidth,
+                                                                                                                                       // Touchmove handler
+                                                                                                                                       move = function(e) {
+
+                                                                                                                                               var ty = scrollT + startY - e.touches[ 0 ].pageY,
+                                                                                                                                                               tx = scrollL + startX - e.touches[ 0 ].pageX,
+                                                                                                                                                               down = ty >= (lastTops.length ? lastTops[ 0 ] : 0),
+                                                                                                                                                               right = tx >= (lastLefts.length ? lastLefts[ 0 ] : 0);
+
+                                                                                                                                               // If there's room to scroll the current container, prevent the default window scroll
+                                                                                                                                               if ((ty > 0 && ty < scrollHeight - height) || (tx > 0 && tx < scrollWidth - width)) {
+                                                                                                                                                       e.preventDefault();
+                                                                                                                                               }
+                                                                                                                                               // This bubbling is dumb. Needs a rethink.
+                                                                                                                                               else {
+                                                                                                                                                       changeScrollTarget(touchStartE);
+                                                                                                                                               }
+
+                                                                                                                                               // If down and lastDown are inequal, the y scroll has changed direction. Reset tracking.
+                                                                                                                                               if (lastDown && down !== lastDown) {
+                                                                                                                                                       resetVertTracking();
+                                                                                                                                               }
+
+                                                                                                                                               // If right and lastRight are inequal, the x scroll has changed direction. Reset tracking.
+                                                                                                                                               if (lastRight && right !== lastRight) {
+                                                                                                                                                       resetHorTracking();
+                                                                                                                                               }
+
+                                                                                                                                               // remember the last direction in which we were headed
+                                                                                                                                               lastDown = down;
+                                                                                                                                               lastRight = right;
+
+                                                                                                                                               // set the container's scroll
+                                                                                                                                               elem.scrollTop = ty;
+                                                                                                                                               elem.scrollLeft = tx;
+
+                                                                                                                                               lastTops.unshift(ty);
+                                                                                                                                               lastLefts.unshift(tx);
+
+                                                                                                                                               if (lastTops.length > 3) {
+                                                                                                                                                       lastTops.pop();
+                                                                                                                                               }
+                                                                                                                                               if (lastLefts.length > 3) {
+                                                                                                                                                       lastLefts.pop();
+                                                                                                                                               }
+                                                                                                                                       },
+                                                                                                                                       // Touchend handler
+                                                                                                                                       end = function(e) {
+
+                                                                                                                                               // Bring the pointers back
+                                                                                                                                               setPointers("auto");
+                                                                                                                                               setTimeout(function() {
+                                                                                                                                                       setPointers("none");
+                                                                                                                                               }, 450);
+                                                                                                                                               elem.removeEventListener("touchmove", move, false);
+                                                                                                                                               elem.removeEventListener("touchend", end, false);
+                                                                                                                                       };
+
+                                                                                                                       elem.addEventListener("touchmove", move, false);
+                                                                                                                       elem.addEventListener("touchend", end, false);
+                                                                                                               };
+
+                                                                                               // Bind to touch, handle move and end within
+                                                                                               doc.addEventListener("touchstart", start, false);
+                                                                                       };
+
+                                                                               })(this, this.overthrow);
+
+                                                                               /*! Overthrow. An overflow:auto polyfill for responsive design. (c) 2012: Scott Jehl, Filament Group, Inc. http://filamentgroup.github.com/Overthrow/license.txt */
+                                                                               (function(w, undefined) {
+
+                                                                                       // Auto-init
+                                                                                       w.overthrow.set();
+
+                                                                               }(this)); 
\ No newline at end of file
diff --git a/CubeIT/js/passwordGenerator.js b/CubeIT/js/passwordGenerator.js
new file mode 100644 (file)
index 0000000..d43662c
--- /dev/null
@@ -0,0 +1,44 @@
+registerLoader(load_password_generator);
+
+(function ($) {
+    function JQpasswordGenerator(element) {
+        this.element = element;
+        this.init();
+    }
+
+    JQpasswordGenerator.prototype = {
+        init: function () {
+            var $this = this;
+            this.links = this.element.find('.links');
+            this.fields = this.element.find('.fields');
+            this.initEvents();
+        },
+        initEvents: function () {
+            var $this = this;
+            $(this.element).on('click', '.changePassword', function () {
+                $($this.links).hide();
+                $($this.fields).html('<input type="text" name="' + $this.element.data('name') + '" value="" />');
+                return false;
+            });
+
+            $(this.element).on('click', '.generatePassword', function () {
+                $($this.links).hide();
+                $($this.fields).html('<input type="text" name="' + $this.element.data('name') + '" value="' + $(this).data('pw') + '" />');
+                return false;
+            });
+        }
+    };
+
+    jQuery.fn.passwordGenerator = function () {
+        return this.each(function () {
+            var $this = $(this);
+            if ($(this).data('passwordGenerator') == undefined) {
+                $(this).data('passwordGenerator', new JQpasswordGenerator($this));
+            }
+        })
+    };
+})(jQuery);
+
+function load_password_generator() {
+    $(".passwordGenerator").passwordGenerator();
+}
\ No newline at end of file
diff --git a/CubeIT/js/pdfplayer.js b/CubeIT/js/pdfplayer.js
new file mode 100644 (file)
index 0000000..3cfc0f3
--- /dev/null
@@ -0,0 +1,183 @@
+registerLoader(load_pdfplayer__, true);
+
+function load_pdfplayer__() {
+       $(".cubeitPdfPlayer").pdfplayer();
+}
+
+(function ($) {
+       function JQpdfplayer(element) {
+               this.currentPage = -1;
+               this.preloadCursor = 1;
+               this.element = element;
+               this.nbpages = parseInt(this.element.data('nbpages'));
+               this.path = this.element.data('path');
+               this.init();
+               this.loading = false;
+       }
+
+       JQpdfplayer.prototype = {
+               init: function () {
+                       this.initEvents();
+                       this.goPage(1);
+                       var $this = this;
+                       setTimeout(function () {
+                               $this.startPreloading(1);
+                       }, 1000);
+               },
+               startPreloading: function (page) {
+                       if (page > this.nbpages) {
+                               return;
+                       }
+                       this.preloadCursor = page;
+                       var $this = this;
+                       this.loadPage(page, function (img, page) {
+                               setTimeout(function () {
+                                       $this.startPreloading(page + 1);
+                               }, 250);
+                       });
+               },
+               initEvents: function () {
+                       var $this = this;
+                       this.element.find('.next').on('click', function () {
+                               $this.goNext();
+                               return false;
+                       });
+                       this.element.find('.prev').on('click', function () {
+                               $this.goPrev();
+                               return false;
+                       });
+                       this.element.find('.fs').on('click', function () {
+                               $this.toggleFullscreen();
+                               return false;
+                       });
+                       this.element.find('input').on('change', function () {
+                               $this.changeFieldHandle();
+                       });
+                       this.element.find('input').on('keyup', function (e) {
+                               if (e.which == 13) {
+                                       $this.changeFieldHandle();
+                               }
+                       });
+                       $(window).on('cubeitresize', function () {
+                               $this.resize();
+                       });
+               },
+               changeFieldHandle: function () {
+                       var val = $(this).val();
+                       val = val.replace(/[^0-9]+/g, '');
+                       val = parseInt(val);
+
+                       if (!isNaN(val)) {
+                               $this.goPage(val);
+                       } else {
+                               $(this).val(this.currentPage);
+                       }
+               },
+               goNext: function () {
+                       if (this.currentPage >= this.nbpages) {
+                               return;
+                       }
+                       this.goPage(this.currentPage + 1);
+               },
+               goPrev: function () {
+                       if (this.currentPage <= 1) {
+                               return;
+                       }
+                       this.goPage(this.currentPage - 1);
+               },
+               normalize: function (page) {
+                       return Math.max(1, Math.min(page, this.nbpages));
+               },
+               goPage: function (i) {
+                       if (i == this.currentPage) {
+                               this.element.find('input').val(i);
+                               return;
+                       }
+                       if (this.loading) {
+                               return;
+                       }
+                       this.displayLoader();
+                       this.loading = true;
+                       var $this = this;
+                       var page = this.normalize(i);
+                       this.loadPage(page, function (img, page) {
+                               $this.displayPage(img, page);
+                       });
+               },
+               displayPage: function (img, page) {
+                       this.element.find('.container').html(img);
+                       this.currentPage = page;
+                       this.element.find('input').val(page);
+                       this.hideLoader();
+                       this.resize();
+                       this.loading = false;
+               },
+               displayLoader: function () {
+                       this.element.find('.loader').css('visibility', 'visible');
+               },
+               hideLoader: function () {
+                       this.element.find('.loader').css('visibility', 'hidden');
+               },
+               loadPage: function (i, callback) {
+                       var img = new Image();
+                       img.src = this.path + '/p' + i + '.jpg';
+                       if (img.complete || img.readyState == 'complete' || img.readyState == 4) {
+                               setTimeout(function () {
+                                       if (callback) {
+                                               callback(img, i);
+                                       }
+                               }, 10);
+                       } else {
+                               $(img).on('load',function () {
+                                       if (callback) {
+                                               callback(img, i);
+                                       }
+                               });
+                       }
+               },
+               toggleFullscreen: function () {
+                       screenfull.toggle(this.element[0]);
+                       this.resize();
+               },
+               resize: function () {
+                       var c = this.element.find('.container');
+                       var l = this.element.find('.loader');
+
+                       var cw = $(c).data('width');
+                       var ch = $(c).data('height');
+
+                       $(c).css({width: cw, height: ch});
+
+                       $(l).css({
+                               top: (getWindowHeight() - $(l).outerHeight()) / 2,
+                               left: ($(window).width() - $(l).outerWidth()) / 2
+                       });
+
+
+                       $(c).find('img').each(function () {
+                               var iw = $(this).naturalWidth();
+                               var ih = $(this).naturalHeight();
+                               var s = Math.min(cw / iw, ch / ih);
+
+                               var w = Math.round(iw * s);
+                               var h = Math.round(ih * s);
+                               var top = Math.round((ch - h) / 2);
+                               var left = Math.round((cw - w) / 2);
+
+                               $(this).css({
+                                       width: w,
+                                       height: h,
+                                       top: top,
+                                       left: left
+                               });
+                       });
+               },
+       };
+       jQuery.fn.pdfplayer = function () {
+               return this.each(function () {
+                       var $this = $(this);
+                       $(this).data('pdfplayer', new JQpdfplayer($this));
+               });
+       };
+}
+)(jQuery);
diff --git a/CubeIT/js/perfect-scrollbar/perfect-scrollbar.css b/CubeIT/js/perfect-scrollbar/perfect-scrollbar.css
new file mode 100644 (file)
index 0000000..859062c
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * Container style
+ */
+.ps {
+  overflow: hidden !important;
+  overflow-anchor: none;
+  -ms-overflow-style: none;
+  touch-action: auto;
+  -ms-touch-action: auto;
+}
+
+/*
+ * Scrollbar rail styles
+ */
+.ps__rail-x {
+  display: none;
+  opacity: 0;
+  transition: background-color .2s linear, opacity .2s linear;
+  -webkit-transition: background-color .2s linear, opacity .2s linear;
+  height: 15px;
+  /* there must be 'bottom' or 'top' for ps__rail-x */
+  bottom: 0px;
+  /* please don't change 'position' */
+  position: absolute;
+}
+
+.ps__rail-y {
+  display: none;
+  opacity: 0;
+  transition: background-color .2s linear, opacity .2s linear;
+  -webkit-transition: background-color .2s linear, opacity .2s linear;
+  width: 15px;
+  /* there must be 'right' or 'left' for ps__rail-y */
+  right: 0;
+  /* please don't change 'position' */
+  position: absolute;
+}
+
+.ps--active-x > .ps__rail-x,
+.ps--active-y > .ps__rail-y {
+  display: block;
+  background-color: transparent;
+}
+
+.ps:hover > .ps__rail-x,
+.ps:hover > .ps__rail-y,
+.ps--focus > .ps__rail-x,
+.ps--focus > .ps__rail-y,
+.ps--scrolling-x > .ps__rail-x,
+.ps--scrolling-y > .ps__rail-y {
+  opacity: 0.6;
+}
+
+.ps__rail-x:hover,
+.ps__rail-y:hover,
+.ps__rail-x:focus,
+.ps__rail-y:focus {
+  background-color: #eee;
+  opacity: 0.9;
+}
+
+/*
+ * Scrollbar thumb styles
+ */
+.ps__thumb-x {
+  background-color: #aaa;
+  border-radius: 6px;
+  transition: background-color .2s linear, height .2s ease-in-out;
+  -webkit-transition: background-color .2s linear, height .2s ease-in-out;
+  height: 6px;
+  /* there must be 'bottom' for ps__thumb-x */
+  bottom: 2px;
+  /* please don't change 'position' */
+  position: absolute;
+}
+
+.ps__thumb-y {
+  background-color: #aaa;
+  border-radius: 6px;
+  transition: background-color .2s linear, width .2s ease-in-out;
+  -webkit-transition: background-color .2s linear, width .2s ease-in-out;
+  width: 6px;
+  /* there must be 'right' for ps__thumb-y */
+  right: 2px;
+  /* please don't change 'position' */
+  position: absolute;
+}
+
+.ps__rail-x:hover > .ps__thumb-x,
+.ps__rail-x:focus > .ps__thumb-x {
+  background-color: #999;
+  height: 11px;
+}
+
+.ps__rail-y:hover > .ps__thumb-y,
+.ps__rail-y:focus > .ps__thumb-y {
+  background-color: #999;
+  width: 11px;
+}
+
+/* MS supports */
+@supports (-ms-overflow-style: none) {
+  .ps {
+    overflow: auto !important;
+  }
+}
+
+@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+  .ps {
+    overflow: auto !important;
+  }
+}
diff --git a/CubeIT/js/perfect-scrollbar/perfect-scrollbar.min.js b/CubeIT/js/perfect-scrollbar/perfect-scrollbar.min.js
new file mode 100644 (file)
index 0000000..dfa8188
--- /dev/null
@@ -0,0 +1,6 @@
+/*!
+ * perfect-scrollbar v1.3.0
+ * (c) 2017 Hyunje Jun
+ * @license MIT
+ */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.PerfectScrollbar=e()}(this,function(){"use strict";function t(t){return getComputedStyle(t)}function e(t,e){for(var i in e){var r=e[i];"number"==typeof r&&(r+="px"),t.style[i]=r}return t}function i(t){var e=document.createElement("div");return e.className=t,e}function r(t,e){if(!v)throw new Error("No element matching method supported");return v.call(t,e)}function l(t){t.remove?t.remove():t.parentNode&&t.parentNode.removeChild(t)}function n(t,e){return Array.prototype.filter.call(t.children,function(t){return r(t,e)})}function o(t,e){var i=t.element.classList,r=m.state.scrolling(e);i.contains(r)?clearTimeout(Y[e]):i.add(r)}function s(t,e){Y[e]=setTimeout(function(){return t.isAlive&&t.element.classList.remove(m.state.scrolling(e))},t.settings.scrollingThreshold)}function a(t,e){o(t,e),s(t,e)}function c(t){if("function"==typeof window.CustomEvent)return new CustomEvent(t);var e=document.createEvent("CustomEvent");return e.initCustomEvent(t,!1,!1,void 0),e}function h(t,e,i,r,l){var n=i[0],o=i[1],s=i[2],h=i[3],u=i[4],d=i[5];void 0===r&&(r=!0),void 0===l&&(l=!1);var f=t.element;t.reach[h]=null,f[s]<1&&(t.reach[h]="start"),f[s]>t[n]-t[o]-1&&(t.reach[h]="end"),e&&(f.dispatchEvent(c("ps-scroll-"+h)),e<0?f.dispatchEvent(c("ps-scroll-"+u)):e>0&&f.dispatchEvent(c("ps-scroll-"+d)),r&&a(t,h)),t.reach[h]&&(e||l)&&f.dispatchEvent(c("ps-"+h+"-reach-"+t.reach[h]))}function u(t){return parseInt(t,10)||0}function d(t){return r(t,"input,[contenteditable]")||r(t,"select,[contenteditable]")||r(t,"textarea,[contenteditable]")||r(t,"button,[contenteditable]")}function f(e){var i=t(e);return u(i.width)+u(i.paddingLeft)+u(i.paddingRight)+u(i.borderLeftWidth)+u(i.borderRightWidth)}function p(t,e){return t.settings.minScrollbarLength&&(e=Math.max(e,t.settings.minScrollbarLength)),t.settings.maxScrollbarLength&&(e=Math.min(e,t.settings.maxScrollbarLength)),e}function b(t,i){var r={width:i.railXWidth};i.isRtl?r.left=i.negativeScrollAdjustment+t.scrollLeft+i.containerWidth-i.contentWidth:r.left=t.scrollLeft,i.isScrollbarXUsingBottom?r.bottom=i.scrollbarXBottom-t.scrollTop:r.top=i.scrollbarXTop+t.scrollTop,e(i.scrollbarXRail,r);var l={top:t.scrollTop,height:i.railYHeight};i.isScrollbarYUsingRight?i.isRtl?l.right=i.contentWidth-(i.negativeScrollAdjustment+t.scrollLeft)-i.scrollbarYRight-i.scrollbarYOuterWidth:l.right=i.scrollbarYRight-t.scrollLeft:i.isRtl?l.left=i.negativeScrollAdjustment+t.scrollLeft+2*i.containerWidth-i.contentWidth-i.scrollbarYLeft-i.scrollbarYOuterWidth:l.left=i.scrollbarYLeft+t.scrollLeft,e(i.scrollbarYRail,l),e(i.scrollbarX,{left:i.scrollbarXLeft,width:i.scrollbarXWidth-i.railBorderXWidth}),e(i.scrollbarY,{top:i.scrollbarYTop,height:i.scrollbarYHeight-i.railBorderYWidth})}function g(t,e){function i(e){p[d]=b+v*(e[a]-g),o(t,f),T(t),e.stopPropagation(),e.preventDefault()}function r(){s(t,f),t.event.unbind(t.ownerDocument,"mousemove",i)}var l=e[0],n=e[1],a=e[2],c=e[3],h=e[4],u=e[5],d=e[6],f=e[7],p=t.element,b=null,g=null,v=null;t.event.bind(t[h],"mousedown",function(e){b=p[d],g=e[a],v=(t[n]-t[l])/(t[c]-t[u]),t.event.bind(t.ownerDocument,"mousemove",i),t.event.once(t.ownerDocument,"mouseup",r),e.stopPropagation(),e.preventDefault()})}var v="undefined"!=typeof Element&&(Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.msMatchesSelector),m={main:"ps",element:{thumb:function(t){return"ps__thumb-"+t},rail:function(t){return"ps__rail-"+t},consuming:"ps__child--consume"},state:{focus:"ps--focus",active:function(t){return"ps--active-"+t},scrolling:function(t){return"ps--scrolling-"+t}}},Y={x:null,y:null},X=function(t){this.element=t,this.handlers={}},w={isEmpty:{configurable:!0}};X.prototype.bind=function(t,e){void 0===this.handlers[t]&&(this.handlers[t]=[]),this.handlers[t].push(e),this.element.addEventListener(t,e,!1)},X.prototype.unbind=function(t,e){var i=this;this.handlers[t]=this.handlers[t].filter(function(r){return!(!e||r===e)||(i.element.removeEventListener(t,r,!1),!1)})},X.prototype.unbindAll=function(){var t=this;for(var e in t.handlers)t.unbind(e)},w.isEmpty.get=function(){var t=this;return Object.keys(this.handlers).every(function(e){return 0===t.handlers[e].length})},Object.defineProperties(X.prototype,w);var y=function(){this.eventElements=[]};y.prototype.eventElement=function(t){var e=this.eventElements.filter(function(e){return e.element===t})[0];return e||(e=new X(t),this.eventElements.push(e)),e},y.prototype.bind=function(t,e,i){this.eventElement(t).bind(e,i)},y.prototype.unbind=function(t,e,i){var r=this.eventElement(t);r.unbind(e,i),r.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(r),1)},y.prototype.unbindAll=function(){this.eventElements.forEach(function(t){return t.unbindAll()}),this.eventElements=[]},y.prototype.once=function(t,e,i){var r=this.eventElement(t),l=function(t){r.unbind(e,l),i(t)};r.bind(e,l)};var W=function(t,e,i,r,l){void 0===r&&(r=!0),void 0===l&&(l=!1);var n;if("top"===e)n=["contentHeight","containerHeight","scrollTop","y","up","down"];else{if("left"!==e)throw new Error("A proper axis should be provided");n=["contentWidth","containerWidth","scrollLeft","x","left","right"]}h(t,i,n,r,l)},L={isWebKit:"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style,supportsTouch:"undefined"!=typeof window&&("ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),supportsIePointer:"undefined"!=typeof navigator&&navigator.msMaxTouchPoints,isChrome:"undefined"!=typeof navigator&&/Chrome/i.test(navigator&&navigator.userAgent)},T=function(t){var e=t.element;t.containerWidth=e.clientWidth,t.containerHeight=e.clientHeight,t.contentWidth=e.scrollWidth,t.contentHeight=e.scrollHeight,e.contains(t.scrollbarXRail)||(n(e,m.element.rail("x")).forEach(function(t){return l(t)}),e.appendChild(t.scrollbarXRail)),e.contains(t.scrollbarYRail)||(n(e,m.element.rail("y")).forEach(function(t){return l(t)}),e.appendChild(t.scrollbarYRail)),!t.settings.suppressScrollX&&t.containerWidth+t.settings.scrollXMarginOffset<t.contentWidth?(t.scrollbarXActive=!0,t.railXWidth=t.containerWidth-t.railXMarginWidth,t.railXRatio=t.containerWidth/t.railXWidth,t.scrollbarXWidth=p(t,u(t.railXWidth*t.containerWidth/t.contentWidth)),t.scrollbarXLeft=u((t.negativeScrollAdjustment+e.scrollLeft)*(t.railXWidth-t.scrollbarXWidth)/(t.contentWidth-t.containerWidth))):t.scrollbarXActive=!1,!t.settings.suppressScrollY&&t.containerHeight+t.settings.scrollYMarginOffset<t.contentHeight?(t.scrollbarYActive=!0,t.railYHeight=t.containerHeight-t.railYMarginHeight,t.railYRatio=t.containerHeight/t.railYHeight,t.scrollbarYHeight=p(t,u(t.railYHeight*t.containerHeight/t.contentHeight)),t.scrollbarYTop=u(e.scrollTop*(t.railYHeight-t.scrollbarYHeight)/(t.contentHeight-t.containerHeight))):t.scrollbarYActive=!1,t.scrollbarXLeft>=t.railXWidth-t.scrollbarXWidth&&(t.scrollbarXLeft=t.railXWidth-t.scrollbarXWidth),t.scrollbarYTop>=t.railYHeight-t.scrollbarYHeight&&(t.scrollbarYTop=t.railYHeight-t.scrollbarYHeight),b(e,t),t.scrollbarXActive?e.classList.add(m.state.active("x")):(e.classList.remove(m.state.active("x")),t.scrollbarXWidth=0,t.scrollbarXLeft=0,e.scrollLeft=0),t.scrollbarYActive?e.classList.add(m.state.active("y")):(e.classList.remove(m.state.active("y")),t.scrollbarYHeight=0,t.scrollbarYTop=0,e.scrollTop=0)},R={"click-rail":function(t){t.event.bind(t.scrollbarY,"mousedown",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarYRail,"mousedown",function(e){var i=e.pageY-window.pageYOffset-t.scrollbarYRail.getBoundingClientRect().top>t.scrollbarYTop?1:-1;t.element.scrollTop+=i*t.containerHeight,T(t),e.stopPropagation()}),t.event.bind(t.scrollbarX,"mousedown",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarXRail,"mousedown",function(e){var i=e.pageX-window.pageXOffset-t.scrollbarXRail.getBoundingClientRect().left>t.scrollbarXLeft?1:-1;t.element.scrollLeft+=i*t.containerWidth,T(t),e.stopPropagation()})},"drag-thumb":function(t){g(t,["containerWidth","contentWidth","pageX","railXWidth","scrollbarX","scrollbarXWidth","scrollLeft","x"]),g(t,["containerHeight","contentHeight","pageY","railYHeight","scrollbarY","scrollbarYHeight","scrollTop","y"])},keyboard:function(t){function e(e,r){var l=i.scrollTop;if(0===e){if(!t.scrollbarYActive)return!1;if(0===l&&r>0||l>=t.contentHeight-t.containerHeight&&r<0)return!t.settings.wheelPropagation}var n=i.scrollLeft;if(0===r){if(!t.scrollbarXActive)return!1;if(0===n&&e<0||n>=t.contentWidth-t.containerWidth&&e>0)return!t.settings.wheelPropagation}return!0}var i=t.element,l=function(){return r(i,":hover")},n=function(){return r(t.scrollbarX,":focus")||r(t.scrollbarY,":focus")};t.event.bind(t.ownerDocument,"keydown",function(r){if(!(r.isDefaultPrevented&&r.isDefaultPrevented()||r.defaultPrevented)&&(l()||n())){var o=document.activeElement?document.activeElement:t.ownerDocument.activeElement;if(o){if("IFRAME"===o.tagName)o=o.contentDocument.activeElement;else for(;o.shadowRoot;)o=o.shadowRoot.activeElement;if(d(o))return}var s=0,a=0;switch(r.which){case 37:s=r.metaKey?-t.contentWidth:r.altKey?-t.containerWidth:-30;break;case 38:a=r.metaKey?t.contentHeight:r.altKey?t.containerHeight:30;break;case 39:s=r.metaKey?t.contentWidth:r.altKey?t.containerWidth:30;break;case 40:a=r.metaKey?-t.contentHeight:r.altKey?-t.containerHeight:-30;break;case 32:a=r.shiftKey?t.containerHeight:-t.containerHeight;break;case 33:a=t.containerHeight;break;case 34:a=-t.containerHeight;break;case 36:a=t.contentHeight;break;case 35:a=-t.contentHeight;break;default:return}t.settings.suppressScrollX&&0!==s||t.settings.suppressScrollY&&0!==a||(i.scrollTop-=a,i.scrollLeft+=s,T(t),e(s,a)&&r.preventDefault())}})},wheel:function(e){function i(t,i){var r=0===o.scrollTop,l=o.scrollTop+o.offsetHeight===o.scrollHeight,n=0===o.scrollLeft,s=o.scrollLeft+o.offsetWidth===o.offsetWidth;return!(Math.abs(i)>Math.abs(t)?r||l:n||s)||!e.settings.wheelPropagation}function r(t){var e=t.deltaX,i=-1*t.deltaY;return void 0!==e&&void 0!==i||(e=-1*t.wheelDeltaX/6,i=t.wheelDeltaY/6),t.deltaMode&&1===t.deltaMode&&(e*=10,i*=10),e!==e&&i!==i&&(e=0,i=t.wheelDelta),t.shiftKey?[-i,-e]:[e,i]}function l(e,i,r){if(!L.isWebKit&&o.querySelector("select:focus"))return!0;if(!o.contains(e))return!1;for(var l=e;l&&l!==o;){if(l.classList.contains(m.element.consuming))return!0;var n=t(l);if([n.overflow,n.overflowX,n.overflowY].join("").match(/(scroll|auto)/)){var s=l.scrollHeight-l.clientHeight;if(s>0&&!(0===l.scrollTop&&r>0||l.scrollTop===s&&r<0))return!0;var a=l.scrollLeft-l.clientWidth;if(a>0&&!(0===l.scrollLeft&&i<0||l.scrollLeft===a&&i>0))return!0}l=l.parentNode}return!1}function n(t){var n=r(t),s=n[0],a=n[1];if(!l(t.target,s,a)){var c=!1;e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(a?o.scrollTop-=a*e.settings.wheelSpeed:o.scrollTop+=s*e.settings.wheelSpeed,c=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(s?o.scrollLeft+=s*e.settings.wheelSpeed:o.scrollLeft-=a*e.settings.wheelSpeed,c=!0):(o.scrollTop-=a*e.settings.wheelSpeed,o.scrollLeft+=s*e.settings.wheelSpeed),T(e),(c=c||i(s,a))&&!t.ctrlKey&&(t.stopPropagation(),t.preventDefault())}}var o=e.element;void 0!==window.onwheel?e.event.bind(o,"wheel",n):void 0!==window.onmousewheel&&e.event.bind(o,"mousewheel",n)},touch:function(e){function i(t,i){var r=h.scrollTop,l=h.scrollLeft,n=Math.abs(t),o=Math.abs(i);if(o>n){if(i<0&&r===e.contentHeight-e.containerHeight||i>0&&0===r)return 0===window.scrollY&&i>0&&L.isChrome}else if(n>o&&(t<0&&l===e.contentWidth-e.containerWidth||t>0&&0===l))return!0;return!0}function r(t,i){h.scrollTop-=i,h.scrollLeft-=t,T(e)}function l(t){return t.targetTouches?t.targetTouches[0]:t}function n(t){return!(t.pointerType&&"pen"===t.pointerType&&0===t.buttons||(!t.targetTouches||1!==t.targetTouches.length)&&(!t.pointerType||"mouse"===t.pointerType||t.pointerType===t.MSPOINTER_TYPE_MOUSE))}function o(t){if(n(t)){var e=l(t);u.pageX=e.pageX,u.pageY=e.pageY,d=(new Date).getTime(),null!==p&&clearInterval(p)}}function s(e,i,r){if(!h.contains(e))return!1;for(var l=e;l&&l!==h;){if(l.classList.contains(m.element.consuming))return!0;var n=t(l);if([n.overflow,n.overflowX,n.overflowY].join("").match(/(scroll|auto)/)){var o=l.scrollHeight-l.clientHeight;if(o>0&&!(0===l.scrollTop&&r>0||l.scrollTop===o&&r<0))return!0;var s=l.scrollLeft-l.clientWidth;if(s>0&&!(0===l.scrollLeft&&i<0||l.scrollLeft===s&&i>0))return!0}l=l.parentNode}return!1}function a(t){if(n(t)){var e=l(t),o={pageX:e.pageX,pageY:e.pageY},a=o.pageX-u.pageX,c=o.pageY-u.pageY;if(s(t.target,a,c))return;r(a,c),u=o;var h=(new Date).getTime(),p=h-d;p>0&&(f.x=a/p,f.y=c/p,d=h),i(a,c)&&t.preventDefault()}}function c(){e.settings.swipeEasing&&(clearInterval(p),p=setInterval(function(){e.isInitialized?clearInterval(p):f.x||f.y?Math.abs(f.x)<.01&&Math.abs(f.y)<.01?clearInterval(p):(r(30*f.x,30*f.y),f.x*=.8,f.y*=.8):clearInterval(p)},10))}if(L.supportsTouch||L.supportsIePointer){var h=e.element,u={},d=0,f={},p=null;L.supportsTouch?(e.event.bind(h,"touchstart",o),e.event.bind(h,"touchmove",a),e.event.bind(h,"touchend",c)):L.supportsIePointer&&(window.PointerEvent?(e.event.bind(h,"pointerdown",o),e.event.bind(h,"pointermove",a),e.event.bind(h,"pointerup",c)):window.MSPointerEvent&&(e.event.bind(h,"MSPointerDown",o),e.event.bind(h,"MSPointerMove",a),e.event.bind(h,"MSPointerUp",c)))}}},H=function(r,l){var n=this;if(void 0===l&&(l={}),"string"==typeof r&&(r=document.querySelector(r)),!r||!r.nodeName)throw new Error("no element is specified to initialize PerfectScrollbar");this.element=r,r.classList.add(m.main),this.settings={handlers:["click-rail","drag-thumb","keyboard","wheel","touch"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!1,wheelSpeed:1};for(var o in l)n.settings[o]=l[o];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var s=function(){return r.classList.add(m.state.focus)},a=function(){return r.classList.remove(m.state.focus)};this.isRtl="rtl"===t(r).direction,this.isNegativeScroll=function(){var t=r.scrollLeft,e=null;return r.scrollLeft=-1,e=r.scrollLeft<0,r.scrollLeft=t,e}(),this.negativeScrollAdjustment=this.isNegativeScroll?r.scrollWidth-r.clientWidth:0,this.event=new y,this.ownerDocument=r.ownerDocument||document,this.scrollbarXRail=i(m.element.rail("x")),r.appendChild(this.scrollbarXRail),this.scrollbarX=i(m.element.thumb("x")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute("tabindex",0),this.event.bind(this.scrollbarX,"focus",s),this.event.bind(this.scrollbarX,"blur",a),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var c=t(this.scrollbarXRail);this.scrollbarXBottom=parseInt(c.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=u(c.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=u(c.borderLeftWidth)+u(c.borderRightWidth),e(this.scrollbarXRail,{display:"block"}),this.railXMarginWidth=u(c.marginLeft)+u(c.marginRight),e(this.scrollbarXRail,{display:""}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=i(m.element.rail("y")),r.appendChild(this.scrollbarYRail),this.scrollbarY=i(m.element.thumb("y")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute("tabindex",0),this.event.bind(this.scrollbarY,"focus",s),this.event.bind(this.scrollbarY,"blur",a),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var h=t(this.scrollbarYRail);this.scrollbarYRight=parseInt(h.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=u(h.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?f(this.scrollbarY):null,this.railBorderYWidth=u(h.borderTopWidth)+u(h.borderBottomWidth),e(this.scrollbarYRail,{display:"block"}),this.railYMarginHeight=u(h.marginTop)+u(h.marginBottom),e(this.scrollbarYRail,{display:""}),this.railYHeight=null,this.railYRatio=null,this.reach={x:r.scrollLeft<=0?"start":r.scrollLeft>=this.contentWidth-this.containerWidth?"end":null,y:r.scrollTop<=0?"start":r.scrollTop>=this.contentHeight-this.containerHeight?"end":null},this.isAlive=!0,this.settings.handlers.forEach(function(t){return R[t](n)}),this.lastScrollTop=r.scrollTop,this.lastScrollLeft=r.scrollLeft,this.event.bind(this.element,"scroll",function(t){return n.onScroll(t)}),T(this)};return H.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,e(this.scrollbarXRail,{display:"block"}),e(this.scrollbarYRail,{display:"block"}),this.railXMarginWidth=u(t(this.scrollbarXRail).marginLeft)+u(t(this.scrollbarXRail).marginRight),this.railYMarginHeight=u(t(this.scrollbarYRail).marginTop)+u(t(this.scrollbarYRail).marginBottom),e(this.scrollbarXRail,{display:"none"}),e(this.scrollbarYRail,{display:"none"}),T(this),W(this,"top",0,!1,!0),W(this,"left",0,!1,!0),e(this.scrollbarXRail,{display:""}),e(this.scrollbarYRail,{display:""}))},H.prototype.onScroll=function(t){this.isAlive&&(T(this),W(this,"top",this.element.scrollTop-this.lastScrollTop),W(this,"left",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=this.element.scrollTop,this.lastScrollLeft=this.element.scrollLeft)},H.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),l(this.scrollbarX),l(this.scrollbarY),l(this.scrollbarXRail),l(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},H.prototype.removePsClasses=function(){this.element.className=this.element.className.split(" ").filter(function(t){return!t.match(/^ps([-_].+|)$/)}).join(" ")},H});
\ No newline at end of file
diff --git a/CubeIT/js/phantomjs/delocal.js b/CubeIT/js/phantomjs/delocal.js
new file mode 100644 (file)
index 0000000..d77d69c
--- /dev/null
@@ -0,0 +1,13 @@
+var stylesheets = document.styleSheets;
+for (i in stylesheets) {
+       var stylesheet = stylesheets[i];
+       var rules = stylesheet.cssRules;
+       for (j in rules) {
+               var rule = rules[j];
+               if (rule instanceof CSSFontFaceRule) {
+                       var src = rule.style.getPropertyValue('src');
+                       var srcSansLocal = src.replace(/local\([^\)]+?\)\s*,\s*/i, '');
+                       rule.style.setProperty('src', srcSansLocal, null);
+               }
+       }
+}
\ No newline at end of file
diff --git a/CubeIT/js/phantomjs/rasterize.js b/CubeIT/js/phantomjs/rasterize.js
new file mode 100644 (file)
index 0000000..8de3192
--- /dev/null
@@ -0,0 +1,50 @@
+var page = require('webpage').create(),
+    system = require('system'),
+    address, output, size;
+
+if (system.args.length < 3 || system.args.length > 5) {
+    console.log('Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]');
+    console.log(' paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "A4", "Letter"');
+    console.log(' image (png/jpg output) examples: "1920px" entire page, window width 1920px');
+    console.log(' "800px*600px" window, clipped to 800x600');
+    phantom.exit(1);
+} else {
+    address = system.args[1];
+    output = system.args[2];
+    page.viewportSize = {width: 600, height: 600};
+    if (system.args.length > 3 && system.args[2].substr(-4) === ".pdf") {
+        size = system.args[3].split('*');
+        page.paperSize = size.length >= 2 ? {width: size[0], height: size[1], margin: {top: size[2], right: size[3], bottom: size[4], left: size[5]}}
+            : {format: system.args[3], orientation: 'portrait', margin: '1cm'};
+
+    } else if (system.args.length > 3 && system.args[3].substr(-2) === "px") {
+        size = system.args[3].split('*');
+        if (size.length >= 2) {
+            pageWidth = parseInt(size[0], 10);
+            pageHeight = parseInt(size[1], 10);
+            page.viewportSize = {width: pageWidth, height: pageHeight};
+            page.clipRect = {top: 0, left: 0, width: pageWidth, height: pageHeight};
+
+        } else {
+            console.log("size:", system.args[3]);
+            pageWidth = parseInt(system.args[3], 10);
+            pageHeight = parseInt(pageWidth * 3 / 4, 10); // it's as good an assumption as any
+            console.log("pageHeight:", pageHeight);
+            page.viewportSize = {width: pageWidth, height: pageHeight};
+        }
+    }
+    if (system.args.length > 4) {
+        page.zoomFactor = system.args[4];
+    }
+    page.open(address, function (status) {
+        if (status !== 'success') {
+            console.log('Unable to load the address!');
+            phantom.exit();
+        } else {
+            window.setTimeout(function () {
+                page.render(output);
+                phantom.exit();
+            }, 200);
+        }
+    });
+}
\ No newline at end of file
diff --git a/CubeIT/js/pie/PIE.htc b/CubeIT/js/pie/PIE.htc
new file mode 100644 (file)
index 0000000..dbcca42
--- /dev/null
@@ -0,0 +1,21 @@
+<!--
+PIE: CSS3 rendering for IE
+Version 2.0beta1
+http://css3pie.com
+Dual-licensed for use under the Apache License Version 2.0 or the General Public License (GPL) Version 2.
+-->
+<PUBLIC:COMPONENT lightWeight="true">
+<!-- saved from url=(0014)about:internet -->
+<PUBLIC:ATTACH EVENT="oncontentready" FOR="element" ONEVENT="init()" />
+<PUBLIC:ATTACH EVENT="ondocumentready" FOR="element" ONEVENT="init()" />
+<PUBLIC:ATTACH EVENT="ondetach" FOR="element" ONEVENT="cleanup()" />
+<script type="text/javascript">
+var d=element,g=d.document,j=g.documentMode||0;
+!window.PIE&&j<10&&function(){var a={},k,i,b,l,h;window.PIE={attach:function(c){a[c.uniqueID]=c},detach:function(c){delete a[c.uniqueID]}};b=g.createElement("div");b.innerHTML="<!--[if IE 6]><i></i><![endif]--\>";l=b.getElementsByTagName("i")[0];if(b=g.location.href.match(/pie-load-path=([^&]+)/))b=decodeURIComponent(b[1]);b||(b=g.documentElement.currentStyle.getAttribute((l?"":"-")+"pie-load-path"));if(!b){k=/BEHAVIOR: url\(([^\)]*PIE[^\)]*)/i;i=function(c){for(var f=c.length,e;f--;)if(e=(e=c[f].cssText.match(k))?
+e[1].substring(0,e[1].lastIndexOf("/")):i(c[f].imports))break;return e};b=i(g.styleSheets)}if(b){h=g.createElement("script");h.onreadystatechange=function(){var c=window.PIE,f=h.readyState,e;if(a&&(f==="complete"||f==="loaded"))if("version"in c){for(e in a)a.hasOwnProperty(e)&&c.attach(a[e]);a=0}};h.src=b+"/PIE_IE"+(j<9?"678":"9")+".js";(g.getElementsByTagName("head")[0]||g.body).appendChild(h)}}();function init(){if(g.media!=="print"){var a=window.PIE;a&&a.attach(d)}}
+function cleanup(){if(g.media!=="print"){var a=window.PIE;a&&a.detach(d)}d=0}d.readyState==="complete"&&init();
+
+</script>
+
+<script type="text/vbscript"></script>
+</PUBLIC:COMPONENT>
diff --git a/CubeIT/js/pie/PIE_IE678.js b/CubeIT/js/pie/PIE_IE678.js
new file mode 100644 (file)
index 0000000..e12d37d
--- /dev/null
@@ -0,0 +1,72 @@
+(function(O,H){var h=O.PIE||(O.PIE={});h.Fa=function(a){var b,d,e,c,g=arguments;b=1;for(d=g.length;b<d;b++){c=g[b];for(e in c)if(c.hasOwnProperty(e))a[e]=c[e]}return a};h.Fa(h,{z:"-pie-",qb:"Pie",Na:"pie_",uc:{TD:1,TH:1},Tb:{TABLE:1,THEAD:1,TBODY:1,TFOOT:1,TR:1,INPUT:1,TEXTAREA:1,SELECT:1,OPTION:1,IMG:1,HR:1},Zb:{A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},Hd:{submit:1,button:1,reset:1},pd:function(){}});try{H.execCommand("BackgroundImageCache",false,true)}catch(ca){}(function(){for(var a=4,b=H.createElement("div"),
+d=b.getElementsByTagName("i");b.innerHTML="<!--[if gt IE "+ ++a+"]><i></i><![endif]--\>",d[0];);h.U=a;if(a===6)h.z=h.z.replace(/^-/,"");h.qa=H.documentMode||h.U;b.innerHTML='<v:shape adj="1"/>';a=b.firstChild;a.style.behavior="url(#default#VML)";h.tc=typeof a.adj==="object"})();(function(){var a=0,b={};h.Q={pa:function(d){return d&&d._pieId||(d._pieId="_"+a++)},Ac:function(d,e,c){var g=b[d],i,j;if(g)Object.prototype.toString.call(g)==="[object Array]"?g.push([e,c]):e.call(c,g);else{j=b[d]=[[e,c]];
+i=new Image;i.onload=function(){g=b[d]={f:i.width,e:i.height};for(var f=0,k=j.length;f<k;f++)j[f][0].call(j[f][1],g);i.onload=null};i.src=d}}}})();h.nb={ge:{top:0,right:90,bottom:180,left:270},xd:function(a,b,d,e){a=e.la;e=e.ab;var c;if(a)a=a.jd();else if(e)if(e[1]){a=e[0]=="top"||e[1]=="top"?b:-b;e=e[0]=="left"||e[1]=="left"?-d:d;a=Math.atan2(e,a)*180/Math.PI}else a=this.ge[e[0]];else a=180;for(;a<0;)a+=360;a%=360;c=h.nb.Od(b/2,d/2,a,a>=180?0:b,a<90||a>270?0:d);e=c[0];c=c[1];b=b-e;d=d-c;return{la:a,
+qd:e,rd:c,ae:b,be:d,Jd:h.nb.ld(b,d,e,c)}},Od:function(a,b,d,e,c){if(d===0||d===180)return[a,c];else if(d===90||d===270)return[e,b];else{d=Math.tan((d-90)*Math.PI/180);a=d*a-b;b=-1/d;e=b*e-c;c=b-d;return[(e-a)/c,(d*e-b*a)/c]}},ld:function(a,b,d,e){a=d-a;b=e-b;return Math.abs(a===0?b:b===0?a:Math.sqrt(a*a+b*b))}};h.ja=function(){this.Eb=[];this.hc={}};h.ja.prototype={ca:function(a){var b=h.Q.pa(a),d=this.hc,e=this.Eb;if(!(b in d)){d[b]=e.length;e.push(a)}},Ka:function(a){a=h.Q.pa(a);var b=this.hc;if(a&&
+a in b){delete this.Eb[b[a]];delete b[a]}},Da:function(){for(var a=this.Eb,b=a.length;b--;)a[b]&&a[b]()}};h.Pa=new h.ja;h.Pa.Ud=function(){var a=this,b;if(!a.Vd){b=H.documentElement.currentStyle.getAttribute(h.z+"poll-interval")||250;(function d(){a.Da();setTimeout(d,b)})();a.Vd=1}};(function(){function a(){h.J.Da();O.detachEvent("onunload",a);O.PIE=null}h.J=new h.ja;O.attachEvent("onunload",a);h.J.za=function(b,d,e){b.attachEvent(d,e);this.ca(function(){b.detachEvent(d,e)})}})();h.Sa=new h.ja;h.J.za(O,
+"onresize",function(){h.Sa.Da()});(function(){function a(){h.pb.Da()}h.pb=new h.ja;h.J.za(O,"onscroll",a);h.Sa.ca(a)})();(function(){function a(){d=h.mb.kd()}function b(){if(d){for(var e=0,c=d.length;e<c;e++)h.attach(d[e]);d=0}}var d;h.J.za(O,"onbeforeprint",a);h.J.za(O,"onafterprint",b)})();h.ob=new h.ja;h.J.za(H,"onmouseup",function(){h.ob.Da()});h.Qa=function(){function a(f){this.ha=f}var b=H.createElement("length-calc"),d=H.body||H.documentElement,e=b.style,c={},g=["mm","cm","in","pt","pc"],i=
+g.length,j={};e.position="absolute";e.top=e.left="-9999px";for(d.appendChild(b);i--;){e.width="100"+g[i];c[g[i]]=b.offsetWidth/100}d.removeChild(b);e.width="1em";a.prototype={Fb:/(px|em|ex|mm|cm|in|pt|pc|%)$/,dc:function(){var f=this.Md;if(f===void 0)f=this.Md=parseFloat(this.ha);return f},Ab:function(){var f=this.he;if(!f)f=this.he=(f=this.ha.match(this.Fb))&&f[0]||"px";return f},a:function(f,k){var l=this.dc(),m=this.Ab();switch(m){case "px":return l;case "%":return l*(typeof k==="function"?k():
+k)/100;case "em":return l*this.yb(f);case "ex":return l*this.yb(f)/2;default:return l*c[m]}},yb:function(f){var k=f.currentStyle.fontSize,l,m;if(k.indexOf("px")>0)return parseFloat(k);else if(f.tagName in h.Tb){m=this;l=f.parentNode;return h.m(k).a(l,function(){return m.yb(l)})}else{f.appendChild(b);k=b.offsetWidth;b.parentNode===f&&f.removeChild(b);return k}}};a.gb=function(f){return f/c.pt};h.m=function(f){return j[f]||(j[f]=new a(f))};return a}();h.kb=function(){function a(c){this.ga=c}var b=h.m("50%"),
+d={top:1,center:1,bottom:1},e={left:1,center:1,right:1};a.prototype={Bd:function(){if(!this.Rb){var c=this.ga,g=c.length,i=h.q,j=i.ya,f=h.m("0");j=j.W;f=["left",f,"top",f];if(g===1){c.push(new i.rb(j,"center"));g++}if(g===2){j&(c[0].h|c[1].h)&&c[0].c in d&&c[1].c in e&&c.push(c.shift());if(c[0].h&j)if(c[0].c==="center")f[1]=b;else f[0]=c[0].c;else if(c[0].G())f[1]=h.m(c[0].c);if(c[1].h&j)if(c[1].c==="center")f[3]=b;else f[2]=c[1].c;else if(c[1].G())f[3]=h.m(c[1].c)}this.Rb=f}return this.Rb},coords:function(c,
+g,i){var j=this.Bd(),f=j[1].a(c,g);c=j[3].a(c,i);return{x:j[0]==="right"?g-f:f,y:j[2]==="bottom"?i-c:c}}};return a}();h.Ma=function(){function a(b,d){this.f=b;this.e=d}a.prototype={a:function(b,d,e,c,g){var i=this.f,j=this.e,f=d/e;c=c/g;if(i==="contain"){i=c>f?d:e*c;j=c>f?d/c:e}else if(i==="cover"){i=c<f?d:e*c;j=c<f?d/c:e}else if(i==="auto"){j=j==="auto"?g:j.a(b,e);i=j*c}else{i=i.a(b,d);j=j==="auto"?i/c:j.a(b,e)}return{f:i,e:j}}};a.Jc=new a("auto","auto");return a}();h.Cc=function(){function a(b){this.ha=
+b}a.prototype={Fb:/[a-z]+$/i,Ab:function(){return this.Wc||(this.Wc=this.ha.match(this.Fb)[0].toLowerCase())},jd:function(){var b=this.Rc,d;if(b===undefined){b=this.Ab();d=parseFloat(this.ha,10);b=this.Rc=b==="deg"?d:b==="rad"?d/Math.PI*180:b==="grad"?d/400*360:b==="turn"?d*360:0}return b}};return a}();h.Ic=function(){function a(f,k,l){if(l<0)l+=1;else if(l>1)l-=1;return 255*(6*l<1?f+(k-f)*l*6:2*l<1?k:3*l<2?f+(k-f)*(2/3-l)*6:f)}function b(f){this.ha=f}var d={};b.Td=/\s*rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(\d+|\d*\.\d+))?\s*\)\s*/;
+b.Fd=/\s*hsla?\(\s*(\d*\.?\d+)\s*,\s*(\d{1,3})%\s*,\s*(\d{1,3})%\s*(,\s*(\d+|\d*\.\d+))?\s*\)\s*/;b.db={};for(var e="black|0|navy|3k|darkblue|b|mediumblue|1u|blue|1e|darkgreen|jk1|green|5j4|teal|3k|darkcyan|26j|deepskyblue|ad0|darkturquoise|2xe|mediumspringgreen|8nd|lime|va|springgreen|3j|aqua|3k|cyan|0|midnightblue|xunl|dodgerblue|7ogf|lightseagreen|2zsb|forestgreen|2lbs|seagreen|guut|darkslategray|12pk|limegreen|4wkj|mediumseagreen|dwlb|turquoise|5v8f|royalblue|r2p|steelblue|75qr|darkslateblue|2fh3|mediumturquoise|ta9|indigo|32d2|darkolivegreen|emr1|cadetblue|ebu9|cornflowerblue|6z4d|mediumaquamarine|3459|dimgray|3nwf|slateblue|1bok|olivedrab|1opi|slategray|6y5p|lightslategray|9vk9|mediumslateblue|5g0l|lawngreen|27ma|chartreuse|48ao|aquamarine|5w|maroon|18|purple|3k|olive|p6o|gray|3k|lightslateblue|5j7j|skyblue|4q98|lightskyblue|f|blueviolet|3bhk|darkred|15we|darkmagenta|3v|saddlebrown|djc|darkseagreen|69vg|lightgreen|1og1|mediumpurple|3ivc|darkviolet|sfv|palegreen|6zt1|darkorchid|awk|yellowgreen|292e|sienna|7r3v|brown|6sxp|darkgray|6bgf|lightblue|5vlp|greenyellow|7k9|paleturquoise|2pxb|lightsteelblue|169c|powderblue|5jc|firebrick|1rgc|darkgoldenrod|8z55|mediumorchid|2jm0|rosybrown|34jg|darkkhaki|1mfw|silver|49jp|mediumvioletred|8w5h|indianred|8tef|peru|82r|violetred|3ntd|feldspar|212d|chocolate|16eh|tan|ewe|lightgrey|1kqv|palevioletred|6h8g|metle|fnp|orchid|2dj2|goldenrod|abu|crimson|20ik|gainsboro|13mo|plum|12pt|burlywood|1j8q|lightcyan|3794|lavender|8agr|darksalmon|3rsw|violet|6wz8|palegoldenrod|k3g|lightcoral|28k6|khaki|k5o|aliceblue|3n7|honeydew|1dd|azure|f|sandybrown|5469|wheat|1q37|beige|4kp|whitesmoke|p|mintcream|1z9|ghostwhite|46bp|salmon|25bn|antiquewhite|l7p|linen|zz|lightgoldenrodyellow|1yk|oldlace|46qc|red|1gka|magenta|73|fuchsia|0|deeppink|3v8|orangered|9kd|tomato|5zb|hotpink|19p|coral|49o|darkorange|2i8|lightsalmon|41m|orange|w6|lightpink|3i9|pink|1ze|gold|4dx|peachpuff|qh|navajowhite|s4|moccasin|16w|bisque|f|mistyrose|t|blanchedalmond|1d8|papayawhip|so|lavenderblush|80|seashell|zd|cornsilk|ku|lemonchiffon|dt|floralwhite|z|snow|a|yellow|sm|lightyellow|68|ivory|g|white|f".split("|"),
+c=0,g=e.length,i=0,j;c<g;c+=2){i+=parseInt(e[c+1],36);j=i.toString(16);b.db[e[c]]="#000000".slice(0,-j.length)+j}b.prototype={parse:function(){if(!this.tb){var f=this.ha,k;if(k=f.match(b.Td)){f=this.rc(+k[1],+k[2],+k[3]);k=k[5]?+k[5]:1}else if(k=f.match(b.Fd)){var l=k[1],m=k[2],o=k[3],s,q;f=Math.round;m/=100;o/=100;if(m){m=o<=0.5?o*(m+1):o+m-o*m;s=o*2-m;l=l%360/360;o=a(s,m,l+1/3);q=a(s,m,l);l=a(s,m,l-1/3)}else o=q=l=o*255;f={Rd:f(o),td:f(q),Zc:f(l)};f=this.rc(f.Rd,f.td,f.Zc);k=k[5]?+k[5]:1}else{if(b.db.hasOwnProperty(k=
+f.toLowerCase()))f=b.db[k];k=f==="transparent"?0:1}this.tb=f;this.Qc=k}},rc:function(f,k,l){return"#"+(f<16?"0":"")+f.toString(16)+(k<16?"0":"")+k.toString(16)+(l<16?"0":"")+l.toString(16)},M:function(f){this.parse();return this.tb==="currentColor"?h.aa(f.currentStyle.color).M(f):this.tb},Y:function(){this.parse();return this.Qc}};h.aa=function(f){return d[f]||(d[f]=new b(f))};return b}();h.q=function(){function a(d){this.$a=d;this.ch=0;this.ga=[];this.Ja=0}var b=a.ya={La:1,Lb:2,u:4,Kc:8,Mb:16,W:32,
+I:64,wa:128,xa:256,Ta:512,Nc:1024,URL:2048};a.rb=function(d,e){this.h=d;this.c=e};a.rb.prototype={Ea:function(){return this.h&b.I||this.h&b.wa&&this.c==="0"},G:function(){return this.Ea()||this.h&b.Ta}};a.prototype={je:/\s/,Nd:/^[\+\-]?(\d*\.)?\d+/,url:/^url\(\s*("([^"]*)"|'([^']*)'|([!#$%&*-~]*))\s*\)/i,gc:/^\-?[_a-z][\w-]*/i,ce:/^("([^"]*)"|'([^']*)')/,Dd:/^#([\da-f]{6}|[\da-f]{3})/i,ie:{px:b.I,em:b.I,ex:b.I,mm:b.I,cm:b.I,"in":b.I,pt:b.I,pc:b.I,deg:b.La,rad:b.La,grad:b.La},cd:{rgb:1,rgba:1,hsl:1,
+hsla:1},next:function(d){function e(o,s){o=new a.rb(o,s);if(!d){k.ga.push(o);k.Ja++}return o}function c(){k.Ja++;return null}var g,i,j,f,k=this;if(this.Ja<this.ga.length)return this.ga[this.Ja++];for(;this.je.test(this.$a.charAt(this.ch));)this.ch++;if(this.ch>=this.$a.length)return c();i=this.ch;g=this.$a.substring(this.ch);j=g.charAt(0);switch(j){case "#":if(f=g.match(this.Dd)){this.ch+=f[0].length;return e(b.u,f[0])}break;case '"':case "'":if(f=g.match(this.ce)){this.ch+=f[0].length;return e(b.Nc,
+f[2]||f[3]||"")}break;case "/":case ",":this.ch++;return e(b.xa,j);case "u":if(f=g.match(this.url)){this.ch+=f[0].length;return e(b.URL,f[2]||f[3]||f[4]||"")}}if(f=g.match(this.Nd)){j=f[0];this.ch+=j.length;if(g.charAt(j.length)==="%"){this.ch++;return e(b.Ta,j+"%")}if(f=g.substring(j.length).match(this.gc)){j+=f[0];this.ch+=f[0].length;return e(this.ie[f[0].toLowerCase()]||b.Kc,j)}return e(b.wa,j)}if(f=g.match(this.gc)){j=f[0];this.ch+=j.length;if(j.toLowerCase()in h.Ic.db||j==="currentColor"||j===
+"transparent")return e(b.u,j);if(g.charAt(j.length)==="("){this.ch++;if(j.toLowerCase()in this.cd){g=function(o){return o&&o.h&b.wa};f=function(o){return o&&o.h&(b.wa|b.Ta)};var l=function(o,s){return o&&o.c===s},m=function(){return k.next(1)};if((j.charAt(0)==="r"?f(m()):g(m()))&&l(m(),",")&&f(m())&&l(m(),",")&&f(m())&&(j==="rgb"||j==="hsa"||l(m(),",")&&g(m()))&&l(m(),")"))return e(b.u,this.$a.substring(i,this.ch));return c()}return e(b.Mb,j)}return e(b.W,j)}this.ch++;return e(b.Lb,j)},C:function(){return this.ga[this.Ja-- -
+2]},all:function(){for(;this.next(););return this.ga},va:function(d,e){for(var c=[],g,i;g=this.next();){if(d(g)){i=true;this.C();break}c.push(g)}return e&&!i?null:c}};return a}();h.Kb=function(a){this.d=a};h.Kb.prototype={X:0,oc:function(){var a=this.ub,b;return!a||(b=this.n())&&(a.x!==b.x||a.y!==b.y)},Yd:function(){var a=this.ub,b;return!a||(b=this.n())&&(a.f!==b.f||a.e!==b.e)},cc:function(){var a=this.d,b=a.getBoundingClientRect(),d=h.qa===9,e=h.U===7,c=b.right-b.left;return{x:b.left,y:b.top,f:d||
+e?a.offsetWidth:c,e:d||e?a.offsetHeight:b.bottom-b.top,jc:e&&c?a.offsetWidth/c:1}},n:function(){return this.X?this.Va||(this.Va=this.cc()):this.cc()},Cd:function(){return!!this.ub},cb:function(){++this.X},ib:function(){if(!--this.X){if(this.Va)this.ub=this.Va;this.Va=null}}};(function(){function a(b){var d=h.Q.pa(b);return function(){if(this.X){var e=this.Pb||(this.Pb={});return d in e?e[d]:(e[d]=b.call(this))}else return b.call(this)}}h.p={X:0,ba:function(b){function d(e){this.d=e;this.Ob=this.T()}
+h.Fa(d.prototype,h.p,b);d.Vc={};return d},i:function(){var b=this.T(),d=this.constructor.Vc;return b?b in d?d[b]:(d[b]=this.ea(b)):null},T:a(function(){var b=this.d,d=this.constructor,e=b.style;b=b.currentStyle;var c=this.Aa,g=this.Ia,i=d.Tc||(d.Tc=h.z+c);d=d.Uc||(d.Uc=h.qb+g.charAt(0).toUpperCase()+g.substring(1));return e[d]||b.getAttribute(i)||e[g]||b.getAttribute(c)}),j:a(function(){return!!this.i()}),L:a(function(){var b=this.T(),d=b!==this.Ob;this.Ob=b;return d}),oa:a,cb:function(){++this.X},
+ib:function(){--this.X||delete this.Pb}}})();h.Hb=h.p.ba({Aa:h.z+"background",Ia:h.qb+"Background",Yc:{scroll:1,fixed:1,local:1},hb:{"repeat-x":1,"repeat-y":1,repeat:1,"no-repeat":1},nc:{"padding-box":1,"border-box":1,"content-box":1},Qd:{top:1,right:1,bottom:1,left:1,center:1},Zd:{contain:1,cover:1},fe:{top:1,bottom:1},Kd:{left:1,right:1},fb:{Oa:"backgroundClip",u:"backgroundColor",ia:"backgroundImage",Ra:"backgroundOrigin",P:"backgroundPosition",ka:"backgroundRepeat",Ua:"backgroundSize"},ea:function(a){function b(r){return r&&
+(r.G()&&h.m(r.c)||r.c==="auto"&&"auto")}var d=this.d.currentStyle,e,c,g,i=h.q.ya,j=i.xa,f=i.W,k=i.u,l,m,o=0,s=this.Qd,q,t,n,u,p={R:[]};if(this.xb()){e=new h.q(a);for(g={};c=e.next();){l=c.h;m=c.c;if(!g.V&&l&i.Mb&&m==="linear-gradient"){q={ua:[],V:m};for(t={};c=e.next();){l=c.h;m=c.c;if(l&i.Lb&&m===")"){t.color&&q.ua.push(t);q.ua.length>1&&h.Fa(g,q);break}if(l&k){if(q.la||q.ab){c=e.C();if(c.h!==j)break;e.next()}t={color:h.aa(m)};c=e.next();if(c.G())t.lc=h.m(c.c);else e.C()}else if(l&i.La&&!q.la&&!q.ab&&
+!t.color&&!q.ua.length)q.la=new h.Cc(c.c);else if(l&i.W&&m==="to"&&!q.ab&&!q.la&&!t.color&&!q.ua.length){n=this.fe;u=this.Kd;c=e.va(function(r){return!(r&&r.h&i.W&&(r.c in n||r.c in u))});l=c.length;c=[c[0]&&c[0].c,c[1]&&c[1].c];if(l<1||l>2||l>1&&(c[0]in n&&c[1]in n||c[0]in u&&c[1]in u))break;q.ab=c}else if(l&j&&m===","){if(t.color){q.ua.push(t);t={}}}else break}}else if(!g.V&&l&i.URL){g.Cb=m;g.V="image"}else if((c&&c.G()||c.h&f&&c.c in s)&&!g.ma){e.C();g.ma=new h.kb(e.va(function(r){return!(r&&r.G()||
+r.h&f&&r.c in s)},false))}else if(l&f)if(m in this.hb&&!g.bb)g.bb=m;else if(m in this.nc&&!g.Ya){g.Ya=m;if((c=e.next())&&c.h&f&&c.c in this.nc)g.Xa=c.c;else{g.Xa=m;e.C()}}else if(m in this.Yc&&!g.$c)g.$c=m;else return null;else if(l&k&&!p.color)p.color=h.aa(m);else if(l&j&&m==="/"&&!g.Za&&g.ma){c=e.next();if(c.h&f&&c.c in this.Zd)g.Za=new h.Ma(c.c);else if(q=b(c)){t=b(e.next());if(!t){t=q;e.C()}g.Za=new h.Ma(q,t)}else return null}else if(l&j&&m===","&&g.V){g.mc=a.substring(o,e.ch-1);o=e.ch;p.R.push(g);
+g={}}else return null}if(g.V){g.mc=a.substring(o);p.R.push(g)}p.bd=g.Xa}else this.yc(h.qa<9?function(){var r=this.fb,v=d[r.P+"X"],C=d[r.P+"Y"],y=d[r.ia],B=d[r.u];if(B!=="transparent")p.color=h.aa(B);if(y!=="none")p.R=[{V:"image",Cb:(new h.q(y)).next().c,bb:d[r.ka],ma:new h.kb((new h.q(v+" "+C)).all())}]}:function(){var r=this.fb,v=/\s*,\s*/,C=d[r.ia].split(v),y=d[r.u],B,F,G,K,J,w;if(y!=="transparent")p.color=h.aa(y);if((K=C.length)&&C[0]!=="none"){y=d[r.ka].split(v);B=d[r.P].split(v);F=d[r.Ra].split(v);
+G=d[r.Oa].split(v);r=d[r.Ua].split(v);p.R=[];for(v=0;v<K;v++)if((J=C[v])&&J!=="none"){w=r[v].split(" ");p.R.push({mc:J+" "+y[v]+" "+B[v]+" / "+r[v]+" "+F[v]+" "+G[v],V:"image",Cb:(new h.q(J)).next().c,bb:y[v],ma:new h.kb((new h.q(B[v])).all()),Ya:F[v],Xa:G[v],Za:new h.Ma(w[0],w[1])})}}});return p.color||p.R[0]?p:null},yc:function(a){var b=h.qa>8,d=this.fb,e=this.d.runtimeStyle,c=e[d.ia],g=e[d.u],i=e[d.ka],j,f,k,l;if(c)e[d.ia]="";if(g)e[d.u]="";if(i)e[d.ka]="";if(b){j=e[d.Oa];f=e[d.Ra];l=e[d.P];k=
+e[d.Ua];if(j)e[d.Oa]="";if(f)e[d.Ra]="";if(l)e[d.P]="";if(k)e[d.Ua]=""}a=a.call(this);if(c)e[d.ia]=c;if(g)e[d.u]=g;if(i)e[d.ka]=i;if(b){if(j)e[d.Oa]=j;if(f)e[d.Ra]=f;if(l)e[d.P]=l;if(k)e[d.Ua]=k}return a},T:h.p.oa(function(){return this.xb()||this.yc(function(){var a=this.d.currentStyle,b=this.fb;return a[b.u]+" "+a[b.ia]+" "+a[b.ka]+" "+a[b.P+"X"]+" "+a[b.P+"Y"]})}),xb:h.p.oa(function(){var a=this.d;return a.style[this.Ia]||a.currentStyle.getAttribute(this.Aa)}),ud:function(a,b,d,e){var c=this.d,
+g=b.n();b=g.f;g=g.e;if(a!=="border-box")if((d=d.i())&&(d=d.O)){b-=d.l.a(c)+d.l.a(c);g-=d.t.a(c)+d.b.a(c)}if(a==="content-box")if(a=e.i()){b-=a.l.a(c)+a.l.a(c);g-=a.t.a(c)+a.b.a(c)}return{f:b,e:g}},ic:function(){var a=0;if(h.U<7){a=this.d;a=""+(a.style[h.qb+"PngFix"]||a.currentStyle.getAttribute(h.z+"png-fix"))==="true"}return a},j:h.p.oa(function(){return(this.xb()||this.ic())&&!!this.i()})});h.Jb=h.p.ba({sc:["Top","Right","Bottom","Left"],Ld:{thin:"1px",medium:"3px",thick:"5px"},ea:function(){var a=
+{},b={},d={},e=false,c=true,g=true,i=true;this.zc(function(){for(var j=this.d.currentStyle,f=0,k,l,m,o,s,q,t;f<4;f++){m=this.sc[f];t=m.charAt(0).toLowerCase();k=b[t]=j["border"+m+"Style"];l=j["border"+m+"Color"];m=j["border"+m+"Width"];if(f>0){if(k!==o)g=false;if(l!==s)c=false;if(m!==q)i=false}o=k;s=l;q=m;d[t]=h.aa(l);m=a[t]=h.m(b[t]==="none"?"0":this.Ld[m]||m);if(m.a(this.d)>0)e=true}});return e?{O:a,de:b,dd:d,qe:i,ed:c,ee:g}:null},T:h.p.oa(function(){var a=this.d,b=a.currentStyle,d;a.tagName in
+h.uc&&a.offsetParent.currentStyle.borderCollapse==="collapse"||this.zc(function(){d=b.borderWidth+"|"+b.borderStyle+"|"+b.borderColor});return d}),zc:function(a){var b=this.d.runtimeStyle,d=b.borderWidth,e=b.borderColor;if(d)b.borderWidth="";if(e)b.borderColor="";a=a.call(this);if(d)b.borderWidth=d;if(e)b.borderColor=e;return a}});(function(){h.lb=h.p.ba({Aa:"border-radius",Ia:"borderRadius",ea:function(b){var d=null,e,c,g,i,j=false;if(b){c=new h.q(b);var f=function(){for(var k=[],l;(g=c.next())&&
+g.G();){i=h.m(g.c);l=i.dc();if(l<0)return null;if(l>0)j=true;k.push(i)}return k.length>0&&k.length<5?{tl:k[0],tr:k[1]||k[0],br:k[2]||k[0],bl:k[3]||k[1]||k[0]}:null};if(b=f()){if(g){if(g.h&h.q.ya.xa&&g.c==="/")e=f()}else e=b;if(j&&b&&e)d={x:b,y:e}}}return d}});var a=h.m("0");a={tl:a,tr:a,br:a,bl:a};h.lb.Bc={x:a,y:a}})();h.Ib=h.p.ba({Aa:"border-image",Ia:"borderImage",hb:{stretch:1,round:1,repeat:1,space:1},ea:function(a){var b=null,d,e,c,g,i,j,f=0,k=h.q.ya,l=k.W,m=k.wa,o=k.Ta;if(a){d=new h.q(a);b=
+{};for(var s=function(n){return n&&n.h&k.xa&&n.c==="/"},q=function(n){return n&&n.h&l&&n.c==="fill"},t=function(){g=d.va(function(n){return!(n.h&(m|o))});if(q(d.next())&&!b.fill)b.fill=true;else d.C();if(s(d.next())){f++;i=d.va(function(n){return!n.G()&&!(n.h&l&&n.c==="auto")});if(s(d.next())){f++;j=d.va(function(n){return!n.Ea()})}}else d.C()};a=d.next();){e=a.h;c=a.c;if(e&(m|o)&&!g){d.C();t()}else if(q(a)&&!b.fill){b.fill=true;t()}else if(e&l&&this.hb[c]&&!b.repeat){b.repeat={e:c};if(a=d.next())if(a.h&
+l&&this.hb[a.c])b.repeat.wc=a.c;else d.C()}else if(e&k.URL&&!b.src)b.src=c;else return null}if(!b.src||!g||g.length<1||g.length>4||i&&i.length>4||f===1&&i.length<1||j&&j.length>4||f===2&&j.length<1)return null;if(!b.repeat)b.repeat={e:"stretch"};if(!b.repeat.wc)b.repeat.wc=b.repeat.e;a=function(n,u){return{t:u(n[0]),r:u(n[1]||n[0]),b:u(n[2]||n[0]),l:u(n[3]||n[1]||n[0])}};b.slice=a(g,function(n){return h.m(n.h&m?n.c+"px":n.c)});if(i&&i[0])b.O=a(i,function(n){return n.G()?h.m(n.c):n.c});if(j&&j[0])b.Ga=
+a(j,function(n){return n.Ea()?h.m(n.c):n.c})}return b}});h.Hc=h.p.ba({Aa:"box-shadow",Ia:"boxShadow",ea:function(a){var b,d=h.m,e=h.q.ya,c;if(a){c=new h.q(a);b={Ga:[],Db:[]};for(a=function(){for(var g,i,j,f,k,l;g=c.next();){j=g.c;i=g.h;if(i&e.xa&&j===",")break;else if(g.Ea()&&!k){c.C();k=c.va(function(m){return!m.Ea()})}else if(i&e.u&&!f)f=j;else if(i&e.W&&j==="inset"&&!l)l=true;else return false}g=k&&k.length;if(g>1&&g<5){(l?b.Db:b.Ga).push({ke:d(k[0].c),le:d(k[1].c),blur:d(k[2]?k[2].c:"0"),$d:d(k[3]?
+k[3].c:"0"),color:h.aa(f||"currentColor")});return true}return false};a(););}return b&&(b.Db.length||b.Ga.length)?b:null}});h.Nb=h.p.ba({ea:function(a){a=new h.q(a);for(var b=[],d;(d=a.next())&&d.G();)b.push(h.m(d.c));return b.length>0&&b.length<5?{t:b[0],r:b[1]||b[0],b:b[2]||b[0],l:b[3]||b[1]||b[0]}:null},T:h.p.oa(function(){var a=this.d,b=a.runtimeStyle,d=b.padding;if(d)b.padding="";a=a.currentStyle.padding;if(d)b.padding=d;return a})});h.Oc=h.p.ba({T:h.p.oa(function(){var a=this.d,b=a.runtimeStyle,
+d=a.currentStyle;a=b.visibility;b.visibility="";d=d.visibility+"|"+d.display;b.visibility=a;return d}),ea:function(){var a=this.T().split("|");return{xc:a[0]!=="hidden",Vb:a[1]!=="none"}},j:function(){return false}});h.Pc=function(){function a(c){return function(){var g=arguments,i,j=g.length,f,k,l;f=this[d+c]||(this[d+c]={});for(i=0;i<j;i+=2)f[g[i]]=g[i+1];if(f=this.B()){if(c)f=f[c];for(i=0;i<j;i+=2){k=g[i];if(l=e[k])l.call(this,f,k,g[i+1]);else f[k]=g[i+1]}}}}function b(c,g){this.Xb="_pie_"+(c||
+"shape")+h.Q.pa(this);this.eb=g||0}var d="_attrs_",e={colors:function(c,g,i){if(c[g])c[g].value=i;else c[g]=i},size:function(c,g,i){if(i){c[g].x=1;c[g]=i}else delete c[g]},"o:opacity2":function(c,g,i){if(i!==this.Id){this.B().insertAdjacentHTML("afterEnd",this.zb());this.k();this.Id=i}}};(function c(){try{H.namespaces.add("pievml","urn:schemas-microsoft-com:vml","#default#VML")}catch(g){setTimeout(c,1)}})();b.prototype={Sb:"behavior:url(#default#VML);",hd:"position:absolute;top:0px;left:0px;",gd:'coordorigin="1,1" stroked="false" ',
+tagName:"shape",kc:0,B:function(){return this.kc?this.Qb||(this.Qb=H.getElementById(this.Xb)):null},fa:a(""),Ha:a("style"),w:a("fill"),ta:function(c,g){this.Ha("width",c+"px","height",g+"px");this.fa("coordsize",c*2+","+g*2)},Ad:function(){var c=this[d+"style"]||{},g=[],i;for(i in c)c.hasOwnProperty(i)&&g.push(i+":"+c[i]);return this.Sb+this.hd+g.join(";")},zb:function(){function c(m){if(m)for(var o in m)m.hasOwnProperty(o)&&i.push(" "+o+'="'+m[o]+'"')}function g(m){var o=j[d+m];if(o){i.push(k+m);
+c(o);i.push(l)}}var i,j=this,f=j.tagName,k="<pievml:",l=' style="'+j.Sb+'" />';j.kc=1;i=[k,f,' id="',j.Xb,'" style="',j.Ad(),'" ',j.gd];c(j[d]);i.push(">");g("fill");i.push("</pievml:"+f+">");return i.join("")},k:function(){var c=this.B(),g=c&&c.parentNode;if(g){g.removeChild(c);delete this.Qb}}};return b}();h.v={sa:function(a){function b(d,e,c,g){this.d=d;this.o=e;this.g=c;this.parent=g}h.Fa(b.prototype,h.v,a);return b},ra:function(){return false},qc:h.pd,Gb:function(){this.j()?this.Ca():this.k()},
+Bb:function(){this.d.runtimeStyle.borderColor="transparent"},k:function(){}};h.Fa(h.v,{B:function(a,b){var d=this.wb||(this.wb={}),e=d[a];if(!e){e=d[a]=new h.Pc(a,b);this.parent.sd(e)}return e},Ba:function(a){var b=this.wb,d=b&&b[a];if(d){d.k();this.parent.Sd(d);delete b[a]}return!!d},zd:function(a){var b=this.d,d=this.o.n(),e=d.f,c=d.e,g,i,j,f,k,l;d=a.x.tl.a(b,e);g=a.y.tl.a(b,c);i=a.x.tr.a(b,e);j=a.y.tr.a(b,c);f=a.x.br.a(b,e);k=a.y.br.a(b,c);l=a.x.bl.a(b,e);a=a.y.bl.a(b,c);e=Math.min(e/(d+i),c/(j+
+k),e/(l+f),c/(g+a));if(e<1){d*=e;g*=e;i*=e;j*=e;f*=e;k*=e;l*=e;a*=e}return{x:{tl:d,tr:i,br:f,bl:l},y:{tl:g,tr:j,br:k,bl:a}}},Z:function(a,b,d,e,c,g){a=this.$(a,b,d,e,c,g);return"m"+a[0]+","+a[1]+"qy"+a[2]+","+a[3]+"l"+a[4]+","+a[5]+"qx"+a[6]+","+a[7]+"l"+a[8]+","+a[9]+"qy"+a[10]+","+a[11]+"l"+a[12]+","+a[13]+"qx"+a[14]+","+a[15]+"x"},$:function(a,b,d,e,c,g){var i=this.o.n(),j=i.f*c,f=i.e*c,k=Math;i=k.floor;var l=k.ceil,m=k.max;k=k.min;a*=c;b*=c;d*=c;e*=c;g||(g=this.g.F.i());if(g){g=this.zd(g);var o=
+g.x.tl*c,s=g.y.tl*c,q=g.x.tr*c,t=g.y.tr*c,n=g.x.br*c,u=g.y.br*c,p=g.x.bl*c;c=g.y.bl*c;e=[i(e),i(k(m(s,a),f-d)),i(k(m(o,e),j-b)),i(a),l(m(e,j-m(q,b))),i(a),l(j-b),i(k(m(t,a),f-d)),l(j-b),l(m(a,f-m(u,d))),l(m(e,j-m(n,b))),l(f-d),i(k(m(p,e),j-b)),l(f-d),i(e),l(m(a,f-m(c,d)))]}else{a=i(a);b=l(j-b);d=l(f-d);e=i(e);e=[e,a,e,a,b,a,b,a,b,d,b,d,e,d,e,d]}return e},Bb:function(){var a=this.d,b=a.currentStyle,d=a.runtimeStyle,e=a.tagName,c=h.U===6,g;if(c&&(e in h.Tb||e==="FIELDSET")||e==="BUTTON"||e==="INPUT"&&
+a.type in h.Hd){d.borderWidth="";e=this.g.s.sc;for(g=e.length;g--;){c=e[g];d["padding"+c]="";d["padding"+c]=h.m(b["padding"+c]).a(a)+h.m(b["border"+c+"Width"]).a(a)+(h.U!==8&&g%2?1:0)}d.borderWidth=0}else if(c){if(a.childNodes.length!==1||a.firstChild.tagName!=="ie6-mask"){b=H.createElement("ie6-mask");e=b.style;e.visibility="visible";for(e.zoom=1;e=a.firstChild;)b.appendChild(e);a.appendChild(b);d.visibility="hidden"}}else d.borderColor="transparent"},pe:function(){},k:function(){var a=this.wb,b;
+if(a)for(b in a)a.hasOwnProperty(b)&&this.Ba(b)}});h.Mc=h.v.sa({j:function(){var a=this.ad;for(var b in a)if(a.hasOwnProperty(b)&&a[b].j())return true;return false},ac:function(){var a=this.ec(),b=a,d;a=a.currentStyle;var e=a.position,c=0,g=0;g=this.o.n();var i=this.g.jb.i(),j=g.jc;if(e==="fixed"&&h.U>6){c=g.x*j;g=g.y*j;b=e}else{do b=b.offsetParent;while(b&&b.currentStyle.position==="static");if(b){d=b.getBoundingClientRect();b=b.currentStyle;c=(g.x-d.left)*j-(parseFloat(b.borderLeftWidth)||0);g=
+(g.y-d.top)*j-(parseFloat(b.borderTopWidth)||0)}else{b=H.documentElement;c=(g.x+b.scrollLeft-b.clientLeft)*j;g=(g.y+b.scrollTop-b.clientTop)*j}b="absolute"}return"direction:ltr;position:absolute;behavior:none !important;position:"+b+";left:"+c+"px;top:"+g+"px;z-index:"+(e==="static"?-1:a.zIndex)+";display:"+(i.xc&&i.Vb?"block":"none")},vc:function(){var a=this.bc();if(a&&(this.o.oc()||this.g.jb.L()))a.style.cssText=this.ac()},ec:function(){var a=this.d;return a.tagName in h.uc?a.offsetParent:a},bc:function(){var a=
+this.sb;if(!a)a=this.sb=H.getElementById("_pie"+h.Q.pa(this));return a},Gb:function(){var a=this.Wa,b,d,e,c,g,i;if(this.j())if(a)if(b=this.vb){d=0;for(e=a.length;d<e;d++){for(c=b.length;c--;)if(b[c].eb<a[d].eb)break;if(c<0){g=this.bc();i="afterBegin"}else{g=b[c].B();i="afterEnd"}g.insertAdjacentHTML(i,a[d].zb());b.splice(c<0?0:c,0,a[d])}this.Wa=0;this.vc()}else{d=this.g.jb.i();if(d.xc&&d.Vb){a.sort(this.Wd);b=['<css3pie id="_pie'+h.Q.pa(this)+'" style="'+this.ac()+'">'];d=0;for(e=a.length;d<e;d++)b.push(a[d].zb());
+b.push("</css3pie>");this.ec().insertAdjacentHTML("beforeBegin",b.join(""));this.vb=a;this.Wa=0}}else this.vc();else this.k()},Wd:function(a,b){return a.eb-b.eb},sd:function(a){(this.Wa||(this.Wa=[])).push(a)},Sd:function(a){var b=this.vb,d;if(b)for(d=b.length;d--;)if(b[d]===a){b.splice(d,1);break}},k:function(){var a=this.sb,b;if(a&&(b=a.parentNode))b.removeChild(a);delete this.sb;delete this.vb}});H.createElement("css3pie");h.Dc=h.v.sa({H:2,ra:function(){var a=this.g;return a.K.L()||a.F.L()},j:function(){var a=
+this.g;return a.D.j()||a.F.j()||a.K.j()||a.na.j()&&a.na.i().Db},Ca:function(){var a=this.o.n();if(a.f&&a.e){this.nd();this.od()}},nd:function(){var a=this.g.K.i(),b=this.o.n(),d=this.d,e=a&&a.color,c;if(e&&e.Y()>0){this.fc();c=this.B("bgColor",this.H);c.ta(b.f,b.e);c.fa("path",this.$b(b,a.bd));c.w("color",e.M(d));a=e.Y();a<1&&c.w("opacity",a)}else this.Ba("bgColor")},od:function(){var a=this.g.K.i(),b=this.o.n();a=a&&a.R;var d,e,c,g,i;if(a){this.fc();c=b.f;g=b.e;for(i=a.length;i--;){d=a[i];e=this.B("bgImage"+
+i,this.H+(0.5-i/1E3));e.fa("path",this.$b(b,d.Xa));e.ta(c,g);if(d.V==="linear-gradient")this.Xc(e,d);else{e.w("type","tile","color","none");this.Pd(e,d.Cb,i)}}}for(i=a?a.length:0;this.Ba("bgImage"+i++););},Pd:function(a,b,d){h.Q.Ac(b,function(e){var c=this.d,g=this.o.n(),i=g.f,j=g.e;if(i&&j){var f=this.g,k=f.K,l=k.i().R[d],m=k.ud(l.Ya,this.o,f.s,f.da);f=(l.Za||h.Ma.Jc).a(this.d,m.f,m.e,e.f,e.e);k=this.vd(l.Ya);c=l.ma?l.ma.coords(c,m.f-f.f,m.e-f.e):{x:0,y:0};l=l.bb;var o=0,s=0,q=i+1,t=j+1,n=h.U===
+8?0:1;m=Math.round(k.x+c.x)+0.5;k=Math.round(k.y+c.y)+0.5;a.w("src",b,"position",m/i+","+k/j,"size",f.f!==e.f||f.e!==e.e||g.jc!==1||screen.logicalXDPI/screen.deviceXDPI!==1?h.Qa.gb(f.f)+"pt,"+h.Qa.gb(f.e)+"pt":"");if(l&&l!=="repeat"){if(l==="repeat-x"||l==="no-repeat"){o=k+1;t=k+f.e+n}if(l==="repeat-y"||l==="no-repeat"){s=m+1;q=m+f.f+n}a.Ha("clip","rect("+o+"px,"+q+"px,"+t+"px,"+s+"px)")}}},this)},$b:function(a,b){var d=0,e=0,c=0,g=0,i=this.d,j=this.g,f;if(b&&b!=="border-box")if((f=j.s.i())&&(f=f.O)){d+=
+f.t.a(i);e+=f.r.a(i);c+=f.b.a(i);g+=f.l.a(i)}if(b==="content-box")if(b=j.da.i()){d+=b.t.a(i);e+=b.r.a(i);c+=b.b.a(i);g+=b.l.a(i)}return"m0,0r0,0m"+a.f*2+","+a.e*2+"r0,0"+this.Z(d,e,c,g,2)},vd:function(a){var b=this.d,d=this.g,e=0,c=0,g;if(a!=="border-box")if((g=d.s.i())&&(g=g.O)){e+=g.l.a(b);c+=g.t.a(b)}if(a==="content-box")if(a=d.da.i()){e+=a.l.a(b);c+=a.t.a(b)}return{x:e,y:c}},Xc:function(a,b){var d=this.d,e=this.o.n(),c=e.f,g=e.e;e=b.ua;var i=e.length,j=Math.PI,f=h.nb.xd(d,c,g,b),k=f.la;b=f.Jd;
+var l,m;for(c=k%90?Math.atan2(f.be-f.rd,(f.qd-f.ae)*c/g)/j*180-90:-k;c<0;)c+=360;c%=360;g=[];j=[];for(f=0;f<i;f++)j.push(e[f].lc?e[f].lc.a(d,b):f===0?0:f===i-1?b:null);for(f=1;f<i;f++){if(j[f]===null){l=j[f-1];k=f;do m=j[++k];while(m===null);j[f]=l+(m-l)/(k-f+1)}j[f]=Math.max(j[f],j[f-1])}for(f=0;f<i;f++)g.push(j[f]/b*100+"% "+e[f].color.M(d));a.w("angle",c,"type","gradient","method","sigma","color",e[0].color.M(d),"color2",e[i-1].color.M(d),"colors",g.join(","));i===2&&a.w("opacity",e[1].color.Y(),
+"o:opacity2",e[0].color.Y())},fc:function(){var a=this.d.runtimeStyle;a.backgroundImage="url(about:blank)";a.backgroundColor="transparent"},k:function(){h.v.k.call(this);var a=this.d.runtimeStyle;a.backgroundImage=a.backgroundColor=""}});h.Fc=h.v.sa({H:4,Xd:{t:[2,1,0,3,4,7,6,5,90],r:[4,7,6,5,10,9,8,11,0],b:[10,9,8,11,12,15,14,13,270],l:[12,15,14,13,2,1,0,3,180]},fd:{dotted:1,dashed:1},Ub:{groove:1,ridge:1,inset:1,outset:1},md:{groove:1,ridge:1,"double":1},ra:function(){var a=this.g;return a.s.L()||
+a.F.L()},j:function(){var a=this.g;return a.F.j()&&!a.D.j()&&a.s.j()},Ca:function(){var a=this.g.s.i(),b=this.o.n(),d,e,c,g;if(a){this.Bb();d=this.wd();e=c=0;for(g=d.length;e<g;e+=2){a=this.B("border"+c++,this.H);a.ta(b.f,b.e);a.fa("path",d[e]);a.w("color",d[e+1])}for(;this.Ba("border"+c++););}},S:function(a,b,d,e,c,g,i){i=e*(i==="dashed"?3:1);e=c+e;var j;if(i<d-b)for(b+=(d-b-i)/2%i;b<d;){j=Math.min(b+i,d);a.push(g?"m"+c+","+b+"l"+c+","+j+"l"+e+","+j+"l"+e+","+b+"x":"m"+b+","+c+"l"+j+","+c+"l"+j+
+","+e+"l"+b+","+e+"x");b+=i*2}},wd:function(){var a=this.g.s,b=[];if(a.j()){var d=this.d,e=this.o.n(),c=a.i(),g=c.O;a=c.de;var i=c.dd,j=Math,f=j.abs,k=j.round;j=k(g.t.a(d));var l=k(g.r.a(d)),m=k(g.b.a(d));g=k(g.l.a(d));k=[];var o,s,q,t=this.Xd,n,u=this.fd,p,r;if(c.ee&&c.ed&&!(a.t in this.Ub)){if(i.t.Y()>0){k[0]=this.Z(0,0,0,0,2);p=a.t;if(p==="double")k.push(this.Z(j/3,l/3,m/3,g/3,2)+this.Z(j*2/3,l*2/3,m*2/3,g*2/3,2));else if(p in u){c=this.$(j,l,m,g,2);this.S(k,c[2],c[4],j*2,0,0,a.t);this.S(k,c[7],
+c[9],l*2,(e.f-l)*2,1,a.r);this.S(k,c[12],c[10],m*2,(e.e-m)*2,0,a.b);this.S(k,c[1],c[15],g*2,0,1,a.l)}k.push(this.Z(j,l,m,g,2));b.push(k.join(""),i.t.M(d))}}else{o=this.$(0,0,0,0,2);c=this.$(j,l,m,g,2);for(n in t)if(t.hasOwnProperty(n)&&i[n].Y()>0){p=t[n];var v=p[0],C=p[1],y=p[2],B=p[3],F=p[4],G=p[5],K=p[6],J=p[7],w=p[8],P=n==="t"||n==="l";p=a[n];k[0]="al"+o[v]+","+o[C]+","+f(o[y]-o[v])+","+f(o[B]-o[C])+","+(w+45)*65535+",-2949075ae"+o[F]+","+o[G]+","+f(o[K]-o[F])+","+f(o[J]-o[G])+","+w*65535+",-2949075";
+if(p in this.md){if(!s)if(p==="double"){s=this.$(j/3,l/3,m/3,g/3,2);q=this.$(j*2/3,l*2/3,m*2/3,g*2/3,2)}else s=q=this.$(j/2,l/2,m/2,g/2,2);k.push("ae"+s[F]+","+s[G]+","+f(s[K]-s[F])+","+f(s[J]-s[G])+","+(w-45)*65535+",2949075ae"+s[v]+","+s[C]+","+f(s[y]-s[v])+","+f(s[B]-s[C])+","+w*65535+",2949075x");if(p!=="double"){r=i[n].M(d)+((p==="groove"?P:!P)?" darken(128)":" lighten(128)");b.push(k.join(""),r);k.length=0}k.push("al"+q[v]+","+q[C]+","+f(q[y]-q[v])+","+f(q[B]-q[C])+","+(w+45)*65535+",-2949075ae"+
+q[F]+","+q[G]+","+f(q[K]-q[F])+","+f(q[J]-q[G])+","+w*65535+",-2949075")}k.push("ae"+c[F]+","+c[G]+","+f(c[K]-c[F])+","+f(c[J]-c[G])+","+(w-45)*65535+",2949075ae"+c[v]+","+c[C]+","+f(c[y]-c[v])+","+f(c[B]-c[C])+","+w*65535+",2949075x");if(p in u)n==="t"?this.S(k,c[2],c[4],j*2,0,0,p):n==="r"?this.S(k,c[7],c[9],l*2,(e.f-l)*2,1,p):n==="b"?this.S(k,c[12],c[10],m*2,(e.e-m)*2,0,p):this.S(k,c[1],c[15],g*2,0,1,p);r=i[n].M(d);if(p in this.Ub)r+=(p==="groove"||p==="outset"?P:!P)?" lighten(128)":" darken(128)";
+b.push(k.join(""),r);k.length=0}}}return b},k:function(){if(this.Yb||!this.g.D.j())this.d.runtimeStyle.borderColor="";h.v.k.call(this)}});h.Ec=h.v.sa({H:5,ra:function(){return this.g.D.L()},j:function(){return this.g.D.j()},Ca:function(){var a=this.g.D.i(),b=this.g.s.i(),d=this.o.n(),e=this.d;h.Q.Ac(a.src,function(c){function g(r,v,C,y,B,F,G,K,J){var w=Math.max;if(!u||!p||!y||!B||!K||!J)r.Ha("display","none");else{y=w(y,0);B=w(B,0);r.fa("path","m0,0l"+y*2+",0l"+y*2+","+B*2+"l0,"+B*2+"x");r.w("src",
+n,"type","tile","position","0,0","origin",(F-0.5)/u+","+(G-0.5)/p,"size",h.Qa.gb(y*u/K)+"pt,"+h.Qa.gb(B*p/J)+"pt");r.ta(y,B);r.Ha("left",v+"px","top",C+"px","display","")}}var i=d.f,j=d.e,f=h.m("0"),k=a.O||(b?b.O:{t:f,r:f,b:f,l:f});f=k.t.a(e);var l=k.r.a(e),m=k.b.a(e);k=k.l.a(e);var o=a.slice,s=o.t.a(e),q=o.r.a(e),t=o.b.a(e);o=o.l.a(e);var n=a.src,u=c.f,p=c.e;g(this.N("tl"),0,0,k,f,0,0,o,s);g(this.N("t"),k,0,i-k-l,f,o,0,u-o-q,s);g(this.N("tr"),i-l,0,l,f,u-q,0,q,s);g(this.N("r"),i-l,f,l,j-f-m,u-q,
+s,q,p-s-t);g(this.N("br"),i-l,j-m,l,m,u-q,p-t,q,t);g(this.N("b"),k,j-m,i-k-l,m,o,p-t,u-o-q,t);g(this.N("bl"),0,j-m,k,m,0,p-t,o,t);g(this.N("l"),0,f,k,j-f-m,0,s,o,p-s-t);g(this.N("c"),k,f,i-k-l,j-f-m,o,s,a.fill?u-o-q:0,p-s-t)},this)},N:function(a){return this.B("borderImage_"+a,this.H)},qc:function(){if(this.j()){var a=this.d,b=a.runtimeStyle,d=this.g.D.i().O;b.borderStyle="solid";if(d){b.borderTopWidth=d.t.a(a);b.borderRightWidth=d.r.a(a);b.borderBottomWidth=d.b.a(a);b.borderLeftWidth=d.l.a(a)}this.Bb()}},
+k:function(){var a=this.d.runtimeStyle;a.borderStyle="";if(this.Yb||!this.g.s.j())a.borderColor=a.borderWidth="";h.v.k.call(this)}});h.Gc=h.v.sa({H:1,ra:function(){var a=this.g;return a.na.L()||a.F.L()},j:function(){var a=this.g.na;return a.j()&&a.i().Ga[0]},Ca:function(){var a=this.d,b=this.g,d=b.na.i().Ga;b=b.F.i();var e=d.length,c=e,g=this.o.n(),i=g.f;g=g.e;for(var j,f,k,l,m,o,s,q,t,n;c--;){j=d[c];k=j.ke.a(a);l=j.le.a(a);m=j.$d.a(a);o=j.blur.a(a);j=j.color;s=j.Y();j=j.M(a);f=-m-o;if(!b&&o)b=h.lb.Bc;
+q=this.Z(f,f,f,f,2,b);f=this.B("shadow"+c,this.H+(0.5-c/1E3));if(o){t=(m+o)*2+i;n=(m+o)*2+g;m=t?o*2/t:0;o=n?o*2/n:0;if(m>0.5||o>0.5){t=0.5/Math.max(m,o);m*=t;o*=t;s*=t*t}f.w("type","gradienttitle","color2",j,"focusposition",m+","+o,"focussize",1-m*2+","+(1-o*2),"opacity",0,"o:opacity2",s)}else f.w("type","solid","opacity",s);f.fa("path",q);f.w("color",j);f.Ha("left",k+"px","top",l+"px");f.ta(i,g)}for(;this.Ba("shadow"+e++););}});h.Lc=h.v.sa({H:6,ra:function(){var a=this.g;return this.d.src!==this.Sc||
+a.F.L()},j:function(){var a=this.g;return a.F.j()||a.K.ic()},Ca:function(){this.Sc=g;this.Ed();var a=this.B("img",this.H),b=this.o.n(),d=b.f;b=b.e;var e=this.g.s.i(),c=e&&e.O;e=this.d;var g=e.src,i=Math.round,j=this.g.da.i();if(!c||h.U<7){c=h.m("0");c={t:c,r:c,b:c,l:c}}a.fa("path",this.Z(i(c.t.a(e)+j.t.a(e)),i(c.r.a(e)+j.r.a(e)),i(c.b.a(e)+j.b.a(e)),i(c.l.a(e)+j.l.a(e)),2));a.w("type","frame","src",g,"position",(d?0.5/d:0)+","+(b?0.5/b:0));a.ta(d,b)},Ed:function(){this.d.runtimeStyle.filter="alpha(opacity=0)"},
+k:function(){h.v.k.call(this);this.d.runtimeStyle.filter=""}});h.mb=function(){function a(n,u){n.className+=" "+u}function b(n){var u=t.slice.call(arguments,1),p=u.length;setTimeout(function(){if(n)for(;p--;)a(n,u[p])},0)}function d(n){var u=t.slice.call(arguments,1),p=u.length;setTimeout(function(){if(n)for(;p--;){var r=u[p];r=q[r]||(q[r]=new RegExp("\\b"+r+"\\b","g"));n.className=n.className.replace(r,"")}},0)}function e(n){function u(){if(!T){var x,z,E=h.qa,N=n.currentStyle,I=N.getAttribute(g)===
+"true",Z=N.getAttribute(j)!=="false",$=N.getAttribute(f)!=="false";R=N.getAttribute(i);R=E>7?R!=="false":R==="true";if(!U){U=1;n.runtimeStyle.zoom=1;N=n;for(var aa=1;N=N.previousSibling;)if(N.nodeType===1){aa=0;break}aa&&a(n,o)}D.cb();if(I&&(z=D.n())&&(x=H.documentElement||H.body)&&(z.y>x.clientHeight||z.x>x.clientWidth||z.y+z.e<0||z.x+z.f<0)){if(!X){X=1;h.pb.ca(u)}}else{T=1;X=U=0;h.pb.Ka(u);if(E===9){A={K:new h.Hb(n),D:new h.Ib(n),s:new h.Jb(n),da:new h.Nb(n)};Q=[A.K,A.s,A.D,A.da];L=new h.oe(n,D,
+A);M=[new h.me(n,D,A,L),new h.ne(n,D,A,L)]}else{A={K:new h.Hb(n),s:new h.Jb(n),D:new h.Ib(n),F:new h.lb(n),na:new h.Hc(n),da:new h.Nb(n),jb:new h.Oc(n)};Q=[A.K,A.s,A.D,A.F,A.na,A.da,A.jb];L=new h.Mc(n,D,A);M=[new h.Gc(n,D,A,L),new h.Dc(n,D,A,L),new h.Fc(n,D,A,L),new h.Ec(n,D,A,L)];n.tagName==="IMG"&&M.push(new h.Lc(n,D,A,L));L.ad=M}if(x=n.currentStyle.getAttribute(h.z+"watch-ancestors")){x=parseInt(x,10);z=0;for(I=n.parentNode;I&&(x==="NaN"||z++<x);){w(I,"onpropertychange",J);w(I,"onmouseenter",C);
+w(I,"onmouseleave",y);w(I,"onmousedown",B);if(I.tagName in h.Zb){w(I,"onfocus",G);w(I,"onblur",K)}I=I.parentNode}}if(R){h.Pa.ca(r);h.Pa.Ud()}r(0,1)}if(!V){V=1;E<9&&w(n,"onmove",p);w(n,"onresize",p);w(n,"onpropertychange",v);$&&w(n,"onmouseenter",C);if($||Z)w(n,"onmouseleave",y);Z&&w(n,"onmousedown",B);if(n.tagName in h.Zb){w(n,"onfocus",G);w(n,"onblur",K)}h.Sa.ca(p);h.J.ca(P)}D.ib()}}function p(){D&&D.Cd()&&r()}function r(x,z){if(!Y)if(T){D.cb();for(var E=Q.length;E--;)Q[E].cb();E=0;for(var N=M.length,
+I=D.Yd();E<N;E++)M[E].qc();for(E=0;E<N;E++)if(z||I||x&&M[E].ra())M[E].Gb();if(z||I||x||D.oc())L.Gb();for(x=Q.length;x--;)Q[x].ib();D.ib()}else U||u()}function v(){T&&!(event&&event.propertyName in s)&&r(1)}function C(){b(n,k)}function y(){d(n,k,l)}function B(){b(n,l);h.ob.ca(F)}function F(){d(n,l);h.ob.Ka(F)}function G(){b(n,m)}function K(){d(n,m)}function J(){var x=event.propertyName;if(x==="className"||x==="id"||x.indexOf("style.")===0)v()}function w(x,z,E){x.attachEvent(z,E);W.push([x,z,E])}function P(){if(V){for(var x=
+W.length,z;x--;){z=W[x];z[0].detachEvent(z[1],z[2])}h.J.Ka(P);V=0;W=[]}}function ba(){if(!Y){var x,z;P();Y=1;if(M){x=0;for(z=M.length;x<z;x++){M[x].Yb=1;M[x].k()}}L.k();R&&h.Pa.Ka(r);h.Sa.Ka(r);M=L=D=A=Q=n=null;S.Wb=S=0}}var S=this,M,L,D=new h.Kb(n),A,Q,U,T,V,W=[],X,Y,R;S.Wb=n;S.Gd=u;S.k=ba}var c={},g=h.z+"lazy-init",i=h.z+"poll",j=h.z+"track-active",f=h.z+"track-hover",k=h.Na+"hover",l=h.Na+"active",m=h.Na+"focus",o=h.Na+"first-child",s={background:1,bgColor:1,display:1},q={},t=[];e.yd=function(n){var u=
+n.uniqueID;return c[u]||(c[u]=new e(n))};e.k=function(n){n=n.uniqueID;var u=c[n];if(u){u.k();delete c[n]}};e.kd=function(){var n=[],u;if(c){for(var p in c)if(c.hasOwnProperty(p)){u=c[p];n.push(u.Wb);u.k()}c={}}return n};return e}();h.version="2.0beta1";h.supportsVML=h.tc;h.attach=function(a){if(h.qa===9||h.qa<9&&h.tc)h.mb.yd(a).Gd()};h.detach=function(a){h.mb.k(a)}})(window,document);
diff --git a/CubeIT/js/pie/PIE_IE9.js b/CubeIT/js/pie/PIE_IE9.js
new file mode 100644 (file)
index 0000000..c1a4edd
--- /dev/null
@@ -0,0 +1,46 @@
+(function(V,N){var d=V.PIE||(V.PIE={});d.va=function(b){var a,c,e,f,h=arguments;a=1;for(c=h.length;a<c;a++){f=h[a];for(e in f)if(f.hasOwnProperty(e))b[e]=f[e]}return b};d.va(d,{i:"-pie-",Ka:"Pie",fa:"pie_",Sc:{TD:1,TH:1},ac:{TABLE:1,THEAD:1,TBODY:1,TFOOT:1,TR:1,INPUT:1,TEXTAREA:1,SELECT:1,OPTION:1,IMG:1,HR:1},ub:{A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},qd:{submit:1,button:1,reset:1},hc:function(){}});try{N.execCommand("BackgroundImageCache",false,true)}catch(ca){}(function(){for(var b=4,a=N.createElement("div"),
+c=a.getElementsByTagName("i");a.innerHTML="<!--[if gt IE "+ ++b+"]><i></i><![endif]--\>",c[0];);d.Ua=b;if(b===6)d.i=d.i.replace(/^-/,"");d.P=N.documentMode||d.Ua;a.innerHTML='<v:shape adj="1"/>';b=a.firstChild;b.style.behavior="url(#default#VML)";d.Db=typeof b.adj==="object"})();(function(){var b=0,a={};d.na={Sa:function(c){return c&&c._pieId||(c._pieId="_"+b++)},Zc:function(c,e,f){var h=a[c],l,k;if(h)Object.prototype.toString.call(h)==="[object Array]"?h.push([e,f]):e.call(f,h);else{k=a[c]=[[e,f]];
+l=new Image;l.onload=function(){h=a[c]={g:l.width,f:l.height};for(var g=0,m=k.length;g<m;g++)k[g][0].call(k[g][1],h);l.onload=null};l.src=c}}}})();d.Ga={Uc:{top:0,right:90,bottom:180,left:270},nc:function(b,a,c,e){b=e.T;e=e.ta;var f;if(b)b=b.ec();else if(e)if(e[1]){b=e[0]=="top"||e[1]=="top"?a:-a;e=e[0]=="left"||e[1]=="left"?-c:c;b=Math.atan2(e,b)*180/Math.PI}else b=this.Uc[e[0]];else b=180;for(;b<0;)b+=360;b%=360;f=d.Ga.Fc(a/2,c/2,b,b>=180?0:a,b<90||b>270?0:c);e=f[0];f=f[1];a=a-e;c=c-f;return{T:b,
+ic:e,jc:f,Pc:a,Qc:c,zc:d.Ga.fc(a,c,e,f)}},Fc:function(b,a,c,e,f){if(c===0||c===180)return[b,f];else if(c===90||c===270)return[e,a];else{c=Math.tan((c-90)*Math.PI/180);b=c*b-a;a=-1/c;e=a*e-f;f=a-c;return[(e-b)/f,(c*e-a*b)/f]}},fc:function(b,a,c,e){b=c-b;a=e-a;return Math.abs(b===0?a:a===0?b:Math.sqrt(b*b+a*a))}};d.L=function(){this.Za=[];this.yb={}};d.L.prototype={I:function(b){var a=d.na.Sa(b),c=this.yb,e=this.Za;if(!(a in c)){c[a]=e.length;e.push(b)}},aa:function(b){b=d.na.Sa(b);var a=this.yb;if(b&&
+b in a){delete this.Za[a[b]];delete a[b]}},Y:function(){for(var b=this.Za,a=b.length;a--;)b[a]&&b[a]()}};d.ha=new d.L;d.ha.Kc=function(){var b=this,a;if(!b.Lc){a=N.documentElement.currentStyle.getAttribute(d.i+"poll-interval")||250;(function c(){b.Y();setTimeout(c,a)})();b.Lc=1}};(function(){function b(){d.D.Y();V.detachEvent("onunload",b);V.PIE=null}d.D=new d.L;V.attachEvent("onunload",b);d.D.Oa=function(a,c,e){a.attachEvent(c,e);this.I(function(){a.detachEvent(c,e)})}})();d.ja=new d.L;d.D.Oa(V,
+"onresize",function(){d.ja.Y()});(function(){function b(){d.Ja.Y()}d.Ja=new d.L;d.D.Oa(V,"onscroll",b);d.ja.I(b)})();d.Ia=new d.L;d.D.Oa(N,"onmouseup",function(){d.Ia.Y()});d.gd=function(){function b(g){this.q=g}var a=N.createElement("length-calc"),c=N.body||N.documentElement,e=a.style,f={},h=["mm","cm","in","pt","pc"],l=h.length,k={};e.position="absolute";e.top=e.left="-9999px";for(c.appendChild(a);l--;){e.width="100"+h[l];f[h[l]]=a.offsetWidth/100}c.removeChild(a);e.width="1em";b.prototype={bb:/(px|em|ex|mm|cm|in|pt|pc|%)$/,
+qc:function(){var g=this.Cc;if(g===void 0)g=this.Cc=parseFloat(this.q);return g},Ta:function(){var g=this.Vc;if(!g)g=this.Vc=(g=this.q.match(this.bb))&&g[0]||"px";return g},c:function(g,m){var j=this.qc(),n=this.Ta();switch(n){case "px":return j;case "%":return j*(typeof m==="function"?m():m)/100;case "em":return j*this.Ra(g);case "ex":return j*this.Ra(g)/2;default:return j*f[n]}},Ra:function(g){var m=g.currentStyle.fontSize,j,n;if(m.indexOf("px")>0)return parseFloat(m);else if(g.tagName in d.ac){n=
+this;j=g.parentNode;return d.m(m).c(j,function(){return n.Ra(j)})}else{g.appendChild(a);m=a.offsetWidth;a.parentNode===g&&g.removeChild(a);return m}}};b.td=function(g){return g/f.pt};d.m=function(g){return k[g]||(k[g]=new b(g))};return b}();d.Fa=function(){function b(a){this.J=a}d.m("50%");b.prototype={};return b}();d.ea=function(){function b(a,c){this.g=a;this.f=c}b.prototype={c:function(a,c,e,f,h){var l=this.g,k=this.f,g=c/e;f=f/h;if(l==="contain"){l=f>g?c:e*f;k=f>g?c/f:e}else if(l==="cover"){l=
+f<g?c:e*f;k=f<g?c/f:e}else if(l==="auto"){k=k==="auto"?h:k.c(a,e);l=k*f}else{l=l.c(a,c);k=k==="auto"?l/f:k.c(a,e)}return{g:l,f:k}}};b.Ib=new b("auto","auto");return b}();d.Gb=function(){function b(a){this.q=a}b.prototype={bb:/[a-z]+$/i,Ta:function(){return this.Vb||(this.Vb=this.q.match(this.bb)[0].toLowerCase())},ec:function(){var a=this.Qb,c;if(a===undefined){a=this.Ta();c=parseFloat(this.q,10);a=this.Qb=a==="deg"?c:a==="rad"?c/Math.PI*180:a==="grad"?c/400*360:a==="turn"?c*360:0}return a}};return b}();
+d.Hb=function(){function b(g,m,j){if(j<0)j+=1;else if(j>1)j-=1;return 255*(6*j<1?g+(m-g)*j*6:2*j<1?m:3*j<2?g+(m-g)*(2/3-j)*6:g)}function a(g){this.q=g}var c={};a.Jc=/\s*rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(\d+|\d*\.\d+))?\s*\)\s*/;a.uc=/\s*hsla?\(\s*(\d*\.?\d+)\s*,\s*(\d{1,3})%\s*,\s*(\d{1,3})%\s*(,\s*(\d+|\d*\.\d+))?\s*\)\s*/;a.wa={};for(var e="black|0|navy|3k|darkblue|b|mediumblue|1u|blue|1e|darkgreen|jk1|green|5j4|teal|3k|darkcyan|26j|deepskyblue|ad0|darkturquoise|2xe|mediumspringgreen|8nd|lime|va|springgreen|3j|aqua|3k|cyan|0|midnightblue|xunl|dodgerblue|7ogf|lightseagreen|2zsb|forestgreen|2lbs|seagreen|guut|darkslategray|12pk|limegreen|4wkj|mediumseagreen|dwlb|turquoise|5v8f|royalblue|r2p|steelblue|75qr|darkslateblue|2fh3|mediumturquoise|ta9|indigo|32d2|darkolivegreen|emr1|cadetblue|ebu9|cornflowerblue|6z4d|mediumaquamarine|3459|dimgray|3nwf|slateblue|1bok|olivedrab|1opi|slategray|6y5p|lightslategray|9vk9|mediumslateblue|5g0l|lawngreen|27ma|chartreuse|48ao|aquamarine|5w|maroon|18|purple|3k|olive|p6o|gray|3k|lightslateblue|5j7j|skyblue|4q98|lightskyblue|f|blueviolet|3bhk|darkred|15we|darkmagenta|3v|saddlebrown|djc|darkseagreen|69vg|lightgreen|1og1|mediumpurple|3ivc|darkviolet|sfv|palegreen|6zt1|darkorchid|awk|yellowgreen|292e|sienna|7r3v|brown|6sxp|darkgray|6bgf|lightblue|5vlp|greenyellow|7k9|paleturquoise|2pxb|lightsteelblue|169c|powderblue|5jc|firebrick|1rgc|darkgoldenrod|8z55|mediumorchid|2jm0|rosybrown|34jg|darkkhaki|1mfw|silver|49jp|mediumvioletred|8w5h|indianred|8tef|peru|82r|violetred|3ntd|feldspar|212d|chocolate|16eh|tan|ewe|lightgrey|1kqv|palevioletred|6h8g|metle|fnp|orchid|2dj2|goldenrod|abu|crimson|20ik|gainsboro|13mo|plum|12pt|burlywood|1j8q|lightcyan|3794|lavender|8agr|darksalmon|3rsw|violet|6wz8|palegoldenrod|k3g|lightcoral|28k6|khaki|k5o|aliceblue|3n7|honeydew|1dd|azure|f|sandybrown|5469|wheat|1q37|beige|4kp|whitesmoke|p|mintcream|1z9|ghostwhite|46bp|salmon|25bn|antiquewhite|l7p|linen|zz|lightgoldenrodyellow|1yk|oldlace|46qc|red|1gka|magenta|73|fuchsia|0|deeppink|3v8|orangered|9kd|tomato|5zb|hotpink|19p|coral|49o|darkorange|2i8|lightsalmon|41m|orange|w6|lightpink|3i9|pink|1ze|gold|4dx|peachpuff|qh|navajowhite|s4|moccasin|16w|bisque|f|mistyrose|t|blanchedalmond|1d8|papayawhip|so|lavenderblush|80|seashell|zd|cornsilk|ku|lemonchiffon|dt|floralwhite|z|snow|a|yellow|sm|lightyellow|68|ivory|g|white|f".split("|"),
+f=0,h=e.length,l=0,k;f<h;f+=2){l+=parseInt(e[f+1],36);k=l.toString(16);a.wa[e[f]]="#000000".slice(0,-k.length)+k}a.prototype={parse:function(){if(!this.Ma){var g=this.q,m;if(m=g.match(a.Jc)){g=this.Cb(+m[1],+m[2],+m[3]);m=m[5]?+m[5]:1}else if(m=g.match(a.uc)){var j=m[1],n=m[2],p=m[3],y,s;g=Math.round;n/=100;p/=100;if(n){n=p<=0.5?p*(n+1):p+n-p*n;y=p*2-n;j=j%360/360;p=b(y,n,j+1/3);s=b(y,n,j);j=b(y,n,j-1/3)}else p=s=j=p*255;g={Ic:g(p),kc:g(s),Xb:g(j)};g=this.Cb(g.Ic,g.kc,g.Xb);m=m[5]?+m[5]:1}else{if(a.wa.hasOwnProperty(m=
+g.toLowerCase()))g=a.wa[m];m=g==="transparent"?0:1}this.Ma=g;this.kd=m}},Cb:function(g,m,j){return"#"+(g<16?"0":"")+g.toString(16)+(m<16?"0":"")+m.toString(16)+(j<16?"0":"")+j.toString(16)},dc:function(g){this.parse();return this.Ma==="currentColor"?d.N(g.currentStyle.color).dc(g):this.Ma}};d.N=function(g){return c[g]||(c[g]=new a(g))};return a}();d.p=function(){function b(c){this.sa=c;this.ch=0;this.J=[];this.$=0}var a=b.mb={da:1,hb:2,h:4,Jb:8,jb:16,R:32,o:64,S:128,Ha:256,ka:512,Pb:1024,URL:2048};
+b.lb=function(c,e){this.e=c;this.a=e};b.lb.prototype={Wa:function(){return this.e&a.o||this.e&a.S&&this.a==="0"},H:function(){return this.Wa()||this.e&a.ka}};b.prototype={Yc:/\s/,Dc:/^[\+\-]?(\d*\.)?\d+/,url:/^url\(\s*("([^"]*)"|'([^']*)'|([!#$%&*-~]*))\s*\)/i,wb:/^\-?[_a-z][\w-]*/i,Rc:/^("([^"]*)"|'([^']*)')/,sc:/^#([\da-f]{6}|[\da-f]{3})/i,Wc:{px:a.o,em:a.o,ex:a.o,mm:a.o,cm:a.o,"in":a.o,pt:a.o,pc:a.o,deg:a.da,rad:a.da,grad:a.da},cc:{rgb:1,rgba:1,hsl:1,hsla:1},next:function(c){function e(p,y){p=
+new b.lb(p,y);if(!c){m.J.push(p);m.$++}return p}function f(){m.$++;return null}var h,l,k,g,m=this;if(this.$<this.J.length)return this.J[this.$++];for(;this.Yc.test(this.sa.charAt(this.ch));)this.ch++;if(this.ch>=this.sa.length)return f();l=this.ch;h=this.sa.substring(this.ch);k=h.charAt(0);switch(k){case "#":if(g=h.match(this.sc)){this.ch+=g[0].length;return e(a.h,g[0])}break;case '"':case "'":if(g=h.match(this.Rc)){this.ch+=g[0].length;return e(a.Pb,g[2]||g[3]||"")}break;case "/":case ",":this.ch++;
+return e(a.Ha,k);case "u":if(g=h.match(this.url)){this.ch+=g[0].length;return e(a.URL,g[2]||g[3]||g[4]||"")}}if(g=h.match(this.Dc)){k=g[0];this.ch+=k.length;if(h.charAt(k.length)==="%"){this.ch++;return e(a.ka,k+"%")}if(g=h.substring(k.length).match(this.wb)){k+=g[0];this.ch+=g[0].length;return e(this.Wc[g[0].toLowerCase()]||a.Jb,k)}return e(a.S,k)}if(g=h.match(this.wb)){k=g[0];this.ch+=k.length;if(k.toLowerCase()in d.Hb.wa||k==="currentColor"||k==="transparent")return e(a.h,k);if(h.charAt(k.length)===
+"("){this.ch++;if(k.toLowerCase()in this.cc){h=function(p){return p&&p.e&a.S};g=function(p){return p&&p.e&(a.S|a.ka)};var j=function(p,y){return p&&p.a===y},n=function(){return m.next(1)};if((k.charAt(0)==="r"?g(n()):h(n()))&&j(n(),",")&&g(n())&&j(n(),",")&&g(n())&&(k==="rgb"||k==="hsa"||j(n(),",")&&h(n()))&&j(n(),")"))return e(a.h,this.sa.substring(l,this.ch));return f()}return e(a.jb,k)}return e(a.R,k)}this.ch++;return e(a.hb,k)},n:function(){return this.J[this.$-- -2]},all:function(){for(;this.next(););
+return this.J},ba:function(c,e){for(var f=[],h,l;h=this.next();){if(c(h)){l=true;this.n();break}f.push(h)}return e&&!l?null:f}};return b}();d.gb=function(b){this.d=b};d.gb.prototype={F:0,Gc:function(){var b=this.Na,a;return!b||(a=this.Z())&&(b.x!==a.x||b.y!==a.y)},Nc:function(){var b=this.Na,a;return!b||(a=this.Z())&&(b.g!==a.g||b.f!==a.f)},vb:function(){var b=this.d,a=b.getBoundingClientRect(),c=d.P===9,e=d.Ua===7,f=a.right-a.left;return{x:a.left,y:a.top,g:c||e?b.offsetWidth:f,f:c||e?b.offsetHeight:
+a.bottom-a.top,rd:e&&f?b.offsetWidth/f:1}},Z:function(){return this.F?this.oa||(this.oa=this.vb()):this.vb()},rc:function(){return!!this.Na},ua:function(){++this.F},Da:function(){if(!--this.F){if(this.oa)this.Na=this.oa;this.oa=null}}};(function(){function b(a){var c=d.na.Sa(a);return function(){if(this.F){var e=this.ob||(this.ob={});return c in e?e[c]:(e[c]=a.call(this))}else return a.call(this)}}d.k={F:0,xa:function(a){function c(e){this.d=e;this.nb=this.O()}d.va(c.prototype,d.k,a);c.Ub={};return c},
+w:function(){var a=this.O(),c=this.constructor.Ub;return a?a in c?c[a]:(c[a]=this.za(a)):null},O:b(function(){var a=this.d,c=this.constructor,e=a.style;a=a.currentStyle;var f=this.Pa,h=this.ab,l=c.Sb||(c.Sb=d.i+f);c=c.Tb||(c.Tb=d.Ka+h.charAt(0).toUpperCase()+h.substring(1));return e[c]||a.getAttribute(l)||e[h]||a.getAttribute(f)}),B:b(function(){return!!this.w()}),rb:b(function(){var a=this.O(),c=a!==this.nb;this.nb=a;return c}),X:b,ua:function(){++this.F},Da:function(){--this.F||delete this.ob}}})();
+d.db=d.k.xa({Pa:d.i+"background",ab:d.Ka+"Background",Wb:{scroll:1,fixed:1,local:1},Ba:{"repeat-x":1,"repeat-y":1,repeat:1,"no-repeat":1},Ab:{"padding-box":1,"border-box":1,"content-box":1},Hc:{top:1,right:1,bottom:1,left:1,center:1},Oc:{contain:1,cover:1},Tc:{top:1,bottom:1},Ac:{left:1,right:1},Aa:{ga:"backgroundClip",h:"backgroundColor",K:"backgroundImage",ia:"backgroundOrigin",s:"backgroundPosition",u:"backgroundRepeat",ma:"backgroundSize"},za:function(b){function a(o){return o&&(o.H()&&d.m(o.a)||
+o.a==="auto"&&"auto")}var c=this.d.currentStyle,e,f,h,l=d.p.mb,k=l.Ha,g=l.R,m=l.h,j,n,p=0,y=this.Hc,s,v,i,q,u={G:[]};if(this.Qa()){e=new d.p(b);for(h={};f=e.next();){j=f.e;n=f.a;if(!h.z&&j&l.jb&&n==="linear-gradient"){s={Q:[],z:n};for(v={};f=e.next();){j=f.e;n=f.a;if(j&l.hb&&n===")"){v.color&&s.Q.push(v);s.Q.length>1&&d.va(h,s);break}if(j&m){if(s.T||s.ta){f=e.n();if(f.e!==k)break;e.next()}v={color:d.N(n)};f=e.next();if(f.H())v.zb=d.m(f.a);else e.n()}else if(j&l.da&&!s.T&&!s.ta&&!v.color&&!s.Q.length)s.T=
+new d.Gb(f.a);else if(j&l.R&&n==="to"&&!s.ta&&!s.T&&!v.color&&!s.Q.length){i=this.Tc;q=this.Ac;f=e.ba(function(o){return!(o&&o.e&l.R&&(o.a in i||o.a in q))});j=f.length;f=[f[0]&&f[0].a,f[1]&&f[1].a];if(j<1||j>2||j>1&&(f[0]in i&&f[1]in i||f[0]in q&&f[1]in q))break;s.ta=f}else if(j&k&&n===","){if(v.color){s.Q.push(v);v={}}}else break}}else if(!h.z&&j&l.URL){h.xb=n;h.z="image"}else if((f&&f.H()||f.e&g&&f.a in y)&&!h.V){e.n();h.V=new d.Fa(e.ba(function(o){return!(o&&o.H()||o.e&g&&o.a in y)},false))}else if(j&
+g)if(n in this.Ba&&!h.Va)h.Va=n;else if(n in this.Ab&&!h.qa){h.qa=n;if((f=e.next())&&f.e&g&&f.a in this.Ab)h.pa=f.a;else{h.pa=n;e.n()}}else if(n in this.Wb&&!h.pb)h.pb=n;else return null;else if(j&m&&!u.color)u.color=d.N(n);else if(j&k&&n==="/"&&!h.ra&&h.V){f=e.next();if(f.e&g&&f.a in this.Oc)h.ra=new d.ea(f.a);else if(s=a(f)){v=a(e.next());if(!v){v=s;e.n()}h.ra=new d.ea(s,v)}else return null}else if(j&k&&n===","&&h.z){h.$a=b.substring(p,e.ch-1);p=e.ch;u.G.push(h);h={}}else return null}if(h.z){h.$a=
+b.substring(p);u.G.push(h)}u.bc=h.pa}else this.Eb(d.P<9?function(){var o=this.Aa,r=c[o.s+"X"],G=c[o.s+"Y"],A=c[o.K],B=c[o.h];if(B!=="transparent")u.color=d.N(B);if(A!=="none")u.G=[{z:"image",xb:(new d.p(A)).next().a,Va:c[o.u],V:new d.Fa((new d.p(r+" "+G)).all())}]}:function(){var o=this.Aa,r=/\s*,\s*/,G=c[o.K].split(r),A=c[o.h],B,I,J,L,H,w;if(A!=="transparent")u.color=d.N(A);if((L=G.length)&&G[0]!=="none"){A=c[o.u].split(r);B=c[o.s].split(r);I=c[o.ia].split(r);J=c[o.ga].split(r);o=c[o.ma].split(r);
+u.G=[];for(r=0;r<L;r++)if((H=G[r])&&H!=="none"){w=o[r].split(" ");u.G.push({$a:H+" "+A[r]+" "+B[r]+" / "+o[r]+" "+I[r]+" "+J[r],z:"image",xb:(new d.p(H)).next().a,Va:A[r],V:new d.Fa((new d.p(B[r])).all()),qa:I[r],pa:J[r],ra:new d.ea(w[0],w[1])})}}});return u.color||u.G[0]?u:null},Eb:function(b){var a=d.P>8,c=this.Aa,e=this.d.runtimeStyle,f=e[c.K],h=e[c.h],l=e[c.u],k,g,m,j;if(f)e[c.K]="";if(h)e[c.h]="";if(l)e[c.u]="";if(a){k=e[c.ga];g=e[c.ia];j=e[c.s];m=e[c.ma];if(k)e[c.ga]="";if(g)e[c.ia]="";if(j)e[c.s]=
+"";if(m)e[c.ma]=""}b=b.call(this);if(f)e[c.K]=f;if(h)e[c.h]=h;if(l)e[c.u]=l;if(a){if(k)e[c.ga]=k;if(g)e[c.ia]=g;if(j)e[c.s]=j;if(m)e[c.ma]=m}return b},O:d.k.X(function(){return this.Qa()||this.Eb(function(){var b=this.d.currentStyle,a=this.Aa;return b[a.h]+" "+b[a.K]+" "+b[a.u]+" "+b[a.s+"X"]+" "+b[a.s+"Y"]})}),Qa:d.k.X(function(){var b=this.d;return b.style[this.ab]||b.currentStyle.getAttribute(this.Pa)}),lc:function(b,a,c,e){var f=this.d,h=a.Z();a=h.g;h=h.f;if(b!=="border-box")if((c=c.w())&&(c=
+c.ca)){a-=c.l.c(f)+c.l.c(f);h-=c.t.c(f)+c.b.c(f)}if(b==="content-box")if(b=e.w()){a-=b.l.c(f)+b.l.c(f);h-=b.t.c(f)+b.b.c(f)}return{g:a,f:h}},yc:function(){var b=0;if(d.Ua<7){b=this.d;b=""+(b.style[d.Ka+"PngFix"]||b.currentStyle.getAttribute(d.i+"png-fix"))==="true"}return b},B:d.k.X(function(){return(this.Qa()||this.yc())&&!!this.w()})});d.fb=d.k.xa({Mc:["Top","Right","Bottom","Left"],Bc:{thin:"1px",medium:"3px",thick:"5px"},za:function(){var b={},a={},c={},e=false,f=true,h=true,l=true;this.Fb(function(){for(var k=
+this.d.currentStyle,g=0,m,j,n,p,y,s,v;g<4;g++){n=this.Mc[g];v=n.charAt(0).toLowerCase();m=a[v]=k["border"+n+"Style"];j=k["border"+n+"Color"];n=k["border"+n+"Width"];if(g>0){if(m!==p)h=false;if(j!==y)f=false;if(n!==s)l=false}p=m;y=j;s=n;c[v]=d.N(j);n=b[v]=d.m(a[v]==="none"?"0":this.Bc[n]||n);if(n.c(this.d)>0)e=true}});return e?{ca:b,ud:a,md:c,wd:l,nd:f,vd:h}:null},O:d.k.X(function(){var b=this.d,a=b.currentStyle,c;b.tagName in d.Sc&&b.offsetParent.currentStyle.borderCollapse==="collapse"||this.Fb(function(){c=
+a.borderWidth+"|"+a.borderStyle+"|"+a.borderColor});return c}),Fb:function(b){var a=this.d.runtimeStyle,c=a.borderWidth,e=a.borderColor;if(c)a.borderWidth="";if(e)a.borderColor="";b=b.call(this);if(c)a.borderWidth=c;if(e)a.borderColor=e;return b}});d.eb=d.k.xa({Pa:"border-image",ab:"borderImage",Ba:{stretch:1,round:1,repeat:1,space:1},za:function(b){var a=null,c,e,f,h,l,k,g=0,m=d.p.mb,j=m.R,n=m.S,p=m.ka;if(b){c=new d.p(b);a={};for(var y=function(i){return i&&i.e&m.Ha&&i.a==="/"},s=function(i){return i&&
+i.e&j&&i.a==="fill"},v=function(){h=c.ba(function(i){return!(i.e&(n|p))});if(s(c.next())&&!a.fill)a.fill=true;else c.n();if(y(c.next())){g++;l=c.ba(function(i){return!i.H()&&!(i.e&j&&i.a==="auto")});if(y(c.next())){g++;k=c.ba(function(i){return!i.Wa()})}}else c.n()};b=c.next();){e=b.e;f=b.a;if(e&(n|p)&&!h){c.n();v()}else if(s(b)&&!a.fill){a.fill=true;v()}else if(e&j&&this.Ba[f]&&!a.repeat){a.repeat={f:f};if(b=c.next())if(b.e&j&&this.Ba[b.a])a.repeat.cb=b.a;else c.n()}else if(e&m.URL&&!a.src)a.src=
+f;else return null}if(!a.src||!h||h.length<1||h.length>4||l&&l.length>4||g===1&&l.length<1||k&&k.length>4||g===2&&k.length<1)return null;if(!a.repeat)a.repeat={f:"stretch"};if(!a.repeat.cb)a.repeat.cb=a.repeat.f;b=function(i,q){return{t:q(i[0]),r:q(i[1]||i[0]),b:q(i[2]||i[0]),l:q(i[3]||i[1]||i[0])}};a.slice=b(h,function(i){return d.m(i.e&n?i.a+"px":i.a)});if(l&&l[0])a.ca=b(l,function(i){return i.H()?d.m(i.a):i.a});if(k&&k[0])a.sd=b(k,function(i){return i.Wa()?d.m(i.a):i.a})}return a}});d.kb=d.k.xa({za:function(b){b=
+new d.p(b);for(var a=[],c;(c=b.next())&&c.H();)a.push(d.m(c.a));return a.length>0&&a.length<5?{t:a[0],r:a[1]||a[0],b:a[2]||a[0],l:a[3]||a[1]||a[0]}:null},O:d.k.X(function(){var b=this.d,a=b.runtimeStyle,c=a.padding;if(c)a.padding="";b=b.currentStyle.padding;if(c)a.padding=c;return b})});d.la={Ya:function(b){function a(c,e,f,h){this.d=c;this.qb=e;this.C=f;this.parent=h}d.va(a.prototype,d.la,b);return a},Xa:function(){return false},Bb:d.hc,Ea:function(){this.B()?this.sb():this.j()},tc:function(){this.d.runtimeStyle.borderColor=
+"transparent"},j:function(){}};d.Mb=d.la.Ya({Ec:/^,+|,+$/g,xc:/,+/g,Ca:function(b,a){(this.La||(this.La=[]))[b]=a||void 0},Ea:function(){var b=this.La,a;if(b&&(a=b.join(",").replace(this.Ec,"").replace(this.xc,","))!==this.Rb)this.Rb=this.d.runtimeStyle.background=a},j:function(){this.d.runtimeStyle.background="";delete this.La}});d.Kb=d.la.Ya({gc:N.createElement("canvas"),U:1,Xa:function(){return this.C.M.rb()},B:function(){var b=this.C;return b.M.B()||b.v.B()},sb:function(){var b=this.C,a=b.M,c=
+a.w(),e,f,h=0,l,k;if(c){e=[];if(f=c.G)for(;l=f[h++];)if(l.z==="linear-gradient"){k=a.lc(e.qa,this.qb,b.W,b.ya);k=(l.ra||d.ea.Ib).c(this.d,k.g,k.f,k.g,k.f);e.push("url("+this.mc(l,k.g,k.f)+") "+this.Yb(l.V)+" / "+k.g+"px "+k.f+"px "+(l.pb||"")+" "+(l.qa||"")+" "+(l.pa||""))}else e.push(l.$a);if(c.color)e.push(c.color.q+" "+(c.bc||""));this.parent.Ca(this.U,e.join(","))}},Yb:function(b){return b?b.J.map(function(a){return a.a}).join(" "):"0 0"},mc:function(b,a,c){var e=this.d,f=b.Q,h=f.length,l=d.Ga.nc(e,
+a,c,b);b=l.zc;var k=this.gc,g=k.getContext("2d");l=g.createLinearGradient(l.Pc,l.Qc,l.ic,l.jc);var m=[],j,n,p;for(j=0;j<h;j++)m.push(f[j].zb?f[j].zb.c(e,b):j===0?0:j===h-1?b:null);for(j=1;j<h;j++)if(m[j]===null){n=m[j-1];e=j;do p=m[++e];while(p===null);m[j]=n+(p-n)/(e-j+1)}for(j=0;j<h;j++)l.addColorStop(m[j]/b,f[j].color.q);k.width=a;k.height=c;g.fillStyle=l;g.fillRect(0,0,a,c);return k.toDataURL()},j:function(){this.parent.Ca(this.U)}});d.Lb=d.la.Ya({u:"repeat",Ob:"stretch",Nb:"round",U:0,Xa:function(){return this.C.v.rb()},
+B:function(){return this.C.v.B()},sb:function(){var b=this,a=b.C.v.w(),c=b.C.W.w(),e=b.qb.Z(),f=a.repeat,h=f.f,l=f.cb,k=b.d,g=0;d.na.Zc(a.src,function(m){function j(R,S,W,X,Y,Z,T,t,x,C){D.push('<pattern patternUnits="userSpaceOnUse" id="pattern'+O+'" x="'+(h===i?R+W/2-x/2:R)+'" y="'+(l===i?S+X/2-C/2:S)+'" width="'+x+'" height="'+C+'"><svg width="'+x+'" height="'+C+'" viewBox="'+Y+" "+Z+" "+T+" "+t+'" preserveAspectRatio="none"><image xlink:href="'+v+'" x="0" y="0" width="'+y+'" height="'+s+'" /></svg></pattern>');
+z.push('<rect x="'+R+'" y="'+S+'" width="'+W+'" height="'+X+'" fill="url(#pattern'+O+')" />');O++}var n=e.g,p=e.f,y=m.g,s=m.f,v=b.vc(a.src,y,s),i=b.u,q=b.Ob;m=b.Nb;var u=Math.ceil,o=d.m("0"),r=a.ca||(c?c.ca:{t:o,r:o,b:o,l:o});o=r.t.c(k);var G=r.r.c(k),A=r.b.c(k);r=r.l.c(k);var B=a.slice,I=B.t.c(k),J=B.r.c(k),L=B.b.c(k);B=B.l.c(k);var H=n-r-G,w=p-o-A,Q=y-B-J,U=s-I-L,M=h===q?H:Q*o/I,E=l===q?w:U*G/J,F=h===q?H:Q*A/L;q=l===q?w:U*r/B;var D=[],z=[],O=0;if(h===m){M-=(M-(H%M||M))/u(H/M);F-=(F-(H%F||F))/u(H/
+F)}if(l===m){E-=(E-(w%E||E))/u(w/E);q-=(q-(w%q||q))/u(w/q)}m=['<svg width="'+n+'" height="'+p+'" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">'];j(0,0,r,o,0,0,B,I,r,o);j(r,0,H,o,B,0,Q,I,M,o);j(n-G,0,G,o,y-J,0,J,I,G,o);j(0,o,r,w,0,I,B,U,r,q);if(a.fill)j(r,o,H,w,B,I,Q,U,M||F||Q,q||E||U);j(n-G,o,G,w,y-J,I,J,U,G,E);j(0,p-A,r,A,0,s-L,B,L,r,A);j(r,p-A,H,A,B,s-L,Q,L,F,A);j(n-G,p-A,G,A,y-J,s-L,J,L,G,A);m.push("<defs>"+D.join("\n")+"</defs>"+z.join("\n")+"</svg>");b.parent.Ca(b.U,
+"url(data:image/svg+xml,"+escape(m.join(""))+") no-repeat border-box border-box");g&&b.parent.Ea()},b);g=1},vc:function(){var b={};return function(a,c,e){var f=b[a],h;if(!f){f=new Image;h=N.createElement("canvas");f.src=a;h.width=c;h.height=e;h.getContext("2d").drawImage(f,0,0);f=b[a]=h.toDataURL()}return f}}(),Bb:function(){if(this.B()){var b=this.d,a=b.runtimeStyle,c=this.C.v.w().ca;a.borderStyle="solid";if(c){a.borderTopWidth=c.t.c(b)+"px";a.borderRightWidth=c.r.c(b)+"px";a.borderBottomWidth=c.b.c(b)+
+"px";a.borderLeftWidth=c.l.c(b)+"px"}this.tc()}},j:function(){var b=this.d.runtimeStyle;this.parent.Ca(this.U);b.borderColor=b.borderStyle=b.borderWidth=""}});d.ib=function(){function b(i,q){i.className+=" "+q}function a(i){var q=v.slice.call(arguments,1),u=q.length;setTimeout(function(){if(i)for(;u--;)b(i,q[u])},0)}function c(i){var q=v.slice.call(arguments,1),u=q.length;setTimeout(function(){if(i)for(;u--;){var o=q[u];o=s[o]||(s[o]=new RegExp("\\b"+o+"\\b","g"));i.className=i.className.replace(o,
+"")}},0)}function e(i){function q(){if(!S){var t,x,C=d.P,P=i.currentStyle,K=P.getAttribute(h)==="true",$=P.getAttribute(k)!=="false",aa=P.getAttribute(g)!=="false";T=P.getAttribute(l);T=C>7?T!=="false":T==="true";if(!R){R=1;i.runtimeStyle.zoom=1;P=i;for(var ba=1;P=P.previousSibling;)if(P.nodeType===1){ba=0;break}ba&&b(i,p)}D.ua();if(K&&(x=D.Z())&&(t=N.documentElement||N.body)&&(x.y>t.clientHeight||x.x>t.clientWidth||x.y+x.f<0||x.x+x.g<0)){if(!Y){Y=1;d.Ja.I(q)}}else{S=1;Y=R=0;d.Ja.aa(q);if(C===9){z=
+{M:new d.db(i),v:new d.eb(i),W:new d.fb(i),ya:new d.kb(i)};O=[z.M,z.W,z.v,z.ya];F=new d.Mb(i,D,z);E=[new d.Kb(i,D,z,F),new d.Lb(i,D,z,F)]}else{z={M:new d.db(i),W:new d.fb(i),v:new d.eb(i),Zb:new d.bd(i),$b:new d.ed(i),ya:new d.kb(i),Xc:new d.jd(i)};O=[z.M,z.W,z.v,z.Zb,z.$b,z.ya,z.Xc];F=new d.hd(i,D,z);E=[new d.dd(i,D,z,F),new d.$c(i,D,z,F),new d.cd(i,D,z,F),new d.ad(i,D,z,F)];i.tagName==="IMG"&&E.push(new d.fd(i,D,z,F));F.ld=E}if(t=i.currentStyle.getAttribute(d.i+"watch-ancestors")){t=parseInt(t,
+10);x=0;for(K=i.parentNode;K&&(t==="NaN"||x++<t);){w(K,"onpropertychange",H);w(K,"onmouseenter",G);w(K,"onmouseleave",A);w(K,"onmousedown",B);if(K.tagName in d.ub){w(K,"onfocus",J);w(K,"onblur",L)}K=K.parentNode}}if(T){d.ha.I(o);d.ha.Kc()}o(0,1)}if(!W){W=1;C<9&&w(i,"onmove",u);w(i,"onresize",u);w(i,"onpropertychange",r);aa&&w(i,"onmouseenter",G);if(aa||$)w(i,"onmouseleave",A);$&&w(i,"onmousedown",B);if(i.tagName in d.ub){w(i,"onfocus",J);w(i,"onblur",L)}d.ja.I(u);d.D.I(Q)}D.Da()}}function u(){D&&
+D.rc()&&o()}function o(t,x){if(!Z)if(S){D.ua();for(var C=O.length;C--;)O[C].ua();C=0;for(var P=E.length,K=D.Nc();C<P;C++)E[C].Bb();for(C=0;C<P;C++)if(x||K||t&&E[C].Xa())E[C].Ea();if(x||K||t||D.Gc())F.Ea();for(t=O.length;t--;)O[t].Da();D.Da()}else R||q()}function r(){S&&!(event&&event.propertyName in y)&&o(1)}function G(){a(i,m)}function A(){c(i,m,j)}function B(){a(i,j);d.Ia.I(I)}function I(){c(i,j);d.Ia.aa(I)}function J(){a(i,n)}function L(){c(i,n)}function H(){var t=event.propertyName;if(t==="className"||
+t==="id"||t.indexOf("style.")===0)r()}function w(t,x,C){t.attachEvent(x,C);X.push([t,x,C])}function Q(){if(W){for(var t=X.length,x;t--;){x=X[t];x[0].detachEvent(x[1],x[2])}d.D.aa(Q);W=0;X=[]}}function U(){if(!Z){var t,x;Q();Z=1;if(E){t=0;for(x=E.length;t<x;t++){E[t].pd=1;E[t].j()}}F.j();T&&d.ha.aa(o);d.ja.aa(o);E=F=D=z=O=i=null;M.tb=M=0}}var M=this,E,F,D=new d.gb(i),z,O,R,S,W,X=[],Y,Z,T;M.tb=i;M.wc=q;M.j=U}var f={},h=d.i+"lazy-init",l=d.i+"poll",k=d.i+"track-active",g=d.i+"track-hover",m=d.fa+"hover",
+j=d.fa+"active",n=d.fa+"focus",p=d.fa+"first-child",y={background:1,bgColor:1,display:1},s={},v=[];e.oc=function(i){var q=i.uniqueID;return f[q]||(f[q]=new e(i))};e.j=function(i){i=i.uniqueID;var q=f[i];if(q){q.j();delete f[i]}};e.od=function(){var i=[],q;if(f){for(var u in f)if(f.hasOwnProperty(u)){q=f[u];i.push(q.tb);q.j()}f={}}return i};return e}();d.version="2.0beta1";d.supportsVML=d.Db;d.attach=function(b){if(d.P===9||d.P<9&&d.Db)d.ib.oc(b).wc()};d.detach=function(b){d.ib.j(b)}})(window,document);
diff --git a/CubeIT/js/ping.js b/CubeIT/js/ping.js
new file mode 100644 (file)
index 0000000..558ecc3
--- /dev/null
@@ -0,0 +1,15 @@
+registerLoader(load_ping);
+
+function load_ping() {
+       $("a.ping").click(function() {
+               var title = $(this).attr('title');
+               var href = $(this).attr('rel');
+               if (title != '' && title != undefined && title.search(/\?/) > -1) {
+                       if (!window.confirm(title)) {
+                               return false;
+                       }
+               }
+               $.ping(SITE_PATH + 'ajax/' + href);
+               return false;
+       });
+}
diff --git a/CubeIT/js/preventOrphan.js b/CubeIT/js/preventOrphan.js
new file mode 100644 (file)
index 0000000..9d96b74
--- /dev/null
@@ -0,0 +1,47 @@
+(function ($) {
+    function JQpreventOrphan(element) {
+        this.element = element;
+        this.init();
+    }
+
+    JQpreventOrphan.prototype = {
+        init: function () {
+            var $this = this;
+            $(window).on('cubeitresize', function () {
+                $this.prevent();
+            });
+            this.prevent();
+        },
+        prevent: function () {
+            if (this.element.children().length < 2) {
+                return;
+            }
+            this.element.children('.preventOrphanBreak').remove();
+            var penultimate = this.element.children().eq(-2);
+            var last = this.element.children().eq(-1);
+
+            var op = $(penultimate).offset();
+            var ol = $(last).offset();
+
+            if (ol.top > op.top) {
+                // Two elements are not on the same line
+                // So we add a line break before the penultimate element
+                $(penultimate).before('<div class="preventOrphanBreak"></div>');
+            }
+            this.element.trigger('cubeitpreventorphan');
+        }
+
+    };
+
+    jQuery.fn.preventOrphan = function () {
+        return this.each(function () {
+            var $this = $(this);
+            if ($(this).data('preventOrphan') === undefined) {
+                $(this).data('preventOrphan', new JQpreventOrphan($this));
+            } else {
+                $(this).data('preventOrphan').prevent();
+            }
+        })
+    };
+})(jQuery);
+
diff --git a/CubeIT/js/raphael/raphael.js b/CubeIT/js/raphael/raphael.js
new file mode 100644 (file)
index 0000000..95f6364
--- /dev/null
@@ -0,0 +1,8111 @@
+// ┌────────────────────────────────────────────────────────────────────┐ \\
+// │ Raphaël 2.1.2 - JavaScript Vector Library                          │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright © 2008-2012 Dmitry Baranovskiy (http://raphaeljs.com)    │ \\
+// │ Copyright © 2008-2012 Sencha Labs (http://sencha.com)              │ \\
+// ├────────────────────────────────────────────────────────────────────┤ \\
+// │ Licensed under the MIT (http://raphaeljs.com/license.html) license.│ \\
+// └────────────────────────────────────────────────────────────────────┘ \\
+// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+// http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// ┌────────────────────────────────────────────────────────────┐ \\
+// │ Eve 0.4.2 - JavaScript Events Library                      │ \\
+// ├────────────────────────────────────────────────────────────┤ \\
+// │ Author Dmitry Baranovskiy (http://dmitry.baranovskiy.com/) │ \\
+// └────────────────────────────────────────────────────────────┘ \\
+
+(function (glob) {
+    var version = "0.4.2",
+        has = "hasOwnProperty",
+        separator = /[\.\/]/,
+        wildcard = "*",
+        fun = function () {},
+        numsort = function (a, b) {
+            return a - b;
+        },
+        current_event,
+        stop,
+        events = {n: {}},
+    /*\
+     * eve
+     [ method ]
+
+     * Fires event with given `name`, given scope and other parameters.
+
+     > Arguments
+
+     - name (string) name of the *event*, dot (`.`) or slash (`/`) separated
+     - scope (object) context for the event handlers
+     - varargs (...) the rest of arguments will be sent to event handlers
+
+     = (object) array of returned values from the listeners
+    \*/
+        eve = function (name, scope) {
+                       name = String(name);
+            var e = events,
+                oldstop = stop,
+                args = Array.prototype.slice.call(arguments, 2),
+                listeners = eve.listeners(name),
+                z = 0,
+                f = false,
+                l,
+                indexed = [],
+                queue = {},
+                out = [],
+                ce = current_event,
+                errors = [];
+            current_event = name;
+            stop = 0;
+            for (var i = 0, ii = listeners.length; i < ii; i++) if ("zIndex" in listeners[i]) {
+                indexed.push(listeners[i].zIndex);
+                if (listeners[i].zIndex < 0) {
+                    queue[listeners[i].zIndex] = listeners[i];
+                }
+            }
+            indexed.sort(numsort);
+            while (indexed[z] < 0) {
+                l = queue[indexed[z++]];
+                out.push(l.apply(scope, args));
+                if (stop) {
+                    stop = oldstop;
+                    return out;
+                }
+            }
+            for (i = 0; i < ii; i++) {
+                l = listeners[i];
+                if ("zIndex" in l) {
+                    if (l.zIndex == indexed[z]) {
+                        out.push(l.apply(scope, args));
+                        if (stop) {
+                            break;
+                        }
+                        do {
+                            z++;
+                            l = queue[indexed[z]];
+                            l && out.push(l.apply(scope, args));
+                            if (stop) {
+                                break;
+                            }
+                        } while (l)
+                    } else {
+                        queue[l.zIndex] = l;
+                    }
+                } else {
+                    out.push(l.apply(scope, args));
+                    if (stop) {
+                        break;
+                    }
+                }
+            }
+            stop = oldstop;
+            current_event = ce;
+            return out.length ? out : null;
+        };
+               // Undocumented. Debug only.
+               eve._events = events;
+    /*\
+     * eve.listeners
+     [ method ]
+
+     * Internal method which gives you array of all event handlers that will be triggered by the given `name`.
+
+     > Arguments
+
+     - name (string) name of the event, dot (`.`) or slash (`/`) separated
+
+     = (array) array of event handlers
+    \*/
+    eve.listeners = function (name) {
+        var names = name.split(separator),
+            e = events,
+            item,
+            items,
+            k,
+            i,
+            ii,
+            j,
+            jj,
+            nes,
+            es = [e],
+            out = [];
+        for (i = 0, ii = names.length; i < ii; i++) {
+            nes = [];
+            for (j = 0, jj = es.length; j < jj; j++) {
+                e = es[j].n;
+                items = [e[names[i]], e[wildcard]];
+                k = 2;
+                while (k--) {
+                    item = items[k];
+                    if (item) {
+                        nes.push(item);
+                        out = out.concat(item.f || []);
+                    }
+                }
+            }
+            es = nes;
+        }
+        return out;
+    };
+    
+    /*\
+     * eve.on
+     [ method ]
+     **
+     * Binds given event handler with a given name. You can use wildcards “`*`” for the names:
+     | eve.on("*.under.*", f);
+     | eve("mouse.under.floor"); // triggers f
+     * Use @eve to trigger the listener.
+     **
+     > Arguments
+     **
+     - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards
+     - f (function) event handler function
+     **
+     = (function) returned function accepts a single numeric parameter that represents z-index of the handler. It is an optional feature and only used when you need to ensure that some subset of handlers will be invoked in a given order, despite of the order of assignment. 
+     > Example:
+     | eve.on("mouse", eatIt)(2);
+     | eve.on("mouse", scream);
+     | eve.on("mouse", catchIt)(1);
+     * This will ensure that `catchIt()` function will be called before `eatIt()`.
+        *
+     * If you want to put your handler before non-indexed handlers, specify a negative value.
+     * Note: I assume most of the time you don’t need to worry about z-index, but it’s nice to have this feature “just in case”.
+    \*/
+    eve.on = function (name, f) {
+               name = String(name);
+               if (typeof f != "function") {
+                       return function () {};
+               }
+        var names = name.split(separator),
+            e = events;
+        for (var i = 0, ii = names.length; i < ii; i++) {
+            e = e.n;
+            e = e.hasOwnProperty(names[i]) && e[names[i]] || (e[names[i]] = {n: {}});
+        }
+        e.f = e.f || [];
+        for (i = 0, ii = e.f.length; i < ii; i++) if (e.f[i] == f) {
+            return fun;
+        }
+        e.f.push(f);
+        return function (zIndex) {
+            if (+zIndex == +zIndex) {
+                f.zIndex = +zIndex;
+            }
+        };
+    };
+    /*\
+     * eve.f
+     [ method ]
+     **
+     * Returns function that will fire given event with optional arguments.
+        * Arguments that will be passed to the result function will be also
+        * concated to the list of final arguments.
+        | el.onclick = eve.f("click", 1, 2);
+        | eve.on("click", function (a, b, c) {
+        |     console.log(a, b, c); // 1, 2, [event object]
+        | });
+     > Arguments
+        - event (string) event name
+        - varargs (…) and any other arguments
+        = (function) possible event handler function
+    \*/
+       eve.f = function (event) {
+               var attrs = [].slice.call(arguments, 1);
+               return function () {
+                       eve.apply(null, [event, null].concat(attrs).concat([].slice.call(arguments, 0)));
+               };
+       };
+    /*\
+     * eve.stop
+     [ method ]
+     **
+     * Is used inside an event handler to stop the event, preventing any subsequent listeners from firing.
+    \*/
+    eve.stop = function () {
+        stop = 1;
+    };
+    /*\
+     * eve.nt
+     [ method ]
+     **
+     * Could be used inside event handler to figure out actual name of the event.
+     **
+     > Arguments
+     **
+     - subname (string) #optional subname of the event
+     **
+     = (string) name of the event, if `subname` is not specified
+     * or
+     = (boolean) `true`, if current event’s name contains `subname`
+    \*/
+    eve.nt = function (subname) {
+        if (subname) {
+            return new RegExp("(?:\\.|\\/|^)" + subname + "(?:\\.|\\/|$)").test(current_event);
+        }
+        return current_event;
+    };
+    /*\
+     * eve.nts
+     [ method ]
+     **
+     * Could be used inside event handler to figure out actual name of the event.
+     **
+     **
+     = (array) names of the event
+    \*/
+    eve.nts = function () {
+        return current_event.split(separator);
+    };
+    /*\
+     * eve.off
+     [ method ]
+     **
+     * Removes given function from the list of event listeners assigned to given name.
+        * If no arguments specified all the events will be cleared.
+     **
+     > Arguments
+     **
+     - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards
+     - f (function) event handler function
+    \*/
+    /*\
+     * eve.unbind
+     [ method ]
+     **
+     * See @eve.off
+    \*/
+    eve.off = eve.unbind = function (name, f) {
+               if (!name) {
+                   eve._events = events = {n: {}};
+                       return;
+               }
+        var names = name.split(separator),
+            e,
+            key,
+            splice,
+            i, ii, j, jj,
+            cur = [events];
+        for (i = 0, ii = names.length; i < ii; i++) {
+            for (j = 0; j < cur.length; j += splice.length - 2) {
+                splice = [j, 1];
+                e = cur[j].n;
+                if (names[i] != wildcard) {
+                    if (e[names[i]]) {
+                        splice.push(e[names[i]]);
+                    }
+                } else {
+                    for (key in e) if (e[has](key)) {
+                        splice.push(e[key]);
+                    }
+                }
+                cur.splice.apply(cur, splice);
+            }
+        }
+        for (i = 0, ii = cur.length; i < ii; i++) {
+            e = cur[i];
+            while (e.n) {
+                if (f) {
+                    if (e.f) {
+                        for (j = 0, jj = e.f.length; j < jj; j++) if (e.f[j] == f) {
+                            e.f.splice(j, 1);
+                            break;
+                        }
+                        !e.f.length && delete e.f;
+                    }
+                    for (key in e.n) if (e.n[has](key) && e.n[key].f) {
+                        var funcs = e.n[key].f;
+                        for (j = 0, jj = funcs.length; j < jj; j++) if (funcs[j] == f) {
+                            funcs.splice(j, 1);
+                            break;
+                        }
+                        !funcs.length && delete e.n[key].f;
+                    }
+                } else {
+                    delete e.f;
+                    for (key in e.n) if (e.n[has](key) && e.n[key].f) {
+                        delete e.n[key].f;
+                    }
+                }
+                e = e.n;
+            }
+        }
+    };
+    /*\
+     * eve.once
+     [ method ]
+     **
+     * Binds given event handler with a given name to only run once then unbind itself.
+     | eve.once("login", f);
+     | eve("login"); // triggers f
+     | eve("login"); // no listeners
+     * Use @eve to trigger the listener.
+     **
+     > Arguments
+     **
+     - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards
+     - f (function) event handler function
+     **
+     = (function) same return function as @eve.on
+    \*/
+    eve.once = function (name, f) {
+        var f2 = function () {
+            eve.unbind(name, f2);
+            return f.apply(this, arguments);
+        };
+        return eve.on(name, f2);
+    };
+    /*\
+     * eve.version
+     [ property (string) ]
+     **
+     * Current version of the library.
+    \*/
+    eve.version = version;
+    eve.toString = function () {
+        return "You are running Eve " + version;
+    };
+    (typeof module != "undefined" && module.exports) ? (module.exports = eve) : (typeof define != "undefined" ? (define("eve", [], function() { return eve; })) : (glob.eve = eve));
+})(this);
+// ┌─────────────────────────────────────────────────────────────────────┐ \\
+// │ "Raphaël 2.1.2" - JavaScript Vector Library                         │ \\
+// ├─────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\
+// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\
+// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\
+// └─────────────────────────────────────────────────────────────────────┘ \\
+
+(function (glob, factory) {
+    // AMD support
+    if (typeof define === "function" && define.amd) {
+        // Define as an anonymous module
+        define(["eve"], function( eve ) {
+            return factory(glob, eve);
+        });
+    } else {
+        // Browser globals (glob is window)
+        // Raphael adds itself to window
+        factory(glob, glob.eve);
+    }
+}(this, function (window, eve) {
+    /*\
+     * Raphael
+     [ method ]
+     **
+     * Creates a canvas object on which to draw.
+     * You must do this first, as all future calls to drawing methods
+     * from this instance will be bound to this canvas.
+     > Parameters
+     **
+     - container (HTMLElement|string) DOM element or its ID which is going to be a parent for drawing surface
+     - width (number)
+     - height (number)
+     - callback (function) #optional callback function which is going to be executed in the context of newly created paper
+     * or
+     - x (number)
+     - y (number)
+     - width (number)
+     - height (number)
+     - callback (function) #optional callback function which is going to be executed in the context of newly created paper
+     * or
+     - all (array) (first 3 or 4 elements in the array are equal to [containerID, width, height] or [x, y, width, height]. The rest are element descriptions in format {type: type, <attributes>}). See @Paper.add.
+     - callback (function) #optional callback function which is going to be executed in the context of newly created paper
+     * or
+     - onReadyCallback (function) function that is going to be called on DOM ready event. You can also subscribe to this event via Eve’s “DOMLoad” event. In this case method returns `undefined`.
+     = (object) @Paper
+     > Usage
+     | // Each of the following examples create a canvas
+     | // that is 320px wide by 200px high.
+     | // Canvas is created at the viewport’s 10,50 coordinate.
+     | var paper = Raphael(10, 50, 320, 200);
+     | // Canvas is created at the top left corner of the #notepad element
+     | // (or its top right corner in dir="rtl" elements)
+     | var paper = Raphael(document.getElementById("notepad"), 320, 200);
+     | // Same as above
+     | var paper = Raphael("notepad", 320, 200);
+     | // Image dump
+     | var set = Raphael(["notepad", 320, 200, {
+     |     type: "rect",
+     |     x: 10,
+     |     y: 10,
+     |     width: 25,
+     |     height: 25,
+     |     stroke: "#f00"
+     | }, {
+     |     type: "text",
+     |     x: 30,
+     |     y: 40,
+     |     text: "Dump"
+     | }]);
+    \*/
+    function R(first) {
+        if (R.is(first, "function")) {
+            return loaded ? first() : eve.on("raphael.DOMload", first);
+        } else if (R.is(first, array)) {
+            return R._engine.create[apply](R, first.splice(0, 3 + R.is(first[0], nu))).add(first);
+        } else {
+            var args = Array.prototype.slice.call(arguments, 0);
+            if (R.is(args[args.length - 1], "function")) {
+                var f = args.pop();
+                return loaded ? f.call(R._engine.create[apply](R, args)) : eve.on("raphael.DOMload", function () {
+                    f.call(R._engine.create[apply](R, args));
+                });
+            } else {
+                return R._engine.create[apply](R, arguments);
+            }
+        }
+    }
+    R.version = "2.1.2";
+    R.eve = eve;
+    var loaded,
+        separator = /[, ]+/,
+        elements = {circle: 1, rect: 1, path: 1, ellipse: 1, text: 1, image: 1},
+        formatrg = /\{(\d+)\}/g,
+        proto = "prototype",
+        has = "hasOwnProperty",
+        g = {
+            doc: document,
+            win: window
+        },
+        oldRaphael = {
+            was: Object.prototype[has].call(g.win, "Raphael"),
+            is: g.win.Raphael
+        },
+        Paper = function () {
+            /*\
+             * Paper.ca
+             [ property (object) ]
+             **
+             * Shortcut for @Paper.customAttributes
+            \*/
+            /*\
+             * Paper.customAttributes
+             [ property (object) ]
+             **
+             * If you have a set of attributes that you would like to represent
+             * as a function of some number you can do it easily with custom attributes:
+             > Usage
+             | paper.customAttributes.hue = function (num) {
+             |     num = num % 1;
+             |     return {fill: "hsb(" + num + ", 0.75, 1)"};
+             | };
+             | // Custom attribute “hue” will change fill
+             | // to be given hue with fixed saturation and brightness.
+             | // Now you can use it like this:
+             | var c = paper.circle(10, 10, 10).attr({hue: .45});
+             | // or even like this:
+             | c.animate({hue: 1}, 1e3);
+             | 
+             | // You could also create custom attribute
+             | // with multiple parameters:
+             | paper.customAttributes.hsb = function (h, s, b) {
+             |     return {fill: "hsb(" + [h, s, b].join(",") + ")"};
+             | };
+             | c.attr({hsb: "0.5 .8 1"});
+             | c.animate({hsb: [1, 0, 0.5]}, 1e3);
+            \*/
+            this.ca = this.customAttributes = {};
+        },
+        paperproto,
+        appendChild = "appendChild",
+        apply = "apply",
+        concat = "concat",
+        supportsTouch = ('ontouchstart' in g.win) || g.win.DocumentTouch && g.doc instanceof DocumentTouch, //taken from Modernizr touch test
+        E = "",
+        S = " ",
+        Str = String,
+        split = "split",
+        events = "click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[split](S),
+        touchMap = {
+            mousedown: "touchstart",
+            mousemove: "touchmove",
+            mouseup: "touchend"
+        },
+        lowerCase = Str.prototype.toLowerCase,
+        math = Math,
+        mmax = math.max,
+        mmin = math.min,
+        abs = math.abs,
+        pow = math.pow,
+        PI = math.PI,
+        nu = "number",
+        string = "string",
+        array = "array",
+        toString = "toString",
+        fillString = "fill",
+        objectToString = Object.prototype.toString,
+        paper = {},
+        push = "push",
+        ISURL = R._ISURL = /^url\(['"]?([^\)]+?)['"]?\)$/i,
+        colourRegExp = /^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i,
+        isnan = {"NaN": 1, "Infinity": 1, "-Infinity": 1},
+        bezierrg = /^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,
+        round = math.round,
+        setAttribute = "setAttribute",
+        toFloat = parseFloat,
+        toInt = parseInt,
+        upperCase = Str.prototype.toUpperCase,
+        availableAttrs = R._availableAttrs = {
+            "arrow-end": "none",
+            "arrow-start": "none",
+            blur: 0,
+            "clip-rect": "0 0 1e9 1e9",
+            cursor: "default",
+            cx: 0,
+            cy: 0,
+            fill: "#fff",
+            "fill-opacity": 1,
+            font: '10px "Arial"',
+            "font-family": '"Arial"',
+            "font-size": "10",
+            "font-style": "normal",
+            "font-weight": 400,
+            gradient: 0,
+            height: 0,
+            href: "http://raphaeljs.com/",
+            "letter-spacing": 0,
+            opacity: 1,
+            path: "M0,0",
+            r: 0,
+            rx: 0,
+            ry: 0,
+            src: "",
+            stroke: "#000",
+            "stroke-dasharray": "",
+            "stroke-linecap": "butt",
+            "stroke-linejoin": "butt",
+            "stroke-miterlimit": 0,
+            "stroke-opacity": 1,
+            "stroke-width": 1,
+            target: "_blank",
+            "text-anchor": "middle",
+            title: "Raphael",
+            transform: "",
+            width: 0,
+            x: 0,
+            y: 0
+        },
+        availableAnimAttrs = R._availableAnimAttrs = {
+            blur: nu,
+            "clip-rect": "csv",
+            cx: nu,
+            cy: nu,
+            fill: "colour",
+            "fill-opacity": nu,
+            "font-size": nu,
+            height: nu,
+            opacity: nu,
+            path: "path",
+            r: nu,
+            rx: nu,
+            ry: nu,
+            stroke: "colour",
+            "stroke-opacity": nu,
+            "stroke-width": nu,
+            transform: "transform",
+            width: nu,
+            x: nu,
+            y: nu
+        },
+        whitespace = /[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]/g,
+        commaSpaces = /[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,
+        hsrg = {hs: 1, rg: 1},
+        p2s = /,?([achlmqrstvxz]),?/gi,
+        pathCommand = /([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,
+        tCommand = /([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,
+        pathValues = /(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/ig,
+        radial_gradient = R._radial_gradient = /^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,
+        eldata = {},
+        sortByKey = function (a, b) {
+            return a.key - b.key;
+        },
+        sortByNumber = function (a, b) {
+            return toFloat(a) - toFloat(b);
+        },
+        fun = function () {},
+        pipe = function (x) {
+            return x;
+        },
+        rectPath = R._rectPath = function (x, y, w, h, r) {
+            if (r) {
+                return [["M", x + r, y], ["l", w - r * 2, 0], ["a", r, r, 0, 0, 1, r, r], ["l", 0, h - r * 2], ["a", r, r, 0, 0, 1, -r, r], ["l", r * 2 - w, 0], ["a", r, r, 0, 0, 1, -r, -r], ["l", 0, r * 2 - h], ["a", r, r, 0, 0, 1, r, -r], ["z"]];
+            }
+            return [["M", x, y], ["l", w, 0], ["l", 0, h], ["l", -w, 0], ["z"]];
+        },
+        ellipsePath = function (x, y, rx, ry) {
+            if (ry == null) {
+                ry = rx;
+            }
+            return [["M", x, y], ["m", 0, -ry], ["a", rx, ry, 0, 1, 1, 0, 2 * ry], ["a", rx, ry, 0, 1, 1, 0, -2 * ry], ["z"]];
+        },
+        getPath = R._getPath = {
+            path: function (el) {
+                return el.attr("path");
+            },
+            circle: function (el) {
+                var a = el.attrs;
+                return ellipsePath(a.cx, a.cy, a.r);
+            },
+            ellipse: function (el) {
+                var a = el.attrs;
+                return ellipsePath(a.cx, a.cy, a.rx, a.ry);
+            },
+            rect: function (el) {
+                var a = el.attrs;
+                return rectPath(a.x, a.y, a.width, a.height, a.r);
+            },
+            image: function (el) {
+                var a = el.attrs;
+                return rectPath(a.x, a.y, a.width, a.height);
+            },
+            text: function (el) {
+                var bbox = el._getBBox();
+                return rectPath(bbox.x, bbox.y, bbox.width, bbox.height);
+            },
+            set : function(el) {
+                var bbox = el._getBBox();
+                return rectPath(bbox.x, bbox.y, bbox.width, bbox.height);
+            }
+        },
+        /*\
+         * Raphael.mapPath
+         [ method ]
+         **
+         * Transform the path string with given matrix.
+         > Parameters
+         - path (string) path string
+         - matrix (object) see @Matrix
+         = (string) transformed path string
+        \*/
+        mapPath = R.mapPath = function (path, matrix) {
+            if (!matrix) {
+                return path;
+            }
+            var x, y, i, j, ii, jj, pathi;
+            path = path2curve(path);
+            for (i = 0, ii = path.length; i < ii; i++) {
+                pathi = path[i];
+                for (j = 1, jj = pathi.length; j < jj; j += 2) {
+                    x = matrix.x(pathi[j], pathi[j + 1]);
+                    y = matrix.y(pathi[j], pathi[j + 1]);
+                    pathi[j] = x;
+                    pathi[j + 1] = y;
+                }
+            }
+            return path;
+        };
+
+    R._g = g;
+    /*\
+     * Raphael.type
+     [ property (string) ]
+     **
+     * Can be “SVG”, “VML” or empty, depending on browser support.
+    \*/
+    R.type = (g.win.SVGAngle || g.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") ? "SVG" : "VML");
+    if (R.type == "VML") {
+        var d = g.doc.createElement("div"),
+            b;
+        d.innerHTML = '<v:shape adj="1"/>';
+        b = d.firstChild;
+        b.style.behavior = "url(#default#VML)";
+        if (!(b && typeof b.adj == "object")) {
+            return (R.type = E);
+        }
+        d = null;
+    }
+    /*\
+     * Raphael.svg
+     [ property (boolean) ]
+     **
+     * `true` if browser supports SVG.
+    \*/
+    /*\
+     * Raphael.vml
+     [ property (boolean) ]
+     **
+     * `true` if browser supports VML.
+    \*/
+    R.svg = !(R.vml = R.type == "VML");
+    R._Paper = Paper;
+    /*\
+     * Raphael.fn
+     [ property (object) ]
+     **
+     * You can add your own method to the canvas. For example if you want to draw a pie chart,
+     * you can create your own pie chart function and ship it as a Raphaël plugin. To do this
+     * you need to extend the `Raphael.fn` object. You should modify the `fn` object before a
+     * Raphaël instance is created, otherwise it will take no effect. Please note that the
+     * ability for namespaced plugins was removed in Raphael 2.0. It is up to the plugin to
+     * ensure any namespacing ensures proper context.
+     > Usage
+     | Raphael.fn.arrow = function (x1, y1, x2, y2, size) {
+     |     return this.path( ... );
+     | };
+     | // or create namespace
+     | Raphael.fn.mystuff = {
+     |     arrow: function () {…},
+     |     star: function () {…},
+     |     // etc…
+     | };
+     | var paper = Raphael(10, 10, 630, 480);
+     | // then use it
+     | paper.arrow(10, 10, 30, 30, 5).attr({fill: "#f00"});
+     | paper.mystuff.arrow();
+     | paper.mystuff.star();
+    \*/
+    R.fn = paperproto = Paper.prototype = R.prototype;
+    R._id = 0;
+    R._oid = 0;
+    /*\
+     * Raphael.is
+     [ method ]
+     **
+     * Handfull replacement for `typeof` operator.
+     > Parameters
+     - o (…) any object or primitive
+     - type (string) name of the type, i.e. “string”, “function”, “number”, etc.
+     = (boolean) is given value is of given type
+    \*/
+    R.is = function (o, type) {
+        type = lowerCase.call(type);
+        if (type == "finite") {
+            return !isnan[has](+o);
+        }
+        if (type == "array") {
+            return o instanceof Array;
+        }
+        return  (type == "null" && o === null) ||
+                (type == typeof o && o !== null) ||
+                (type == "object" && o === Object(o)) ||
+                (type == "array" && Array.isArray && Array.isArray(o)) ||
+                objectToString.call(o).slice(8, -1).toLowerCase() == type;
+    };
+
+    function clone(obj) {
+        if (typeof obj == "function" || Object(obj) !== obj) {
+            return obj;
+        }
+        var res = new obj.constructor;
+        for (var key in obj) if (obj[has](key)) {
+            res[key] = clone(obj[key]);
+        }
+        return res;
+    }
+
+    /*\
+     * Raphael.angle
+     [ method ]
+     **
+     * Returns angle between two or three points
+     > Parameters
+     - x1 (number) x coord of first point
+     - y1 (number) y coord of first point
+     - x2 (number) x coord of second point
+     - y2 (number) y coord of second point
+     - x3 (number) #optional x coord of third point
+     - y3 (number) #optional y coord of third point
+     = (number) angle in degrees.
+    \*/
+    R.angle = function (x1, y1, x2, y2, x3, y3) {
+        if (x3 == null) {
+            var x = x1 - x2,
+                y = y1 - y2;
+            if (!x && !y) {
+                return 0;
+            }
+            return (180 + math.atan2(-y, -x) * 180 / PI + 360) % 360;
+        } else {
+            return R.angle(x1, y1, x3, y3) - R.angle(x2, y2, x3, y3);
+        }
+    };
+    /*\
+     * Raphael.rad
+     [ method ]
+     **
+     * Transform angle to radians
+     > Parameters
+     - deg (number) angle in degrees
+     = (number) angle in radians.
+    \*/
+    R.rad = function (deg) {
+        return deg % 360 * PI / 180;
+    };
+    /*\
+     * Raphael.deg
+     [ method ]
+     **
+     * Transform angle to degrees
+     > Parameters
+     - deg (number) angle in radians
+     = (number) angle in degrees.
+    \*/
+    R.deg = function (rad) {
+        return rad * 180 / PI % 360;
+    };
+    /*\
+     * Raphael.snapTo
+     [ method ]
+     **
+     * Snaps given value to given grid.
+     > Parameters
+     - values (array|number) given array of values or step of the grid
+     - value (number) value to adjust
+     - tolerance (number) #optional tolerance for snapping. Default is `10`.
+     = (number) adjusted value.
+    \*/
+    R.snapTo = function (values, value, tolerance) {
+        tolerance = R.is(tolerance, "finite") ? tolerance : 10;
+        if (R.is(values, array)) {
+            var i = values.length;
+            while (i--) if (abs(values[i] - value) <= tolerance) {
+                return values[i];
+            }
+        } else {
+            values = +values;
+            var rem = value % values;
+            if (rem < tolerance) {
+                return value - rem;
+            }
+            if (rem > values - tolerance) {
+                return value - rem + values;
+            }
+        }
+        return value;
+    };
+
+    /*\
+     * Raphael.createUUID
+     [ method ]
+     **
+     * Returns RFC4122, version 4 ID
+    \*/
+    var createUUID = R.createUUID = (function (uuidRegEx, uuidReplacer) {
+        return function () {
+            return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(uuidRegEx, uuidReplacer).toUpperCase();
+        };
+    })(/[xy]/g, function (c) {
+        var r = math.random() * 16 | 0,
+            v = c == "x" ? r : (r & 3 | 8);
+        return v.toString(16);
+    });
+
+    /*\
+     * Raphael.setWindow
+     [ method ]
+     **
+     * Used when you need to draw in `&lt;iframe>`. Switched window to the iframe one.
+     > Parameters
+     - newwin (window) new window object
+    \*/
+    R.setWindow = function (newwin) {
+        eve("raphael.setWindow", R, g.win, newwin);
+        g.win = newwin;
+        g.doc = g.win.document;
+        if (R._engine.initWin) {
+            R._engine.initWin(g.win);
+        }
+    };
+    var toHex = function (color) {
+        if (R.vml) {
+            // http://dean.edwards.name/weblog/2009/10/convert-any-colour-value-to-hex-in-msie/
+            var trim = /^\s+|\s+$/g;
+            var bod;
+            try {
+                var docum = new ActiveXObject("htmlfile");
+                docum.write("<body>");
+                docum.close();
+                bod = docum.body;
+            } catch(e) {
+                bod = createPopup().document.body;
+            }
+            var range = bod.createTextRange();
+            toHex = cacher(function (color) {
+                try {
+                    bod.style.color = Str(color).replace(trim, E);
+                    var value = range.queryCommandValue("ForeColor");
+                    value = ((value & 255) << 16) | (value & 65280) | ((value & 16711680) >>> 16);
+                    return "#" + ("000000" + value.toString(16)).slice(-6);
+                } catch(e) {
+                    return "none";
+                }
+            });
+        } else {
+            var i = g.doc.createElement("i");
+            i.title = "Rapha\xebl Colour Picker";
+            i.style.display = "none";
+            g.doc.body.appendChild(i);
+            toHex = cacher(function (color) {
+                i.style.color = color;
+                return g.doc.defaultView.getComputedStyle(i, E).getPropertyValue("color");
+            });
+        }
+        return toHex(color);
+    },
+    hsbtoString = function () {
+        return "hsb(" + [this.h, this.s, this.b] + ")";
+    },
+    hsltoString = function () {
+        return "hsl(" + [this.h, this.s, this.l] + ")";
+    },
+    rgbtoString = function () {
+        return this.hex;
+    },
+    prepareRGB = function (r, g, b) {
+        if (g == null && R.is(r, "object") && "r" in r && "g" in r && "b" in r) {
+            b = r.b;
+            g = r.g;
+            r = r.r;
+        }
+        if (g == null && R.is(r, string)) {
+            var clr = R.getRGB(r);
+            r = clr.r;
+            g = clr.g;
+            b = clr.b;
+        }
+        if (r > 1 || g > 1 || b > 1) {
+            r /= 255;
+            g /= 255;
+            b /= 255;
+        }
+
+        return [r, g, b];
+    },
+    packageRGB = function (r, g, b, o) {
+        r *= 255;
+        g *= 255;
+        b *= 255;
+        var rgb = {
+            r: r,
+            g: g,
+            b: b,
+            hex: R.rgb(r, g, b),
+            toString: rgbtoString
+        };
+        R.is(o, "finite") && (rgb.opacity = o);
+        return rgb;
+    };
+
+    /*\
+     * Raphael.color
+     [ method ]
+     **
+     * Parses the color string and returns object with all values for the given color.
+     > Parameters
+     - clr (string) color string in one of the supported formats (see @Raphael.getRGB)
+     = (object) Combined RGB & HSB object in format:
+     o {
+     o     r (number) red,
+     o     g (number) green,
+     o     b (number) blue,
+     o     hex (string) color in HTML/CSS format: #••••••,
+     o     error (boolean) `true` if string can’t be parsed,
+     o     h (number) hue,
+     o     s (number) saturation,
+     o     v (number) value (brightness),
+     o     l (number) lightness
+     o }
+    \*/
+    R.color = function (clr) {
+        var rgb;
+        if (R.is(clr, "object") && "h" in clr && "s" in clr && "b" in clr) {
+            rgb = R.hsb2rgb(clr);
+            clr.r = rgb.r;
+            clr.g = rgb.g;
+            clr.b = rgb.b;
+            clr.hex = rgb.hex;
+        } else if (R.is(clr, "object") && "h" in clr && "s" in clr && "l" in clr) {
+            rgb = R.hsl2rgb(clr);
+            clr.r = rgb.r;
+            clr.g = rgb.g;
+            clr.b = rgb.b;
+            clr.hex = rgb.hex;
+        } else {
+            if (R.is(clr, "string")) {
+                clr = R.getRGB(clr);
+            }
+            if (R.is(clr, "object") && "r" in clr && "g" in clr && "b" in clr) {
+                rgb = R.rgb2hsl(clr);
+                clr.h = rgb.h;
+                clr.s = rgb.s;
+                clr.l = rgb.l;
+                rgb = R.rgb2hsb(clr);
+                clr.v = rgb.b;
+            } else {
+                clr = {hex: "none"};
+                clr.r = clr.g = clr.b = clr.h = clr.s = clr.v = clr.l = -1;
+            }
+        }
+        clr.toString = rgbtoString;
+        return clr;
+    };
+    /*\
+     * Raphael.hsb2rgb
+     [ method ]
+     **
+     * Converts HSB values to RGB object.
+     > Parameters
+     - h (number) hue
+     - s (number) saturation
+     - v (number) value or brightness
+     = (object) RGB object in format:
+     o {
+     o     r (number) red,
+     o     g (number) green,
+     o     b (number) blue,
+     o     hex (string) color in HTML/CSS format: #••••••
+     o }
+    \*/
+    R.hsb2rgb = function (h, s, v, o) {
+        if (this.is(h, "object") && "h" in h && "s" in h && "b" in h) {
+            v = h.b;
+            s = h.s;
+            h = h.h;
+            o = h.o;
+        }
+        h *= 360;
+        var R, G, B, X, C;
+        h = (h % 360) / 60;
+        C = v * s;
+        X = C * (1 - abs(h % 2 - 1));
+        R = G = B = v - C;
+
+        h = ~~h;
+        R += [C, X, 0, 0, X, C][h];
+        G += [X, C, C, X, 0, 0][h];
+        B += [0, 0, X, C, C, X][h];
+        return packageRGB(R, G, B, o);
+    };
+    /*\
+     * Raphael.hsl2rgb
+     [ method ]
+     **
+     * Converts HSL values to RGB object.
+     > Parameters
+     - h (number) hue
+     - s (number) saturation
+     - l (number) luminosity
+     = (object) RGB object in format:
+     o {
+     o     r (number) red,
+     o     g (number) green,
+     o     b (number) blue,
+     o     hex (string) color in HTML/CSS format: #••••••
+     o }
+    \*/
+    R.hsl2rgb = function (h, s, l, o) {
+        if (this.is(h, "object") && "h" in h && "s" in h && "l" in h) {
+            l = h.l;
+            s = h.s;
+            h = h.h;
+        }
+        if (h > 1 || s > 1 || l > 1) {
+            h /= 360;
+            s /= 100;
+            l /= 100;
+        }
+        h *= 360;
+        var R, G, B, X, C;
+        h = (h % 360) / 60;
+        C = 2 * s * (l < .5 ? l : 1 - l);
+        X = C * (1 - abs(h % 2 - 1));
+        R = G = B = l - C / 2;
+
+        h = ~~h;
+        R += [C, X, 0, 0, X, C][h];
+        G += [X, C, C, X, 0, 0][h];
+        B += [0, 0, X, C, C, X][h];
+        return packageRGB(R, G, B, o);
+    };
+    /*\
+     * Raphael.rgb2hsb
+     [ method ]
+     **
+     * Converts RGB values to HSB object.
+     > Parameters
+     - r (number) red
+     - g (number) green
+     - b (number) blue
+     = (object) HSB object in format:
+     o {
+     o     h (number) hue
+     o     s (number) saturation
+     o     b (number) brightness
+     o }
+    \*/
+    R.rgb2hsb = function (r, g, b) {
+        b = prepareRGB(r, g, b);
+        r = b[0];
+        g = b[1];
+        b = b[2];
+
+        var H, S, V, C;
+        V = mmax(r, g, b);
+        C = V - mmin(r, g, b);
+        H = (C == 0 ? null :
+             V == r ? (g - b) / C :
+             V == g ? (b - r) / C + 2 :
+                      (r - g) / C + 4
+            );
+        H = ((H + 360) % 6) * 60 / 360;
+        S = C == 0 ? 0 : C / V;
+        return {h: H, s: S, b: V, toString: hsbtoString};
+    };
+    /*\
+     * Raphael.rgb2hsl
+     [ method ]
+     **
+     * Converts RGB values to HSL object.
+     > Parameters
+     - r (number) red
+     - g (number) green
+     - b (number) blue
+     = (object) HSL object in format:
+     o {
+     o     h (number) hue
+     o     s (number) saturation
+     o     l (number) luminosity
+     o }
+    \*/
+    R.rgb2hsl = function (r, g, b) {
+        b = prepareRGB(r, g, b);
+        r = b[0];
+        g = b[1];
+        b = b[2];
+
+        var H, S, L, M, m, C;
+        M = mmax(r, g, b);
+        m = mmin(r, g, b);
+        C = M - m;
+        H = (C == 0 ? null :
+             M == r ? (g - b) / C :
+             M == g ? (b - r) / C + 2 :
+                      (r - g) / C + 4);
+        H = ((H + 360) % 6) * 60 / 360;
+        L = (M + m) / 2;
+        S = (C == 0 ? 0 :
+             L < .5 ? C / (2 * L) :
+                      C / (2 - 2 * L));
+        return {h: H, s: S, l: L, toString: hsltoString};
+    };
+    R._path2string = function () {
+        return this.join(",").replace(p2s, "$1");
+    };
+    function repush(array, item) {
+        for (var i = 0, ii = array.length; i < ii; i++) if (array[i] === item) {
+            return array.push(array.splice(i, 1)[0]);
+        }
+    }
+    function cacher(f, scope, postprocessor) {
+        function newf() {
+            var arg = Array.prototype.slice.call(arguments, 0),
+                args = arg.join("\u2400"),
+                cache = newf.cache = newf.cache || {},
+                count = newf.count = newf.count || [];
+            if (cache[has](args)) {
+                repush(count, args);
+                return postprocessor ? postprocessor(cache[args]) : cache[args];
+            }
+            count.length >= 1e3 && delete cache[count.shift()];
+            count.push(args);
+            cache[args] = f[apply](scope, arg);
+            return postprocessor ? postprocessor(cache[args]) : cache[args];
+        }
+        return newf;
+    }
+
+    var preload = R._preload = function (src, f) {
+        var img = g.doc.createElement("img");
+        img.style.cssText = "position:absolute;left:-9999em;top:-9999em";
+        img.onload = function () {
+            f.call(this);
+            this.onload = null;
+            g.doc.body.removeChild(this);
+        };
+        img.onerror = function () {
+            g.doc.body.removeChild(this);
+        };
+        g.doc.body.appendChild(img);
+        img.src = src;
+    };
+
+    function clrToString() {
+        return this.hex;
+    }
+
+    /*\
+     * Raphael.getRGB
+     [ method ]
+     **
+     * Parses colour string as RGB object
+     > Parameters
+     - colour (string) colour string in one of formats:
+     # <ul>
+     #     <li>Colour name (“<code>red</code>”, “<code>green</code>”, “<code>cornflowerblue</code>”, etc)</li>
+     #     <li>#••• — shortened HTML colour: (“<code>#000</code>”, “<code>#fc0</code>”, etc)</li>
+     #     <li>#•••••• — full length HTML colour: (“<code>#000000</code>”, “<code>#bd2300</code>”)</li>
+     #     <li>rgb(•••, •••, •••) — red, green and blue channels’ values: (“<code>rgb(200,&nbsp;100,&nbsp;0)</code>”)</li>
+     #     <li>rgb(•••%, •••%, •••%) — same as above, but in %: (“<code>rgb(100%,&nbsp;175%,&nbsp;0%)</code>”)</li>
+     #     <li>hsb(•••, •••, •••) — hue, saturation and brightness values: (“<code>hsb(0.5,&nbsp;0.25,&nbsp;1)</code>”)</li>
+     #     <li>hsb(•••%, •••%, •••%) — same as above, but in %</li>
+     #     <li>hsl(•••, •••, •••) — same as hsb</li>
+     #     <li>hsl(•••%, •••%, •••%) — same as hsb</li>
+     # </ul>
+     = (object) RGB object in format:
+     o {
+     o     r (number) red,
+     o     g (number) green,
+     o     b (number) blue
+     o     hex (string) color in HTML/CSS format: #••••••,
+     o     error (boolean) true if string can’t be parsed
+     o }
+    \*/
+    R.getRGB = cacher(function (colour) {
+        if (!colour || !!((colour = Str(colour)).indexOf("-") + 1)) {
+            return {r: -1, g: -1, b: -1, hex: "none", error: 1, toString: clrToString};
+        }
+        if (colour == "none") {
+            return {r: -1, g: -1, b: -1, hex: "none", toString: clrToString};
+        }
+        !(hsrg[has](colour.toLowerCase().substring(0, 2)) || colour.charAt() == "#") && (colour = toHex(colour));
+        var res,
+            red,
+            green,
+            blue,
+            opacity,
+            t,
+            values,
+            rgb = colour.match(colourRegExp);
+        if (rgb) {
+            if (rgb[2]) {
+                blue = toInt(rgb[2].substring(5), 16);
+                green = toInt(rgb[2].substring(3, 5), 16);
+                red = toInt(rgb[2].substring(1, 3), 16);
+            }
+            if (rgb[3]) {
+                blue = toInt((t = rgb[3].charAt(3)) + t, 16);
+                green = toInt((t = rgb[3].charAt(2)) + t, 16);
+                red = toInt((t = rgb[3].charAt(1)) + t, 16);
+            }
+            if (rgb[4]) {
+                values = rgb[4][split](commaSpaces);
+                red = toFloat(values[0]);
+                values[0].slice(-1) == "%" && (red *= 2.55);
+                green = toFloat(values[1]);
+                values[1].slice(-1) == "%" && (green *= 2.55);
+                blue = toFloat(values[2]);
+                values[2].slice(-1) == "%" && (blue *= 2.55);
+                rgb[1].toLowerCase().slice(0, 4) == "rgba" && (opacity = toFloat(values[3]));
+                values[3] && values[3].slice(-1) == "%" && (opacity /= 100);
+            }
+            if (rgb[5]) {
+                values = rgb[5][split](commaSpaces);
+                red = toFloat(values[0]);
+                values[0].slice(-1) == "%" && (red *= 2.55);
+                green = toFloat(values[1]);
+                values[1].slice(-1) == "%" && (green *= 2.55);
+                blue = toFloat(values[2]);
+                values[2].slice(-1) == "%" && (blue *= 2.55);
+                (values[0].slice(-3) == "deg" || values[0].slice(-1) == "\xb0") && (red /= 360);
+                rgb[1].toLowerCase().slice(0, 4) == "hsba" && (opacity = toFloat(values[3]));
+                values[3] && values[3].slice(-1) == "%" && (opacity /= 100);
+                return R.hsb2rgb(red, green, blue, opacity);
+            }
+            if (rgb[6]) {
+                values = rgb[6][split](commaSpaces);
+                red = toFloat(values[0]);
+                values[0].slice(-1) == "%" && (red *= 2.55);
+                green = toFloat(values[1]);
+                values[1].slice(-1) == "%" && (green *= 2.55);
+                blue = toFloat(values[2]);
+                values[2].slice(-1) == "%" && (blue *= 2.55);
+                (values[0].slice(-3) == "deg" || values[0].slice(-1) == "\xb0") && (red /= 360);
+                rgb[1].toLowerCase().slice(0, 4) == "hsla" && (opacity = toFloat(values[3]));
+                values[3] && values[3].slice(-1) == "%" && (opacity /= 100);
+                return R.hsl2rgb(red, green, blue, opacity);
+            }
+            rgb = {r: red, g: green, b: blue, toString: clrToString};
+            rgb.hex = "#" + (16777216 | blue | (green << 8) | (red << 16)).toString(16).slice(1);
+            R.is(opacity, "finite") && (rgb.opacity = opacity);
+            return rgb;
+        }
+        return {r: -1, g: -1, b: -1, hex: "none", error: 1, toString: clrToString};
+    }, R);
+    /*\
+     * Raphael.hsb
+     [ method ]
+     **
+     * Converts HSB values to hex representation of the colour.
+     > Parameters
+     - h (number) hue
+     - s (number) saturation
+     - b (number) value or brightness
+     = (string) hex representation of the colour.
+    \*/
+    R.hsb = cacher(function (h, s, b) {
+        return R.hsb2rgb(h, s, b).hex;
+    });
+    /*\
+     * Raphael.hsl
+     [ method ]
+     **
+     * Converts HSL values to hex representation of the colour.
+     > Parameters
+     - h (number) hue
+     - s (number) saturation
+     - l (number) luminosity
+     = (string) hex representation of the colour.
+    \*/
+    R.hsl = cacher(function (h, s, l) {
+        return R.hsl2rgb(h, s, l).hex;
+    });
+    /*\
+     * Raphael.rgb
+     [ method ]
+     **
+     * Converts RGB values to hex representation of the colour.
+     > Parameters
+     - r (number) red
+     - g (number) green
+     - b (number) blue
+     = (string) hex representation of the colour.
+    \*/
+    R.rgb = cacher(function (r, g, b) {
+        return "#" + (16777216 | b | (g << 8) | (r << 16)).toString(16).slice(1);
+    });
+    /*\
+     * Raphael.getColor
+     [ method ]
+     **
+     * On each call returns next colour in the spectrum. To reset it back to red call @Raphael.getColor.reset
+     > Parameters
+     - value (number) #optional brightness, default is `0.75`
+     = (string) hex representation of the colour.
+    \*/
+    R.getColor = function (value) {
+        var start = this.getColor.start = this.getColor.start || {h: 0, s: 1, b: value || .75},
+            rgb = this.hsb2rgb(start.h, start.s, start.b);
+        start.h += .075;
+        if (start.h > 1) {
+            start.h = 0;
+            start.s -= .2;
+            start.s <= 0 && (this.getColor.start = {h: 0, s: 1, b: start.b});
+        }
+        return rgb.hex;
+    };
+    /*\
+     * Raphael.getColor.reset
+     [ method ]
+     **
+     * Resets spectrum position for @Raphael.getColor back to red.
+    \*/
+    R.getColor.reset = function () {
+        delete this.start;
+    };
+
+    // http://schepers.cc/getting-to-the-point
+    function catmullRom2bezier(crp, z) {
+        var d = [];
+        for (var i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {
+            var p = [
+                        {x: +crp[i - 2], y: +crp[i - 1]},
+                        {x: +crp[i],     y: +crp[i + 1]},
+                        {x: +crp[i + 2], y: +crp[i + 3]},
+                        {x: +crp[i + 4], y: +crp[i + 5]}
+                    ];
+            if (z) {
+                if (!i) {
+                    p[0] = {x: +crp[iLen - 2], y: +crp[iLen - 1]};
+                } else if (iLen - 4 == i) {
+                    p[3] = {x: +crp[0], y: +crp[1]};
+                } else if (iLen - 2 == i) {
+                    p[2] = {x: +crp[0], y: +crp[1]};
+                    p[3] = {x: +crp[2], y: +crp[3]};
+                }
+            } else {
+                if (iLen - 4 == i) {
+                    p[3] = p[2];
+                } else if (!i) {
+                    p[0] = {x: +crp[i], y: +crp[i + 1]};
+                }
+            }
+            d.push(["C",
+                  (-p[0].x + 6 * p[1].x + p[2].x) / 6,
+                  (-p[0].y + 6 * p[1].y + p[2].y) / 6,
+                  (p[1].x + 6 * p[2].x - p[3].x) / 6,
+                  (p[1].y + 6*p[2].y - p[3].y) / 6,
+                  p[2].x,
+                  p[2].y
+            ]);
+        }
+
+        return d;
+    }
+    /*\
+     * Raphael.parsePathString
+     [ method ]
+     **
+     * Utility method
+     **
+     * Parses given path string into an array of arrays of path segments.
+     > Parameters
+     - pathString (string|array) path string or array of segments (in the last case it will be returned straight away)
+     = (array) array of segments.
+    \*/
+    R.parsePathString = function (pathString) {
+        if (!pathString) {
+            return null;
+        }
+        var pth = paths(pathString);
+        if (pth.arr) {
+            return pathClone(pth.arr);
+        }
+
+        var paramCounts = {a: 7, c: 6, h: 1, l: 2, m: 2, r: 4, q: 4, s: 4, t: 2, v: 1, z: 0},
+            data = [];
+        if (R.is(pathString, array) && R.is(pathString[0], array)) { // rough assumption
+            data = pathClone(pathString);
+        }
+        if (!data.length) {
+            Str(pathString).replace(pathCommand, function (a, b, c) {
+                var params = [],
+                    name = b.toLowerCase();
+                c.replace(pathValues, function (a, b) {
+                    b && params.push(+b);
+                });
+                if (name == "m" && params.length > 2) {
+                    data.push([b][concat](params.splice(0, 2)));
+                    name = "l";
+                    b = b == "m" ? "l" : "L";
+                }
+                if (name == "r") {
+                    data.push([b][concat](params));
+                } else while (params.length >= paramCounts[name]) {
+                    data.push([b][concat](params.splice(0, paramCounts[name])));
+                    if (!paramCounts[name]) {
+                        break;
+                    }
+                }
+            });
+        }
+        data.toString = R._path2string;
+        pth.arr = pathClone(data);
+        return data;
+    };
+    /*\
+     * Raphael.parseTransformString
+     [ method ]
+     **
+     * Utility method
+     **
+     * Parses given path string into an array of transformations.
+     > Parameters
+     - TString (string|array) transform string or array of transformations (in the last case it will be returned straight away)
+     = (array) array of transformations.
+    \*/
+    R.parseTransformString = cacher(function (TString) {
+        if (!TString) {
+            return null;
+        }
+        var paramCounts = {r: 3, s: 4, t: 2, m: 6},
+            data = [];
+        if (R.is(TString, array) && R.is(TString[0], array)) { // rough assumption
+            data = pathClone(TString);
+        }
+        if (!data.length) {
+            Str(TString).replace(tCommand, function (a, b, c) {
+                var params = [],
+                    name = lowerCase.call(b);
+                c.replace(pathValues, function (a, b) {
+                    b && params.push(+b);
+                });
+                data.push([b][concat](params));
+            });
+        }
+        data.toString = R._path2string;
+        return data;
+    });
+    // PATHS
+    var paths = function (ps) {
+        var p = paths.ps = paths.ps || {};
+        if (p[ps]) {
+            p[ps].sleep = 100;
+        } else {
+            p[ps] = {
+                sleep: 100
+            };
+        }
+        setTimeout(function () {
+            for (var key in p) if (p[has](key) && key != ps) {
+                p[key].sleep--;
+                !p[key].sleep && delete p[key];
+            }
+        });
+        return p[ps];
+    };
+    /*\
+     * Raphael.findDotsAtSegment
+     [ method ]
+     **
+     * Utility method
+     **
+     * Find dot coordinates on the given cubic bezier curve at the given t.
+     > Parameters
+     - p1x (number) x of the first point of the curve
+     - p1y (number) y of the first point of the curve
+     - c1x (number) x of the first anchor of the curve
+     - c1y (number) y of the first anchor of the curve
+     - c2x (number) x of the second anchor of the curve
+     - c2y (number) y of the second anchor of the curve
+     - p2x (number) x of the second point of the curve
+     - p2y (number) y of the second point of the curve
+     - t (number) position on the curve (0..1)
+     = (object) point information in format:
+     o {
+     o     x: (number) x coordinate of the point
+     o     y: (number) y coordinate of the point
+     o     m: {
+     o         x: (number) x coordinate of the left anchor
+     o         y: (number) y coordinate of the left anchor
+     o     }
+     o     n: {
+     o         x: (number) x coordinate of the right anchor
+     o         y: (number) y coordinate of the right anchor
+     o     }
+     o     start: {
+     o         x: (number) x coordinate of the start of the curve
+     o         y: (number) y coordinate of the start of the curve
+     o     }
+     o     end: {
+     o         x: (number) x coordinate of the end of the curve
+     o         y: (number) y coordinate of the end of the curve
+     o     }
+     o     alpha: (number) angle of the curve derivative at the point
+     o }
+    \*/
+    R.findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {
+        var t1 = 1 - t,
+            t13 = pow(t1, 3),
+            t12 = pow(t1, 2),
+            t2 = t * t,
+            t3 = t2 * t,
+            x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x,
+            y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y,
+            mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x),
+            my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y),
+            nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x),
+            ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y),
+            ax = t1 * p1x + t * c1x,
+            ay = t1 * p1y + t * c1y,
+            cx = t1 * c2x + t * p2x,
+            cy = t1 * c2y + t * p2y,
+            alpha = (90 - math.atan2(mx - nx, my - ny) * 180 / PI);
+        (mx > nx || my < ny) && (alpha += 180);
+        return {
+            x: x,
+            y: y,
+            m: {x: mx, y: my},
+            n: {x: nx, y: ny},
+            start: {x: ax, y: ay},
+            end: {x: cx, y: cy},
+            alpha: alpha
+        };
+    };
+    /*\
+     * Raphael.bezierBBox
+     [ method ]
+     **
+     * Utility method
+     **
+     * Return bounding box of a given cubic bezier curve
+     > Parameters
+     - p1x (number) x of the first point of the curve
+     - p1y (number) y of the first point of the curve
+     - c1x (number) x of the first anchor of the curve
+     - c1y (number) y of the first anchor of the curve
+     - c2x (number) x of the second anchor of the curve
+     - c2y (number) y of the second anchor of the curve
+     - p2x (number) x of the second point of the curve
+     - p2y (number) y of the second point of the curve
+     * or
+     - bez (array) array of six points for bezier curve
+     = (object) point information in format:
+     o {
+     o     min: {
+     o         x: (number) x coordinate of the left point
+     o         y: (number) y coordinate of the top point
+     o     }
+     o     max: {
+     o         x: (number) x coordinate of the right point
+     o         y: (number) y coordinate of the bottom point
+     o     }
+     o }
+    \*/
+    R.bezierBBox = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {
+        if (!R.is(p1x, "array")) {
+            p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];
+        }
+        var bbox = curveDim.apply(null, p1x);
+        return {
+            x: bbox.min.x,
+            y: bbox.min.y,
+            x2: bbox.max.x,
+            y2: bbox.max.y,
+            width: bbox.max.x - bbox.min.x,
+            height: bbox.max.y - bbox.min.y
+        };
+    };
+    /*\
+     * Raphael.isPointInsideBBox
+     [ method ]
+     **
+     * Utility method
+     **
+     * Returns `true` if given point is inside bounding boxes.
+     > Parameters
+     - bbox (string) bounding box
+     - x (string) x coordinate of the point
+     - y (string) y coordinate of the point
+     = (boolean) `true` if point inside
+    \*/
+    R.isPointInsideBBox = function (bbox, x, y) {
+        return x >= bbox.x && x <= bbox.x2 && y >= bbox.y && y <= bbox.y2;
+    };
+    /*\
+     * Raphael.isBBoxIntersect
+     [ method ]
+     **
+     * Utility method
+     **
+     * Returns `true` if two bounding boxes intersect
+     > Parameters
+     - bbox1 (string) first bounding box
+     - bbox2 (string) second bounding box
+     = (boolean) `true` if they intersect
+    \*/
+    R.isBBoxIntersect = function (bbox1, bbox2) {
+        var i = R.isPointInsideBBox;
+        return i(bbox2, bbox1.x, bbox1.y)
+            || i(bbox2, bbox1.x2, bbox1.y)
+            || i(bbox2, bbox1.x, bbox1.y2)
+            || i(bbox2, bbox1.x2, bbox1.y2)
+            || i(bbox1, bbox2.x, bbox2.y)
+            || i(bbox1, bbox2.x2, bbox2.y)
+            || i(bbox1, bbox2.x, bbox2.y2)
+            || i(bbox1, bbox2.x2, bbox2.y2)
+            || (bbox1.x < bbox2.x2 && bbox1.x > bbox2.x || bbox2.x < bbox1.x2 && bbox2.x > bbox1.x)
+            && (bbox1.y < bbox2.y2 && bbox1.y > bbox2.y || bbox2.y < bbox1.y2 && bbox2.y > bbox1.y);
+    };
+    function base3(t, p1, p2, p3, p4) {
+        var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4,
+            t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;
+        return t * t2 - 3 * p1 + 3 * p2;
+    }
+    function bezlen(x1, y1, x2, y2, x3, y3, x4, y4, z) {
+        if (z == null) {
+            z = 1;
+        }
+        z = z > 1 ? 1 : z < 0 ? 0 : z;
+        var z2 = z / 2,
+            n = 12,
+            Tvalues = [-0.1252,0.1252,-0.3678,0.3678,-0.5873,0.5873,-0.7699,0.7699,-0.9041,0.9041,-0.9816,0.9816],
+            Cvalues = [0.2491,0.2491,0.2335,0.2335,0.2032,0.2032,0.1601,0.1601,0.1069,0.1069,0.0472,0.0472],
+            sum = 0;
+        for (var i = 0; i < n; i++) {
+            var ct = z2 * Tvalues[i] + z2,
+                xbase = base3(ct, x1, x2, x3, x4),
+                ybase = base3(ct, y1, y2, y3, y4),
+                comb = xbase * xbase + ybase * ybase;
+            sum += Cvalues[i] * math.sqrt(comb);
+        }
+        return z2 * sum;
+    }
+    function getTatLen(x1, y1, x2, y2, x3, y3, x4, y4, ll) {
+        if (ll < 0 || bezlen(x1, y1, x2, y2, x3, y3, x4, y4) < ll) {
+            return;
+        }
+        var t = 1,
+            step = t / 2,
+            t2 = t - step,
+            l,
+            e = .01;
+        l = bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);
+        while (abs(l - ll) > e) {
+            step /= 2;
+            t2 += (l < ll ? 1 : -1) * step;
+            l = bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);
+        }
+        return t2;
+    }
+    function intersect(x1, y1, x2, y2, x3, y3, x4, y4) {
+        if (
+            mmax(x1, x2) < mmin(x3, x4) ||
+            mmin(x1, x2) > mmax(x3, x4) ||
+            mmax(y1, y2) < mmin(y3, y4) ||
+            mmin(y1, y2) > mmax(y3, y4)
+        ) {
+            return;
+        }
+        var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4),
+            ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4),
+            denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);
+
+        if (!denominator) {
+            return;
+        }
+        var px = nx / denominator,
+            py = ny / denominator,
+            px2 = +px.toFixed(2),
+            py2 = +py.toFixed(2);
+        if (
+            px2 < +mmin(x1, x2).toFixed(2) ||
+            px2 > +mmax(x1, x2).toFixed(2) ||
+            px2 < +mmin(x3, x4).toFixed(2) ||
+            px2 > +mmax(x3, x4).toFixed(2) ||
+            py2 < +mmin(y1, y2).toFixed(2) ||
+            py2 > +mmax(y1, y2).toFixed(2) ||
+            py2 < +mmin(y3, y4).toFixed(2) ||
+            py2 > +mmax(y3, y4).toFixed(2)
+        ) {
+            return;
+        }
+        return {x: px, y: py};
+    }
+    function inter(bez1, bez2) {
+        return interHelper(bez1, bez2);
+    }
+    function interCount(bez1, bez2) {
+        return interHelper(bez1, bez2, 1);
+    }
+    function interHelper(bez1, bez2, justCount) {
+        var bbox1 = R.bezierBBox(bez1),
+            bbox2 = R.bezierBBox(bez2);
+        if (!R.isBBoxIntersect(bbox1, bbox2)) {
+            return justCount ? 0 : [];
+        }
+        var l1 = bezlen.apply(0, bez1),
+            l2 = bezlen.apply(0, bez2),
+            n1 = mmax(~~(l1 / 5), 1),
+            n2 = mmax(~~(l2 / 5), 1),
+            dots1 = [],
+            dots2 = [],
+            xy = {},
+            res = justCount ? 0 : [];
+        for (var i = 0; i < n1 + 1; i++) {
+            var p = R.findDotsAtSegment.apply(R, bez1.concat(i / n1));
+            dots1.push({x: p.x, y: p.y, t: i / n1});
+        }
+        for (i = 0; i < n2 + 1; i++) {
+            p = R.findDotsAtSegment.apply(R, bez2.concat(i / n2));
+            dots2.push({x: p.x, y: p.y, t: i / n2});
+        }
+        for (i = 0; i < n1; i++) {
+            for (var j = 0; j < n2; j++) {
+                var di = dots1[i],
+                    di1 = dots1[i + 1],
+                    dj = dots2[j],
+                    dj1 = dots2[j + 1],
+                    ci = abs(di1.x - di.x) < .001 ? "y" : "x",
+                    cj = abs(dj1.x - dj.x) < .001 ? "y" : "x",
+                    is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);
+                if (is) {
+                    if (xy[is.x.toFixed(4)] == is.y.toFixed(4)) {
+                        continue;
+                    }
+                    xy[is.x.toFixed(4)] = is.y.toFixed(4);
+                    var t1 = di.t + abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t),
+                        t2 = dj.t + abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);
+                    if (t1 >= 0 && t1 <= 1.001 && t2 >= 0 && t2 <= 1.001) {
+                        if (justCount) {
+                            res++;
+                        } else {
+                            res.push({
+                                x: is.x,
+                                y: is.y,
+                                t1: mmin(t1, 1),
+                                t2: mmin(t2, 1)
+                            });
+                        }
+                    }
+                }
+            }
+        }
+        return res;
+    }
+    /*\
+     * Raphael.pathIntersection
+     [ method ]
+     **
+     * Utility method
+     **
+     * Finds intersections of two paths
+     > Parameters
+     - path1 (string) path string
+     - path2 (string) path string
+     = (array) dots of intersection
+     o [
+     o     {
+     o         x: (number) x coordinate of the point
+     o         y: (number) y coordinate of the point
+     o         t1: (number) t value for segment of path1
+     o         t2: (number) t value for segment of path2
+     o         segment1: (number) order number for segment of path1
+     o         segment2: (number) order number for segment of path2
+     o         bez1: (array) eight coordinates representing beziér curve for the segment of path1
+     o         bez2: (array) eight coordinates representing beziér curve for the segment of path2
+     o     }
+     o ]
+    \*/
+    R.pathIntersection = function (path1, path2) {
+        return interPathHelper(path1, path2);
+    };
+    R.pathIntersectionNumber = function (path1, path2) {
+        return interPathHelper(path1, path2, 1);
+    };
+    function interPathHelper(path1, path2, justCount) {
+        path1 = R._path2curve(path1);
+        path2 = R._path2curve(path2);
+        var x1, y1, x2, y2, x1m, y1m, x2m, y2m, bez1, bez2,
+            res = justCount ? 0 : [];
+        for (var i = 0, ii = path1.length; i < ii; i++) {
+            var pi = path1[i];
+            if (pi[0] == "M") {
+                x1 = x1m = pi[1];
+                y1 = y1m = pi[2];
+            } else {
+                if (pi[0] == "C") {
+                    bez1 = [x1, y1].concat(pi.slice(1));
+                    x1 = bez1[6];
+                    y1 = bez1[7];
+                } else {
+                    bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];
+                    x1 = x1m;
+                    y1 = y1m;
+                }
+                for (var j = 0, jj = path2.length; j < jj; j++) {
+                    var pj = path2[j];
+                    if (pj[0] == "M") {
+                        x2 = x2m = pj[1];
+                        y2 = y2m = pj[2];
+                    } else {
+                        if (pj[0] == "C") {
+                            bez2 = [x2, y2].concat(pj.slice(1));
+                            x2 = bez2[6];
+                            y2 = bez2[7];
+                        } else {
+                            bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];
+                            x2 = x2m;
+                            y2 = y2m;
+                        }
+                        var intr = interHelper(bez1, bez2, justCount);
+                        if (justCount) {
+                            res += intr;
+                        } else {
+                            for (var k = 0, kk = intr.length; k < kk; k++) {
+                                intr[k].segment1 = i;
+                                intr[k].segment2 = j;
+                                intr[k].bez1 = bez1;
+                                intr[k].bez2 = bez2;
+                            }
+                            res = res.concat(intr);
+                        }
+                    }
+                }
+            }
+        }
+        return res;
+    }
+    /*\
+     * Raphael.isPointInsidePath
+     [ method ]
+     **
+     * Utility method
+     **
+     * Returns `true` if given point is inside a given closed path.
+     > Parameters
+     - path (string) path string
+     - x (number) x of the point
+     - y (number) y of the point
+     = (boolean) true, if point is inside the path
+    \*/
+    R.isPointInsidePath = function (path, x, y) {
+        var bbox = R.pathBBox(path);
+        return R.isPointInsideBBox(bbox, x, y) &&
+               interPathHelper(path, [["M", x, y], ["H", bbox.x2 + 10]], 1) % 2 == 1;
+    };
+    R._removedFactory = function (methodname) {
+        return function () {
+            eve("raphael.log", null, "Rapha\xebl: you are calling to method \u201c" + methodname + "\u201d of removed object", methodname);
+        };
+    };
+    /*\
+     * Raphael.pathBBox
+     [ method ]
+     **
+     * Utility method
+     **
+     * Return bounding box of a given path
+     > Parameters
+     - path (string) path string
+     = (object) bounding box
+     o {
+     o     x: (number) x coordinate of the left top point of the box
+     o     y: (number) y coordinate of the left top point of the box
+     o     x2: (number) x coordinate of the right bottom point of the box
+     o     y2: (number) y coordinate of the right bottom point of the box
+     o     width: (number) width of the box
+     o     height: (number) height of the box
+     o     cx: (number) x coordinate of the center of the box
+     o     cy: (number) y coordinate of the center of the box
+     o }
+    \*/
+    var pathDimensions = R.pathBBox = function (path) {
+        var pth = paths(path);
+        if (pth.bbox) {
+            return clone(pth.bbox);
+        }
+        if (!path) {
+            return {x: 0, y: 0, width: 0, height: 0, x2: 0, y2: 0};
+        }
+        path = path2curve(path);
+        var x = 0,
+            y = 0,
+            X = [],
+            Y = [],
+            p;
+        for (var i = 0, ii = path.length; i < ii; i++) {
+            p = path[i];
+            if (p[0] == "M") {
+                x = p[1];
+                y = p[2];
+                X.push(x);
+                Y.push(y);
+            } else {
+                var dim = curveDim(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);
+                X = X[concat](dim.min.x, dim.max.x);
+                Y = Y[concat](dim.min.y, dim.max.y);
+                x = p[5];
+                y = p[6];
+            }
+        }
+        var xmin = mmin[apply](0, X),
+            ymin = mmin[apply](0, Y),
+            xmax = mmax[apply](0, X),
+            ymax = mmax[apply](0, Y),
+            width = xmax - xmin,
+            height = ymax - ymin,
+                bb = {
+                x: xmin,
+                y: ymin,
+                x2: xmax,
+                y2: ymax,
+                width: width,
+                height: height,
+                cx: xmin + width / 2,
+                cy: ymin + height / 2
+            };
+        pth.bbox = clone(bb);
+        return bb;
+    },
+        pathClone = function (pathArray) {
+            var res = clone(pathArray);
+            res.toString = R._path2string;
+            return res;
+        },
+        pathToRelative = R._pathToRelative = function (pathArray) {
+            var pth = paths(pathArray);
+            if (pth.rel) {
+                return pathClone(pth.rel);
+            }
+            if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption
+                pathArray = R.parsePathString(pathArray);
+            }
+            var res = [],
+                x = 0,
+                y = 0,
+                mx = 0,
+                my = 0,
+                start = 0;
+            if (pathArray[0][0] == "M") {
+                x = pathArray[0][1];
+                y = pathArray[0][2];
+                mx = x;
+                my = y;
+                start++;
+                res.push(["M", x, y]);
+            }
+            for (var i = start, ii = pathArray.length; i < ii; i++) {
+                var r = res[i] = [],
+                    pa = pathArray[i];
+                if (pa[0] != lowerCase.call(pa[0])) {
+                    r[0] = lowerCase.call(pa[0]);
+                    switch (r[0]) {
+                        case "a":
+                            r[1] = pa[1];
+                            r[2] = pa[2];
+                            r[3] = pa[3];
+                            r[4] = pa[4];
+                            r[5] = pa[5];
+                            r[6] = +(pa[6] - x).toFixed(3);
+                            r[7] = +(pa[7] - y).toFixed(3);
+                            break;
+                        case "v":
+                            r[1] = +(pa[1] - y).toFixed(3);
+                            break;
+                        case "m":
+                            mx = pa[1];
+                            my = pa[2];
+                        default:
+                            for (var j = 1, jj = pa.length; j < jj; j++) {
+                                r[j] = +(pa[j] - ((j % 2) ? x : y)).toFixed(3);
+                            }
+                    }
+                } else {
+                    r = res[i] = [];
+                    if (pa[0] == "m") {
+                        mx = pa[1] + x;
+                        my = pa[2] + y;
+                    }
+                    for (var k = 0, kk = pa.length; k < kk; k++) {
+                        res[i][k] = pa[k];
+                    }
+                }
+                var len = res[i].length;
+                switch (res[i][0]) {
+                    case "z":
+                        x = mx;
+                        y = my;
+                        break;
+                    case "h":
+                        x += +res[i][len - 1];
+                        break;
+                    case "v":
+                        y += +res[i][len - 1];
+                        break;
+                    default:
+                        x += +res[i][len - 2];
+                        y += +res[i][len - 1];
+                }
+            }
+            res.toString = R._path2string;
+            pth.rel = pathClone(res);
+            return res;
+        },
+        pathToAbsolute = R._pathToAbsolute = function (pathArray) {
+            var pth = paths(pathArray);
+            if (pth.abs) {
+                return pathClone(pth.abs);
+            }
+            if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption
+                pathArray = R.parsePathString(pathArray);
+            }
+            if (!pathArray || !pathArray.length) {
+                return [["M", 0, 0]];
+            }
+            var res = [],
+                x = 0,
+                y = 0,
+                mx = 0,
+                my = 0,
+                start = 0;
+            if (pathArray[0][0] == "M") {
+                x = +pathArray[0][1];
+                y = +pathArray[0][2];
+                mx = x;
+                my = y;
+                start++;
+                res[0] = ["M", x, y];
+            }
+            var crz = pathArray.length == 3 && pathArray[0][0] == "M" && pathArray[1][0].toUpperCase() == "R" && pathArray[2][0].toUpperCase() == "Z";
+            for (var r, pa, i = start, ii = pathArray.length; i < ii; i++) {
+                res.push(r = []);
+                pa = pathArray[i];
+                if (pa[0] != upperCase.call(pa[0])) {
+                    r[0] = upperCase.call(pa[0]);
+                    switch (r[0]) {
+                        case "A":
+                            r[1] = pa[1];
+                            r[2] = pa[2];
+                            r[3] = pa[3];
+                            r[4] = pa[4];
+                            r[5] = pa[5];
+                            r[6] = +(pa[6] + x);
+                            r[7] = +(pa[7] + y);
+                            break;
+                        case "V":
+                            r[1] = +pa[1] + y;
+                            break;
+                        case "H":
+                            r[1] = +pa[1] + x;
+                            break;
+                        case "R":
+                            var dots = [x, y][concat](pa.slice(1));
+                            for (var j = 2, jj = dots.length; j < jj; j++) {
+                                dots[j] = +dots[j] + x;
+                                dots[++j] = +dots[j] + y;
+                            }
+                            res.pop();
+                            res = res[concat](catmullRom2bezier(dots, crz));
+                            break;
+                        case "M":
+                            mx = +pa[1] + x;
+                            my = +pa[2] + y;
+                        default:
+                            for (j = 1, jj = pa.length; j < jj; j++) {
+                                r[j] = +pa[j] + ((j % 2) ? x : y);
+                            }
+                    }
+                } else if (pa[0] == "R") {
+                    dots = [x, y][concat](pa.slice(1));
+                    res.pop();
+                    res = res[concat](catmullRom2bezier(dots, crz));
+                    r = ["R"][concat](pa.slice(-2));
+                } else {
+                    for (var k = 0, kk = pa.length; k < kk; k++) {
+                        r[k] = pa[k];
+                    }
+                }
+                switch (r[0]) {
+                    case "Z":
+                        x = mx;
+                        y = my;
+                        break;
+                    case "H":
+                        x = r[1];
+                        break;
+                    case "V":
+                        y = r[1];
+                        break;
+                    case "M":
+                        mx = r[r.length - 2];
+                        my = r[r.length - 1];
+                    default:
+                        x = r[r.length - 2];
+                        y = r[r.length - 1];
+                }
+            }
+            res.toString = R._path2string;
+            pth.abs = pathClone(res);
+            return res;
+        },
+        l2c = function (x1, y1, x2, y2) {
+            return [x1, y1, x2, y2, x2, y2];
+        },
+        q2c = function (x1, y1, ax, ay, x2, y2) {
+            var _13 = 1 / 3,
+                _23 = 2 / 3;
+            return [
+                    _13 * x1 + _23 * ax,
+                    _13 * y1 + _23 * ay,
+                    _13 * x2 + _23 * ax,
+                    _13 * y2 + _23 * ay,
+                    x2,
+                    y2
+                ];
+        },
+        a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {
+            // for more information of where this math came from visit:
+            // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes
+            var _120 = PI * 120 / 180,
+                rad = PI / 180 * (+angle || 0),
+                res = [],
+                xy,
+                rotate = cacher(function (x, y, rad) {
+                    var X = x * math.cos(rad) - y * math.sin(rad),
+                        Y = x * math.sin(rad) + y * math.cos(rad);
+                    return {x: X, y: Y};
+                });
+            if (!recursive) {
+                xy = rotate(x1, y1, -rad);
+                x1 = xy.x;
+                y1 = xy.y;
+                xy = rotate(x2, y2, -rad);
+                x2 = xy.x;
+                y2 = xy.y;
+                var cos = math.cos(PI / 180 * angle),
+                    sin = math.sin(PI / 180 * angle),
+                    x = (x1 - x2) / 2,
+                    y = (y1 - y2) / 2;
+                var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);
+                if (h > 1) {
+                    h = math.sqrt(h);
+                    rx = h * rx;
+                    ry = h * ry;
+                }
+                var rx2 = rx * rx,
+                    ry2 = ry * ry,
+                    k = (large_arc_flag == sweep_flag ? -1 : 1) *
+                        math.sqrt(abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x))),
+                    cx = k * rx * y / ry + (x1 + x2) / 2,
+                    cy = k * -ry * x / rx + (y1 + y2) / 2,
+                    f1 = math.asin(((y1 - cy) / ry).toFixed(9)),
+                    f2 = math.asin(((y2 - cy) / ry).toFixed(9));
+
+                f1 = x1 < cx ? PI - f1 : f1;
+                f2 = x2 < cx ? PI - f2 : f2;
+                f1 < 0 && (f1 = PI * 2 + f1);
+                f2 < 0 && (f2 = PI * 2 + f2);
+                if (sweep_flag && f1 > f2) {
+                    f1 = f1 - PI * 2;
+                }
+                if (!sweep_flag && f2 > f1) {
+                    f2 = f2 - PI * 2;
+                }
+            } else {
+                f1 = recursive[0];
+                f2 = recursive[1];
+                cx = recursive[2];
+                cy = recursive[3];
+            }
+            var df = f2 - f1;
+            if (abs(df) > _120) {
+                var f2old = f2,
+                    x2old = x2,
+                    y2old = y2;
+                f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);
+                x2 = cx + rx * math.cos(f2);
+                y2 = cy + ry * math.sin(f2);
+                res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);
+            }
+            df = f2 - f1;
+            var c1 = math.cos(f1),
+                s1 = math.sin(f1),
+                c2 = math.cos(f2),
+                s2 = math.sin(f2),
+                t = math.tan(df / 4),
+                hx = 4 / 3 * rx * t,
+                hy = 4 / 3 * ry * t,
+                m1 = [x1, y1],
+                m2 = [x1 + hx * s1, y1 - hy * c1],
+                m3 = [x2 + hx * s2, y2 - hy * c2],
+                m4 = [x2, y2];
+            m2[0] = 2 * m1[0] - m2[0];
+            m2[1] = 2 * m1[1] - m2[1];
+            if (recursive) {
+                return [m2, m3, m4][concat](res);
+            } else {
+                res = [m2, m3, m4][concat](res).join()[split](",");
+                var newres = [];
+                for (var i = 0, ii = res.length; i < ii; i++) {
+                    newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;
+                }
+                return newres;
+            }
+        },
+        findDotAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {
+            var t1 = 1 - t;
+            return {
+                x: pow(t1, 3) * p1x + pow(t1, 2) * 3 * t * c1x + t1 * 3 * t * t * c2x + pow(t, 3) * p2x,
+                y: pow(t1, 3) * p1y + pow(t1, 2) * 3 * t * c1y + t1 * 3 * t * t * c2y + pow(t, 3) * p2y
+            };
+        },
+        curveDim = cacher(function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {
+            var a = (c2x - 2 * c1x + p1x) - (p2x - 2 * c2x + c1x),
+                b = 2 * (c1x - p1x) - 2 * (c2x - c1x),
+                c = p1x - c1x,
+                t1 = (-b + math.sqrt(b * b - 4 * a * c)) / 2 / a,
+                t2 = (-b - math.sqrt(b * b - 4 * a * c)) / 2 / a,
+                y = [p1y, p2y],
+                x = [p1x, p2x],
+                dot;
+            abs(t1) > "1e12" && (t1 = .5);
+            abs(t2) > "1e12" && (t2 = .5);
+            if (t1 > 0 && t1 < 1) {
+                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1);
+                x.push(dot.x);
+                y.push(dot.y);
+            }
+            if (t2 > 0 && t2 < 1) {
+                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t2);
+                x.push(dot.x);
+                y.push(dot.y);
+            }
+            a = (c2y - 2 * c1y + p1y) - (p2y - 2 * c2y + c1y);
+            b = 2 * (c1y - p1y) - 2 * (c2y - c1y);
+            c = p1y - c1y;
+            t1 = (-b + math.sqrt(b * b - 4 * a * c)) / 2 / a;
+            t2 = (-b - math.sqrt(b * b - 4 * a * c)) / 2 / a;
+            abs(t1) > "1e12" && (t1 = .5);
+            abs(t2) > "1e12" && (t2 = .5);
+            if (t1 > 0 && t1 < 1) {
+                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1);
+                x.push(dot.x);
+                y.push(dot.y);
+            }
+            if (t2 > 0 && t2 < 1) {
+                dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t2);
+                x.push(dot.x);
+                y.push(dot.y);
+            }
+            return {
+                min: {x: mmin[apply](0, x), y: mmin[apply](0, y)},
+                max: {x: mmax[apply](0, x), y: mmax[apply](0, y)}
+            };
+        }),
+        path2curve = R._path2curve = cacher(function (path, path2) {
+            var pth = !path2 && paths(path);
+            if (!path2 && pth.curve) {
+                return pathClone(pth.curve);
+            }
+            var p = pathToAbsolute(path),
+                p2 = path2 && pathToAbsolute(path2),
+                attrs = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},
+                attrs2 = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},
+                processPath = function (path, d, pcom) {
+                    var nx, ny;
+                    if (!path) {
+                        return ["C", d.x, d.y, d.x, d.y, d.x, d.y];
+                    }
+                    !(path[0] in {T:1, Q:1}) && (d.qx = d.qy = null);
+                    switch (path[0]) {
+                        case "M":
+                            d.X = path[1];
+                            d.Y = path[2];
+                            break;
+                        case "A":
+                            path = ["C"][concat](a2c[apply](0, [d.x, d.y][concat](path.slice(1))));
+                            break;
+                        case "S":
+                            if (pcom == "C" || pcom == "S") { // In "S" case we have to take into account, if the previous command is C/S.
+                                nx = d.x * 2 - d.bx;          // And reflect the previous
+                                ny = d.y * 2 - d.by;          // command's control point relative to the current point.
+                            }
+                            else {                            // or some else or nothing
+                                nx = d.x;
+                                ny = d.y;
+                            }
+                            path = ["C", nx, ny][concat](path.slice(1));
+                            break;
+                        case "T":
+                            if (pcom == "Q" || pcom == "T") { // In "T" case we have to take into account, if the previous command is Q/T.
+                                d.qx = d.x * 2 - d.qx;        // And make a reflection similar
+                                d.qy = d.y * 2 - d.qy;        // to case "S".
+                            }
+                            else {                            // or something else or nothing
+                                d.qx = d.x;
+                                d.qy = d.y;
+                            }
+                            path = ["C"][concat](q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));
+                            break;
+                        case "Q":
+                            d.qx = path[1];
+                            d.qy = path[2];
+                            path = ["C"][concat](q2c(d.x, d.y, path[1], path[2], path[3], path[4]));
+                            break;
+                        case "L":
+                            path = ["C"][concat](l2c(d.x, d.y, path[1], path[2]));
+                            break;
+                        case "H":
+                            path = ["C"][concat](l2c(d.x, d.y, path[1], d.y));
+                            break;
+                        case "V":
+                            path = ["C"][concat](l2c(d.x, d.y, d.x, path[1]));
+                            break;
+                        case "Z":
+                            path = ["C"][concat](l2c(d.x, d.y, d.X, d.Y));
+                            break;
+                    }
+                    return path;
+                },
+                fixArc = function (pp, i) {
+                    if (pp[i].length > 7) {
+                        pp[i].shift();
+                        var pi = pp[i];
+                        while (pi.length) {
+                            pp.splice(i++, 0, ["C"][concat](pi.splice(0, 6)));
+                        }
+                        pp.splice(i, 1);
+                        ii = mmax(p.length, p2 && p2.length || 0);
+                    }
+                },
+                fixM = function (path1, path2, a1, a2, i) {
+                    if (path1 && path2 && path1[i][0] == "M" && path2[i][0] != "M") {
+                        path2.splice(i, 0, ["M", a2.x, a2.y]);
+                        a1.bx = 0;
+                        a1.by = 0;
+                        a1.x = path1[i][1];
+                        a1.y = path1[i][2];
+                        ii = mmax(p.length, p2 && p2.length || 0);
+                    }
+                };
+            for (var i = 0, ii = mmax(p.length, p2 && p2.length || 0); i < ii; i++) {
+                p[i] = processPath(p[i], attrs);
+                fixArc(p, i);
+                p2 && (p2[i] = processPath(p2[i], attrs2));
+                p2 && fixArc(p2, i);
+                fixM(p, p2, attrs, attrs2, i);
+                fixM(p2, p, attrs2, attrs, i);
+                var seg = p[i],
+                    seg2 = p2 && p2[i],
+                    seglen = seg.length,
+                    seg2len = p2 && seg2.length;
+                attrs.x = seg[seglen - 2];
+                attrs.y = seg[seglen - 1];
+                attrs.bx = toFloat(seg[seglen - 4]) || attrs.x;
+                attrs.by = toFloat(seg[seglen - 3]) || attrs.y;
+                attrs2.bx = p2 && (toFloat(seg2[seg2len - 4]) || attrs2.x);
+                attrs2.by = p2 && (toFloat(seg2[seg2len - 3]) || attrs2.y);
+                attrs2.x = p2 && seg2[seg2len - 2];
+                attrs2.y = p2 && seg2[seg2len - 1];
+            }
+            if (!p2) {
+                pth.curve = pathClone(p);
+            }
+            return p2 ? [p, p2] : p;
+        }, null, pathClone),
+        parseDots = R._parseDots = cacher(function (gradient) {
+            var dots = [];
+            for (var i = 0, ii = gradient.length; i < ii; i++) {
+                var dot = {},
+                    par = gradient[i].match(/^([^:]*):?([\d\.]*)/);
+                dot.color = R.getRGB(par[1]);
+                if (dot.color.error) {
+                    return null;
+                }
+                dot.color = dot.color.hex;
+                par[2] && (dot.offset = par[2] + "%");
+                dots.push(dot);
+            }
+            for (i = 1, ii = dots.length - 1; i < ii; i++) {
+                if (!dots[i].offset) {
+                    var start = toFloat(dots[i - 1].offset || 0),
+                        end = 0;
+                    for (var j = i + 1; j < ii; j++) {
+                        if (dots[j].offset) {
+                            end = dots[j].offset;
+                            break;
+                        }
+                    }
+                    if (!end) {
+                        end = 100;
+                        j = ii;
+                    }
+                    end = toFloat(end);
+                    var d = (end - start) / (j - i + 1);
+                    for (; i < j; i++) {
+                        start += d;
+                        dots[i].offset = start + "%";
+                    }
+                }
+            }
+            return dots;
+        }),
+        tear = R._tear = function (el, paper) {
+            el == paper.top && (paper.top = el.prev);
+            el == paper.bottom && (paper.bottom = el.next);
+            el.next && (el.next.prev = el.prev);
+            el.prev && (el.prev.next = el.next);
+        },
+        tofront = R._tofront = function (el, paper) {
+            if (paper.top === el) {
+                return;
+            }
+            tear(el, paper);
+            el.next = null;
+            el.prev = paper.top;
+            paper.top.next = el;
+            paper.top = el;
+        },
+        toback = R._toback = function (el, paper) {
+            if (paper.bottom === el) {
+                return;
+            }
+            tear(el, paper);
+            el.next = paper.bottom;
+            el.prev = null;
+            paper.bottom.prev = el;
+            paper.bottom = el;
+        },
+        insertafter = R._insertafter = function (el, el2, paper) {
+            tear(el, paper);
+            el2 == paper.top && (paper.top = el);
+            el2.next && (el2.next.prev = el);
+            el.next = el2.next;
+            el.prev = el2;
+            el2.next = el;
+        },
+        insertbefore = R._insertbefore = function (el, el2, paper) {
+            tear(el, paper);
+            el2 == paper.bottom && (paper.bottom = el);
+            el2.prev && (el2.prev.next = el);
+            el.prev = el2.prev;
+            el2.prev = el;
+            el.next = el2;
+        },
+        /*\
+         * Raphael.toMatrix
+         [ method ]
+         **
+         * Utility method
+         **
+         * Returns matrix of transformations applied to a given path
+         > Parameters
+         - path (string) path string
+         - transform (string|array) transformation string
+         = (object) @Matrix
+        \*/
+        toMatrix = R.toMatrix = function (path, transform) {
+            var bb = pathDimensions(path),
+                el = {
+                    _: {
+                        transform: E
+                    },
+                    getBBox: function () {
+                        return bb;
+                    }
+                };
+            extractTransform(el, transform);
+            return el.matrix;
+        },
+        /*\
+         * Raphael.transformPath
+         [ method ]
+         **
+         * Utility method
+         **
+         * Returns path transformed by a given transformation
+         > Parameters
+         - path (string) path string
+         - transform (string|array) transformation string
+         = (string) path
+        \*/
+        transformPath = R.transformPath = function (path, transform) {
+            return mapPath(path, toMatrix(path, transform));
+        },
+        extractTransform = R._extractTransform = function (el, tstr) {
+            if (tstr == null) {
+                return el._.transform;
+            }
+            tstr = Str(tstr).replace(/\.{3}|\u2026/g, el._.transform || E);
+            var tdata = R.parseTransformString(tstr),
+                deg = 0,
+                dx = 0,
+                dy = 0,
+                sx = 1,
+                sy = 1,
+                _ = el._,
+                m = new Matrix;
+            _.transform = tdata || [];
+            if (tdata) {
+                for (var i = 0, ii = tdata.length; i < ii; i++) {
+                    var t = tdata[i],
+                        tlen = t.length,
+                        command = Str(t[0]).toLowerCase(),
+                        absolute = t[0] != command,
+                        inver = absolute ? m.invert() : 0,
+                        x1,
+                        y1,
+                        x2,
+                        y2,
+                        bb;
+                    if (command == "t" && tlen == 3) {
+                        if (absolute) {
+                            x1 = inver.x(0, 0);
+                            y1 = inver.y(0, 0);
+                            x2 = inver.x(t[1], t[2]);
+                            y2 = inver.y(t[1], t[2]);
+                            m.translate(x2 - x1, y2 - y1);
+                        } else {
+                            m.translate(t[1], t[2]);
+                        }
+                    } else if (command == "r") {
+                        if (tlen == 2) {
+                            bb = bb || el.getBBox(1);
+                            m.rotate(t[1], bb.x + bb.width / 2, bb.y + bb.height / 2);
+                            deg += t[1];
+                        } else if (tlen == 4) {
+                            if (absolute) {
+                                x2 = inver.x(t[2], t[3]);
+                                y2 = inver.y(t[2], t[3]);
+                                m.rotate(t[1], x2, y2);
+                            } else {
+                                m.rotate(t[1], t[2], t[3]);
+                            }
+                            deg += t[1];
+                        }
+                    } else if (command == "s") {
+                        if (tlen == 2 || tlen == 3) {
+                            bb = bb || el.getBBox(1);
+                            m.scale(t[1], t[tlen - 1], bb.x + bb.width / 2, bb.y + bb.height / 2);
+                            sx *= t[1];
+                            sy *= t[tlen - 1];
+                        } else if (tlen == 5) {
+                            if (absolute) {
+                                x2 = inver.x(t[3], t[4]);
+                                y2 = inver.y(t[3], t[4]);
+                                m.scale(t[1], t[2], x2, y2);
+                            } else {
+                                m.scale(t[1], t[2], t[3], t[4]);
+                            }
+                            sx *= t[1];
+                            sy *= t[2];
+                        }
+                    } else if (command == "m" && tlen == 7) {
+                        m.add(t[1], t[2], t[3], t[4], t[5], t[6]);
+                    }
+                    _.dirtyT = 1;
+                    el.matrix = m;
+                }
+            }
+
+            /*\
+             * Element.matrix
+             [ property (object) ]
+             **
+             * Keeps @Matrix object, which represents element transformation
+            \*/
+            el.matrix = m;
+
+            _.sx = sx;
+            _.sy = sy;
+            _.deg = deg;
+            _.dx = dx = m.e;
+            _.dy = dy = m.f;
+
+            if (sx == 1 && sy == 1 && !deg && _.bbox) {
+                _.bbox.x += +dx;
+                _.bbox.y += +dy;
+            } else {
+                _.dirtyT = 1;
+            }
+        },
+        getEmpty = function (item) {
+            var l = item[0];
+            switch (l.toLowerCase()) {
+                case "t": return [l, 0, 0];
+                case "m": return [l, 1, 0, 0, 1, 0, 0];
+                case "r": if (item.length == 4) {
+                    return [l, 0, item[2], item[3]];
+                } else {
+                    return [l, 0];
+                }
+                case "s": if (item.length == 5) {
+                    return [l, 1, 1, item[3], item[4]];
+                } else if (item.length == 3) {
+                    return [l, 1, 1];
+                } else {
+                    return [l, 1];
+                }
+            }
+        },
+        equaliseTransform = R._equaliseTransform = function (t1, t2) {
+            t2 = Str(t2).replace(/\.{3}|\u2026/g, t1);
+            t1 = R.parseTransformString(t1) || [];
+            t2 = R.parseTransformString(t2) || [];
+            var maxlength = mmax(t1.length, t2.length),
+                from = [],
+                to = [],
+                i = 0, j, jj,
+                tt1, tt2;
+            for (; i < maxlength; i++) {
+                tt1 = t1[i] || getEmpty(t2[i]);
+                tt2 = t2[i] || getEmpty(tt1);
+                if ((tt1[0] != tt2[0]) ||
+                    (tt1[0].toLowerCase() == "r" && (tt1[2] != tt2[2] || tt1[3] != tt2[3])) ||
+                    (tt1[0].toLowerCase() == "s" && (tt1[3] != tt2[3] || tt1[4] != tt2[4]))
+                    ) {
+                    return;
+                }
+                from[i] = [];
+                to[i] = [];
+                for (j = 0, jj = mmax(tt1.length, tt2.length); j < jj; j++) {
+                    j in tt1 && (from[i][j] = tt1[j]);
+                    j in tt2 && (to[i][j] = tt2[j]);
+                }
+            }
+            return {
+                from: from,
+                to: to
+            };
+        };
+    R._getContainer = function (x, y, w, h) {
+        var container;
+        container = h == null && !R.is(x, "object") ? g.doc.getElementById(x) : x;
+        if (container == null) {
+            return;
+        }
+        if (container.tagName) {
+            if (y == null) {
+                return {
+                    container: container,
+                    width: container.style.pixelWidth || container.offsetWidth,
+                    height: container.style.pixelHeight || container.offsetHeight
+                };
+            } else {
+                return {
+                    container: container,
+                    width: y,
+                    height: w
+                };
+            }
+        }
+        return {
+            container: 1,
+            x: x,
+            y: y,
+            width: w,
+            height: h
+        };
+    };
+    /*\
+     * Raphael.pathToRelative
+     [ method ]
+     **
+     * Utility method
+     **
+     * Converts path to relative form
+     > Parameters
+     - pathString (string|array) path string or array of segments
+     = (array) array of segments.
+    \*/
+    R.pathToRelative = pathToRelative;
+    R._engine = {};
+    /*\
+     * Raphael.path2curve
+     [ method ]
+     **
+     * Utility method
+     **
+     * Converts path to a new path where all segments are cubic bezier curves.
+     > Parameters
+     - pathString (string|array) path string or array of segments
+     = (array) array of segments.
+    \*/
+    R.path2curve = path2curve;
+    /*\
+     * Raphael.matrix
+     [ method ]
+     **
+     * Utility method
+     **
+     * Returns matrix based on given parameters.
+     > Parameters
+     - a (number)
+     - b (number)
+     - c (number)
+     - d (number)
+     - e (number)
+     - f (number)
+     = (object) @Matrix
+    \*/
+    R.matrix = function (a, b, c, d, e, f) {
+        return new Matrix(a, b, c, d, e, f);
+    };
+    function Matrix(a, b, c, d, e, f) {
+        if (a != null) {
+            this.a = +a;
+            this.b = +b;
+            this.c = +c;
+            this.d = +d;
+            this.e = +e;
+            this.f = +f;
+        } else {
+            this.a = 1;
+            this.b = 0;
+            this.c = 0;
+            this.d = 1;
+            this.e = 0;
+            this.f = 0;
+        }
+    }
+    (function (matrixproto) {
+        /*\
+         * Matrix.add
+         [ method ]
+         **
+         * Adds given matrix to existing one.
+         > Parameters
+         - a (number)
+         - b (number)
+         - c (number)
+         - d (number)
+         - e (number)
+         - f (number)
+         or
+         - matrix (object) @Matrix
+        \*/
+        matrixproto.add = function (a, b, c, d, e, f) {
+            var out = [[], [], []],
+                m = [[this.a, this.c, this.e], [this.b, this.d, this.f], [0, 0, 1]],
+                matrix = [[a, c, e], [b, d, f], [0, 0, 1]],
+                x, y, z, res;
+
+            if (a && a instanceof Matrix) {
+                matrix = [[a.a, a.c, a.e], [a.b, a.d, a.f], [0, 0, 1]];
+            }
+
+            for (x = 0; x < 3; x++) {
+                for (y = 0; y < 3; y++) {
+                    res = 0;
+                    for (z = 0; z < 3; z++) {
+                        res += m[x][z] * matrix[z][y];
+                    }
+                    out[x][y] = res;
+                }
+            }
+            this.a = out[0][0];
+            this.b = out[1][0];
+            this.c = out[0][1];
+            this.d = out[1][1];
+            this.e = out[0][2];
+            this.f = out[1][2];
+        };
+        /*\
+         * Matrix.invert
+         [ method ]
+         **
+         * Returns inverted version of the matrix
+         = (object) @Matrix
+        \*/
+        matrixproto.invert = function () {
+            var me = this,
+                x = me.a * me.d - me.b * me.c;
+            return new Matrix(me.d / x, -me.b / x, -me.c / x, me.a / x, (me.c * me.f - me.d * me.e) / x, (me.b * me.e - me.a * me.f) / x);
+        };
+        /*\
+         * Matrix.clone
+         [ method ]
+         **
+         * Returns copy of the matrix
+         = (object) @Matrix
+        \*/
+        matrixproto.clone = function () {
+            return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);
+        };
+        /*\
+         * Matrix.translate
+         [ method ]
+         **
+         * Translate the matrix
+         > Parameters
+         - x (number)
+         - y (number)
+        \*/
+        matrixproto.translate = function (x, y) {
+            this.add(1, 0, 0, 1, x, y);
+        };
+        /*\
+         * Matrix.scale
+         [ method ]
+         **
+         * Scales the matrix
+         > Parameters
+         - x (number)
+         - y (number) #optional
+         - cx (number) #optional
+         - cy (number) #optional
+        \*/
+        matrixproto.scale = function (x, y, cx, cy) {
+            y == null && (y = x);
+            (cx || cy) && this.add(1, 0, 0, 1, cx, cy);
+            this.add(x, 0, 0, y, 0, 0);
+            (cx || cy) && this.add(1, 0, 0, 1, -cx, -cy);
+        };
+        /*\
+         * Matrix.rotate
+         [ method ]
+         **
+         * Rotates the matrix
+         > Parameters
+         - a (number)
+         - x (number)
+         - y (number)
+        \*/
+        matrixproto.rotate = function (a, x, y) {
+            a = R.rad(a);
+            x = x || 0;
+            y = y || 0;
+            var cos = +math.cos(a).toFixed(9),
+                sin = +math.sin(a).toFixed(9);
+            this.add(cos, sin, -sin, cos, x, y);
+            this.add(1, 0, 0, 1, -x, -y);
+        };
+        /*\
+         * Matrix.x
+         [ method ]
+         **
+         * Return x coordinate for given point after transformation described by the matrix. See also @Matrix.y
+         > Parameters
+         - x (number)
+         - y (number)
+         = (number) x
+        \*/
+        matrixproto.x = function (x, y) {
+            return x * this.a + y * this.c + this.e;
+        };
+        /*\
+         * Matrix.y
+         [ method ]
+         **
+         * Return y coordinate for given point after transformation described by the matrix. See also @Matrix.x
+         > Parameters
+         - x (number)
+         - y (number)
+         = (number) y
+        \*/
+        matrixproto.y = function (x, y) {
+            return x * this.b + y * this.d + this.f;
+        };
+        matrixproto.get = function (i) {
+            return +this[Str.fromCharCode(97 + i)].toFixed(4);
+        };
+        matrixproto.toString = function () {
+            return R.svg ?
+                "matrix(" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() + ")" :
+                [this.get(0), this.get(2), this.get(1), this.get(3), 0, 0].join();
+        };
+        matrixproto.toFilter = function () {
+            return "progid:DXImageTransform.Microsoft.Matrix(M11=" + this.get(0) +
+                ", M12=" + this.get(2) + ", M21=" + this.get(1) + ", M22=" + this.get(3) +
+                ", Dx=" + this.get(4) + ", Dy=" + this.get(5) + ", sizingmethod='auto expand')";
+        };
+        matrixproto.offset = function () {
+            return [this.e.toFixed(4), this.f.toFixed(4)];
+        };
+        function norm(a) {
+            return a[0] * a[0] + a[1] * a[1];
+        }
+        function normalize(a) {
+            var mag = math.sqrt(norm(a));
+            a[0] && (a[0] /= mag);
+            a[1] && (a[1] /= mag);
+        }
+        /*\
+         * Matrix.split
+         [ method ]
+         **
+         * Splits matrix into primitive transformations
+         = (object) in format:
+         o dx (number) translation by x
+         o dy (number) translation by y
+         o scalex (number) scale by x
+         o scaley (number) scale by y
+         o shear (number) shear
+         o rotate (number) rotation in deg
+         o isSimple (boolean) could it be represented via simple transformations
+        \*/
+        matrixproto.split = function () {
+            var out = {};
+            // translation
+            out.dx = this.e;
+            out.dy = this.f;
+
+            // scale and shear
+            var row = [[this.a, this.c], [this.b, this.d]];
+            out.scalex = math.sqrt(norm(row[0]));
+            normalize(row[0]);
+
+            out.shear = row[0][0] * row[1][0] + row[0][1] * row[1][1];
+            row[1] = [row[1][0] - row[0][0] * out.shear, row[1][1] - row[0][1] * out.shear];
+
+            out.scaley = math.sqrt(norm(row[1]));
+            normalize(row[1]);
+            out.shear /= out.scaley;
+
+            // rotation
+            var sin = -row[0][1],
+                cos = row[1][1];
+            if (cos < 0) {
+                out.rotate = R.deg(math.acos(cos));
+                if (sin < 0) {
+                    out.rotate = 360 - out.rotate;
+                }
+            } else {
+                out.rotate = R.deg(math.asin(sin));
+            }
+
+            out.isSimple = !+out.shear.toFixed(9) && (out.scalex.toFixed(9) == out.scaley.toFixed(9) || !out.rotate);
+            out.isSuperSimple = !+out.shear.toFixed(9) && out.scalex.toFixed(9) == out.scaley.toFixed(9) && !out.rotate;
+            out.noRotation = !+out.shear.toFixed(9) && !out.rotate;
+            return out;
+        };
+        /*\
+         * Matrix.toTransformString
+         [ method ]
+         **
+         * Return transform string that represents given matrix
+         = (string) transform string
+        \*/
+        matrixproto.toTransformString = function (shorter) {
+            var s = shorter || this[split]();
+            if (s.isSimple) {
+                s.scalex = +s.scalex.toFixed(4);
+                s.scaley = +s.scaley.toFixed(4);
+                s.rotate = +s.rotate.toFixed(4);
+                return  (s.dx || s.dy ? "t" + [s.dx, s.dy] : E) +
+                        (s.scalex != 1 || s.scaley != 1 ? "s" + [s.scalex, s.scaley, 0, 0] : E) +
+                        (s.rotate ? "r" + [s.rotate, 0, 0] : E);
+            } else {
+                return "m" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)];
+            }
+        };
+    })(Matrix.prototype);
+
+    // WebKit rendering bug workaround method
+    var version = navigator.userAgent.match(/Version\/(.*?)\s/) || navigator.userAgent.match(/Chrome\/(\d+)/);
+    if ((navigator.vendor == "Apple Computer, Inc.") && (version && version[1] < 4 || navigator.platform.slice(0, 2) == "iP") ||
+        (navigator.vendor == "Google Inc." && version && version[1] < 8)) {
+        /*\
+         * Paper.safari
+         [ method ]
+         **
+         * There is an inconvenient rendering bug in Safari (WebKit):
+         * sometimes the rendering should be forced.
+         * This method should help with dealing with this bug.
+        \*/
+        paperproto.safari = function () {
+            var rect = this.rect(-99, -99, this.width + 99, this.height + 99).attr({stroke: "none"});
+            setTimeout(function () {rect.remove();});
+        };
+    } else {
+        paperproto.safari = fun;
+    }
+
+    var preventDefault = function () {
+        this.returnValue = false;
+    },
+    preventTouch = function () {
+        return this.originalEvent.preventDefault();
+    },
+    stopPropagation = function () {
+        this.cancelBubble = true;
+    },
+    stopTouch = function () {
+        return this.originalEvent.stopPropagation();
+    },
+    getEventPosition = function (e) {
+        var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,
+            scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft;
+
+        return {
+            x: e.clientX + scrollX,
+            y: e.clientY + scrollY
+        };
+    },
+    addEvent = (function () {
+        if (g.doc.addEventListener) {
+            return function (obj, type, fn, element) {
+                var f = function (e) {
+                    var pos = getEventPosition(e);
+                    return fn.call(element, e, pos.x, pos.y);
+                };
+                obj.addEventListener(type, f, false);
+
+                if (supportsTouch && touchMap[type]) {
+                    var _f = function (e) {
+                        var pos = getEventPosition(e),
+                            olde = e;
+
+                        for (var i = 0, ii = e.targetTouches && e.targetTouches.length; i < ii; i++) {
+                            if (e.targetTouches[i].target == obj) {
+                                e = e.targetTouches[i];
+                                e.originalEvent = olde;
+                                e.preventDefault = preventTouch;
+                                e.stopPropagation = stopTouch;
+                                break;
+                            }
+                        }
+
+                        return fn.call(element, e, pos.x, pos.y);
+                    };
+                    obj.addEventListener(touchMap[type], _f, false);
+                }
+
+                return function () {
+                    obj.removeEventListener(type, f, false);
+
+                    if (supportsTouch && touchMap[type])
+                        obj.removeEventListener(touchMap[type], f, false);
+
+                    return true;
+                };
+            };
+        } else if (g.doc.attachEvent) {
+            return function (obj, type, fn, element) {
+                var f = function (e) {
+                    e = e || g.win.event;
+                    var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,
+                        scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,
+                        x = e.clientX + scrollX,
+                        y = e.clientY + scrollY;
+                    e.preventDefault = e.preventDefault || preventDefault;
+                    e.stopPropagation = e.stopPropagation || stopPropagation;
+                    return fn.call(element, e, x, y);
+                };
+                obj.attachEvent("on" + type, f);
+                var detacher = function () {
+                    obj.detachEvent("on" + type, f);
+                    return true;
+                };
+                return detacher;
+            };
+        }
+    })(),
+    drag = [],
+    dragMove = function (e) {
+        var x = e.clientX,
+            y = e.clientY,
+            scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,
+            scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,
+            dragi,
+            j = drag.length;
+        while (j--) {
+            dragi = drag[j];
+            if (supportsTouch && e.touches) {
+                var i = e.touches.length,
+                    touch;
+                while (i--) {
+                    touch = e.touches[i];
+                    if (touch.identifier == dragi.el._drag.id) {
+                        x = touch.clientX;
+                        y = touch.clientY;
+                        (e.originalEvent ? e.originalEvent : e).preventDefault();
+                        break;
+                    }
+                }
+            } else {
+                e.preventDefault();
+            }
+            var node = dragi.el.node,
+                o,
+                next = node.nextSibling,
+                parent = node.parentNode,
+                display = node.style.display;
+            g.win.opera && parent.removeChild(node);
+            node.style.display = "none";
+            o = dragi.el.paper.getElementByPoint(x, y);
+            node.style.display = display;
+            g.win.opera && (next ? parent.insertBefore(node, next) : parent.appendChild(node));
+            o && eve("raphael.drag.over." + dragi.el.id, dragi.el, o);
+            x += scrollX;
+            y += scrollY;
+            eve("raphael.drag.move." + dragi.el.id, dragi.move_scope || dragi.el, x - dragi.el._drag.x, y - dragi.el._drag.y, x, y, e);
+        }
+    },
+    dragUp = function (e) {
+        R.unmousemove(dragMove).unmouseup(dragUp);
+        var i = drag.length,
+            dragi;
+        while (i--) {
+            dragi = drag[i];
+            dragi.el._drag = {};
+            eve("raphael.drag.end." + dragi.el.id, dragi.end_scope || dragi.start_scope || dragi.move_scope || dragi.el, e);
+        }
+        drag = [];
+    },
+    /*\
+     * Raphael.el
+     [ property (object) ]
+     **
+     * You can add your own method to elements. This is usefull when you want to hack default functionality or
+     * want to wrap some common transformation or attributes in one method. In difference to canvas methods,
+     * you can redefine element method at any time. Expending element methods wouldn’t affect set.
+     > Usage
+     | Raphael.el.red = function () {
+     |     this.attr({fill: "#f00"});
+     | };
+     | // then use it
+     | paper.circle(100, 100, 20).red();
+    \*/
+    elproto = R.el = {};
+    /*\
+     * Element.click
+     [ method ]
+     **
+     * Adds event handler for click for the element.
+     > Parameters
+     - handler (function) handler for the event
+     = (object) @Element
+    \*/
+    /*\
+     * Element.unclick
+     [ method ]
+     **
+     * Removes event handler for click for the element.
+     > Parameters
+     - handler (function) #optional handler for the event
+     = (object) @Element
+    \*/
+
+    /*\
+     * Element.dblclick
+     [ method ]
+     **
+     * Adds event handler for double click for the element.
+     > Parameters
+     - handler (function) handler for the event
+     = (object) @Element
+    \*/
+    /*\
+     * Element.undblclick
+     [ method ]
+     **
+     * Removes event handler for double click for the element.
+     > Parameters
+     - handler (function) #optional handler for the event
+     = (object) @Element
+    \*/
+
+    /*\
+     * Element.mousedown
+     [ method ]
+     **
+     * Adds event handler for mousedown for the element.
+     > Parameters
+     - handler (function) handler for the event
+     = (object) @Element
+    \*/
+    /*\
+     * Element.unmousedown
+     [ method ]
+     **
+     * Removes event handler for mousedown for the element.
+     > Parameters
+     - handler (function) #optional handler for the event
+     = (object) @Element
+    \*/
+
+    /*\
+     * Element.mousemove
+     [ method ]
+     **
+     * Adds event handler for mousemove for the element.
+     > Parameters
+     - handler (function) handler for the event
+     = (object) @Element
+    \*/
+    /*\
+     * Element.unmousemove
+     [ method ]
+     **
+     * Removes event handler for mousemove for the element.
+     > Parameters
+     - handler (function) #optional handler for the event
+     = (object) @Element
+    \*/
+
+    /*\
+     * Element.mouseout
+     [ method ]
+     **
+     * Adds event handler for mouseout for the element.
+     > Parameters
+     - handler (function) handler for the event
+     = (object) @Element
+    \*/
+    /*\
+     * Element.unmouseout
+     [ method ]
+     **
+     * Removes event handler for mouseout for the element.
+     > Parameters
+     - handler (function) #optional handler for the event
+     = (object) @Element
+    \*/
+
+    /*\
+     * Element.mouseover
+     [ method ]
+     **
+     * Adds event handler for mouseover for the element.
+     > Parameters
+     - handler (function) handler for the event
+     = (object) @Element
+    \*/
+    /*\
+     * Element.unmouseover
+     [ method ]
+     **
+     * Removes event handler for mouseover for the element.
+     > Parameters
+     - handler (function) #optional handler for the event
+     = (object) @Element
+    \*/
+
+    /*\
+     * Element.mouseup
+     [ method ]
+     **
+     * Adds event handler for mouseup for the element.
+     > Parameters
+     - handler (function) handler for the event
+     = (object) @Element
+    \*/
+    /*\
+     * Element.unmouseup
+     [ method ]
+     **
+     * Removes event handler for mouseup for the element.
+     > Parameters
+     - handler (function) #optional handler for the event
+     = (object) @Element
+    \*/
+
+    /*\
+     * Element.touchstart
+     [ method ]
+     **
+     * Adds event handler for touchstart for the element.
+     > Parameters
+     - handler (function) handler for the event
+     = (object) @Element
+    \*/
+    /*\
+     * Element.untouchstart
+     [ method ]
+     **
+     * Removes event handler for touchstart for the element.
+     > Parameters
+     - handler (function) #optional handler for the event
+     = (object) @Element
+    \*/
+
+    /*\
+     * Element.touchmove
+     [ method ]
+     **
+     * Adds event handler for touchmove for the element.
+     > Parameters
+     - handler (function) handler for the event
+     = (object) @Element
+    \*/
+    /*\
+     * Element.untouchmove
+     [ method ]
+     **
+     * Removes event handler for touchmove for the element.
+     > Parameters
+     - handler (function) #optional handler for the event
+     = (object) @Element
+    \*/
+
+    /*\
+     * Element.touchend
+     [ method ]
+     **
+     * Adds event handler for touchend for the element.
+     > Parameters
+     - handler (function) handler for the event
+     = (object) @Element
+    \*/
+    /*\
+     * Element.untouchend
+     [ method ]
+     **
+     * Removes event handler for touchend for the element.
+     > Parameters
+     - handler (function) #optional handler for the event
+     = (object) @Element
+    \*/
+
+    /*\
+     * Element.touchcancel
+     [ method ]
+     **
+     * Adds event handler for touchcancel for the element.
+     > Parameters
+     - handler (function) handler for the event
+     = (object) @Element
+    \*/
+    /*\
+     * Element.untouchcancel
+     [ method ]
+     **
+     * Removes event handler for touchcancel for the element.
+     > Parameters
+     - handler (function) #optional handler for the event
+     = (object) @Element
+    \*/
+    for (var i = events.length; i--;) {
+        (function (eventName) {
+            R[eventName] = elproto[eventName] = function (fn, scope) {
+                if (R.is(fn, "function")) {
+                    this.events = this.events || [];
+                    this.events.push({name: eventName, f: fn, unbind: addEvent(this.shape || this.node || g.doc, eventName, fn, scope || this)});
+                }
+                return this;
+            };
+            R["un" + eventName] = elproto["un" + eventName] = function (fn) {
+                var events = this.events || [],
+                    l = events.length;
+                while (l--){
+                    if (events[l].name == eventName && (R.is(fn, "undefined") || events[l].f == fn)) {
+                        events[l].unbind();
+                        events.splice(l, 1);
+                        !events.length && delete this.events;
+                    }
+                }
+                return this;
+            };
+        })(events[i]);
+    }
+
+    /*\
+     * Element.data
+     [ method ]
+     **
+     * Adds or retrieves given value asociated with given key.
+     ** 
+     * See also @Element.removeData
+     > Parameters
+     - key (string) key to store data
+     - value (any) #optional value to store
+     = (object) @Element
+     * or, if value is not specified:
+     = (any) value
+     * or, if key and value are not specified:
+     = (object) Key/value pairs for all the data associated with the element.
+     > Usage
+     | for (var i = 0, i < 5, i++) {
+     |     paper.circle(10 + 15 * i, 10, 10)
+     |          .attr({fill: "#000"})
+     |          .data("i", i)
+     |          .click(function () {
+     |             alert(this.data("i"));
+     |          });
+     | }
+    \*/
+    elproto.data = function (key, value) {
+        var data = eldata[this.id] = eldata[this.id] || {};
+        if (arguments.length == 0) {
+            return data;
+        }
+        if (arguments.length == 1) {
+            if (R.is(key, "object")) {
+                for (var i in key) if (key[has](i)) {
+                    this.data(i, key[i]);
+                }
+                return this;
+            }
+            eve("raphael.data.get." + this.id, this, data[key], key);
+            return data[key];
+        }
+        data[key] = value;
+        eve("raphael.data.set." + this.id, this, value, key);
+        return this;
+    };
+    /*\
+     * Element.removeData
+     [ method ]
+     **
+     * Removes value associated with an element by given key.
+     * If key is not provided, removes all the data of the element.
+     > Parameters
+     - key (string) #optional key
+     = (object) @Element
+    \*/
+    elproto.removeData = function (key) {
+        if (key == null) {
+            eldata[this.id] = {};
+        } else {
+            eldata[this.id] && delete eldata[this.id][key];
+        }
+        return this;
+    };
+     /*\
+     * Element.getData
+     [ method ]
+     **
+     * Retrieves the element data
+     = (object) data
+    \*/
+    elproto.getData = function () {
+        return clone(eldata[this.id] || {});
+    };
+    /*\
+     * Element.hover
+     [ method ]
+     **
+     * Adds event handlers for hover for the element.
+     > Parameters
+     - f_in (function) handler for hover in
+     - f_out (function) handler for hover out
+     - icontext (object) #optional context for hover in handler
+     - ocontext (object) #optional context for hover out handler
+     = (object) @Element
+    \*/
+    elproto.hover = function (f_in, f_out, scope_in, scope_out) {
+        return this.mouseover(f_in, scope_in).mouseout(f_out, scope_out || scope_in);
+    };
+    /*\
+     * Element.unhover
+     [ method ]
+     **
+     * Removes event handlers for hover for the element.
+     > Parameters
+     - f_in (function) handler for hover in
+     - f_out (function) handler for hover out
+     = (object) @Element
+    \*/
+    elproto.unhover = function (f_in, f_out) {
+        return this.unmouseover(f_in).unmouseout(f_out);
+    };
+    var draggable = [];
+    /*\
+     * Element.drag
+     [ method ]
+     **
+     * Adds event handlers for drag of the element.
+     > Parameters
+     - onmove (function) handler for moving
+     - onstart (function) handler for drag start
+     - onend (function) handler for drag end
+     - mcontext (object) #optional context for moving handler
+     - scontext (object) #optional context for drag start handler
+     - econtext (object) #optional context for drag end handler
+     * Additionaly following `drag` events will be triggered: `drag.start.<id>` on start, 
+     * `drag.end.<id>` on end and `drag.move.<id>` on every move. When element will be dragged over another element 
+     * `drag.over.<id>` will be fired as well.
+     *
+     * Start event and start handler will be called in specified context or in context of the element with following parameters:
+     o x (number) x position of the mouse
+     o y (number) y position of the mouse
+     o event (object) DOM event object
+     * Move event and move handler will be called in specified context or in context of the element with following parameters:
+     o dx (number) shift by x from the start point
+     o dy (number) shift by y from the start point
+     o x (number) x position of the mouse
+     o y (number) y position of the mouse
+     o event (object) DOM event object
+     * End event and end handler will be called in specified context or in context of the element with following parameters:
+     o event (object) DOM event object
+     = (object) @Element
+    \*/
+    elproto.drag = function (onmove, onstart, onend, move_scope, start_scope, end_scope) {
+        function start(e) {
+            (e.originalEvent || e).preventDefault();
+            var x = e.clientX,
+                y = e.clientY,
+                scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,
+                scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft;
+            this._drag.id = e.identifier;
+            if (supportsTouch && e.touches) {
+                var i = e.touches.length, touch;
+                while (i--) {
+                    touch = e.touches[i];
+                    this._drag.id = touch.identifier;
+                    if (touch.identifier == this._drag.id) {
+                        x = touch.clientX;
+                        y = touch.clientY;
+                        break;
+                    }
+                }
+            }
+            this._drag.x = x + scrollX;
+            this._drag.y = y + scrollY;
+            !drag.length && R.mousemove(dragMove).mouseup(dragUp);
+            drag.push({el: this, move_scope: move_scope, start_scope: start_scope, end_scope: end_scope});
+            onstart && eve.on("raphael.drag.start." + this.id, onstart);
+            onmove && eve.on("raphael.drag.move." + this.id, onmove);
+            onend && eve.on("raphael.drag.end." + this.id, onend);
+            eve("raphael.drag.start." + this.id, start_scope || move_scope || this, e.clientX + scrollX, e.clientY + scrollY, e);
+        }
+        this._drag = {};
+        draggable.push({el: this, start: start});
+        this.mousedown(start);
+        return this;
+    };
+    /*\
+     * Element.onDragOver
+     [ method ]
+     **
+     * Shortcut for assigning event handler for `drag.over.<id>` event, where id is id of the element (see @Element.id).
+     > Parameters
+     - f (function) handler for event, first argument would be the element you are dragging over
+    \*/
+    elproto.onDragOver = function (f) {
+        f ? eve.on("raphael.drag.over." + this.id, f) : eve.unbind("raphael.drag.over." + this.id);
+    };
+    /*\
+     * Element.undrag
+     [ method ]
+     **
+     * Removes all drag event handlers from given element.
+    \*/
+    elproto.undrag = function () {
+        var i = draggable.length;
+        while (i--) if (draggable[i].el == this) {
+            this.unmousedown(draggable[i].start);
+            draggable.splice(i, 1);
+            eve.unbind("raphael.drag.*." + this.id);
+        }
+        !draggable.length && R.unmousemove(dragMove).unmouseup(dragUp);
+        drag = [];
+    };
+    /*\
+     * Paper.circle
+     [ method ]
+     **
+     * Draws a circle.
+     **
+     > Parameters
+     **
+     - x (number) x coordinate of the centre
+     - y (number) y coordinate of the centre
+     - r (number) radius
+     = (object) Raphaël element object with type “circle”
+     **
+     > Usage
+     | var c = paper.circle(50, 50, 40);
+    \*/
+    paperproto.circle = function (x, y, r) {
+        var out = R._engine.circle(this, x || 0, y || 0, r || 0);
+        this.__set__ && this.__set__.push(out);
+        return out;
+    };
+    /*\
+     * Paper.rect
+     [ method ]
+     *
+     * Draws a rectangle.
+     **
+     > Parameters
+     **
+     - x (number) x coordinate of the top left corner
+     - y (number) y coordinate of the top left corner
+     - width (number) width
+     - height (number) height
+     - r (number) #optional radius for rounded corners, default is 0
+     = (object) Raphaël element object with type “rect”
+     **
+     > Usage
+     | // regular rectangle
+     | var c = paper.rect(10, 10, 50, 50);
+     | // rectangle with rounded corners
+     | var c = paper.rect(40, 40, 50, 50, 10);
+    \*/
+    paperproto.rect = function (x, y, w, h, r) {
+        var out = R._engine.rect(this, x || 0, y || 0, w || 0, h || 0, r || 0);
+        this.__set__ && this.__set__.push(out);
+        return out;
+    };
+    /*\
+     * Paper.ellipse
+     [ method ]
+     **
+     * Draws an ellipse.
+     **
+     > Parameters
+     **
+     - x (number) x coordinate of the centre
+     - y (number) y coordinate of the centre
+     - rx (number) horizontal radius
+     - ry (number) vertical radius
+     = (object) Raphaël element object with type “ellipse”
+     **
+     > Usage
+     | var c = paper.ellipse(50, 50, 40, 20);
+    \*/
+    paperproto.ellipse = function (x, y, rx, ry) {
+        var out = R._engine.ellipse(this, x || 0, y || 0, rx || 0, ry || 0);
+        this.__set__ && this.__set__.push(out);
+        return out;
+    };
+    /*\
+     * Paper.path
+     [ method ]
+     **
+     * Creates a path element by given path data string.
+     > Parameters
+     - pathString (string) #optional path string in SVG format.
+     * Path string consists of one-letter commands, followed by comma seprarated arguments in numercal form. Example:
+     | "M10,20L30,40"
+     * Here we can see two commands: “M”, with arguments `(10, 20)` and “L” with arguments `(30, 40)`. Upper case letter mean command is absolute, lower case—relative.
+     *
+     # <p>Here is short list of commands available, for more details see <a href="http://www.w3.org/TR/SVG/paths.html#PathData" title="Details of a path's data attribute's format are described in the SVG specification.">SVG path string format</a>.</p>
+     # <table><thead><tr><th>Command</th><th>Name</th><th>Parameters</th></tr></thead><tbody>
+     # <tr><td>M</td><td>moveto</td><td>(x y)+</td></tr>
+     # <tr><td>Z</td><td>closepath</td><td>(none)</td></tr>
+     # <tr><td>L</td><td>lineto</td><td>(x y)+</td></tr>
+     # <tr><td>H</td><td>horizontal lineto</td><td>x+</td></tr>
+     # <tr><td>V</td><td>vertical lineto</td><td>y+</td></tr>
+     # <tr><td>C</td><td>curveto</td><td>(x1 y1 x2 y2 x y)+</td></tr>
+     # <tr><td>S</td><td>smooth curveto</td><td>(x2 y2 x y)+</td></tr>
+     # <tr><td>Q</td><td>quadratic Bézier curveto</td><td>(x1 y1 x y)+</td></tr>
+     # <tr><td>T</td><td>smooth quadratic Bézier curveto</td><td>(x y)+</td></tr>
+     # <tr><td>A</td><td>elliptical arc</td><td>(rx ry x-axis-rotation large-arc-flag sweep-flag x y)+</td></tr>
+     # <tr><td>R</td><td><a href="http://en.wikipedia.org/wiki/Catmull–Rom_spline#Catmull.E2.80.93Rom_spline">Catmull-Rom curveto</a>*</td><td>x1 y1 (x y)+</td></tr></tbody></table>
+     * * “Catmull-Rom curveto” is a not standard SVG command and added in 2.0 to make life easier.
+     * Note: there is a special case when path consist of just three commands: “M10,10R…z”. In this case path will smoothly connects to its beginning.
+     > Usage
+     | var c = paper.path("M10 10L90 90");
+     | // draw a diagonal line:
+     | // move to 10,10, line to 90,90
+     * For example of path strings, check out these icons: http://raphaeljs.com/icons/
+    \*/
+    paperproto.path = function (pathString) {
+        pathString && !R.is(pathString, string) && !R.is(pathString[0], array) && (pathString += E);
+        var out = R._engine.path(R.format[apply](R, arguments), this);
+        this.__set__ && this.__set__.push(out);
+        return out;
+    };
+    /*\
+     * Paper.image
+     [ method ]
+     **
+     * Embeds an image into the surface.
+     **
+     > Parameters
+     **
+     - src (string) URI of the source image
+     - x (number) x coordinate position
+     - y (number) y coordinate position
+     - width (number) width of the image
+     - height (number) height of the image
+     = (object) Raphaël element object with type “image”
+     **
+     > Usage
+     | var c = paper.image("apple.png", 10, 10, 80, 80);
+    \*/
+    paperproto.image = function (src, x, y, w, h) {
+        var out = R._engine.image(this, src || "about:blank", x || 0, y || 0, w || 0, h || 0);
+        this.__set__ && this.__set__.push(out);
+        return out;
+    };
+    /*\
+     * Paper.text
+     [ method ]
+     **
+     * Draws a text string. If you need line breaks, put “\n” in the string.
+     **
+     > Parameters
+     **
+     - x (number) x coordinate position
+     - y (number) y coordinate position
+     - text (string) The text string to draw
+     = (object) Raphaël element object with type “text”
+     **
+     > Usage
+     | var t = paper.text(50, 50, "Raphaël\nkicks\nbutt!");
+    \*/
+    paperproto.text = function (x, y, text) {
+        var out = R._engine.text(this, x || 0, y || 0, Str(text));
+        this.__set__ && this.__set__.push(out);
+        return out;
+    };
+    /*\
+     * Paper.set
+     [ method ]
+     **
+     * Creates array-like object to keep and operate several elements at once.
+     * Warning: it doesn’t create any elements for itself in the page, it just groups existing elements.
+     * Sets act as pseudo elements — all methods available to an element can be used on a set.
+     = (object) array-like object that represents set of elements
+     **
+     > Usage
+     | var st = paper.set();
+     | st.push(
+     |     paper.circle(10, 10, 5),
+     |     paper.circle(30, 10, 5)
+     | );
+     | st.attr({fill: "red"}); // changes the fill of both circles
+    \*/
+    paperproto.set = function (itemsArray) {
+        !R.is(itemsArray, "array") && (itemsArray = Array.prototype.splice.call(arguments, 0, arguments.length));
+        var out = new Set(itemsArray);
+        this.__set__ && this.__set__.push(out);
+        out["paper"] = this;
+        out["type"] = "set";
+        return out;
+    };
+    /*\
+     * Paper.setStart
+     [ method ]
+     **
+     * Creates @Paper.set. All elements that will be created after calling this method and before calling
+     * @Paper.setFinish will be added to the set.
+     **
+     > Usage
+     | paper.setStart();
+     | paper.circle(10, 10, 5),
+     | paper.circle(30, 10, 5)
+     | var st = paper.setFinish();
+     | st.attr({fill: "red"}); // changes the fill of both circles
+    \*/
+    paperproto.setStart = function (set) {
+        this.__set__ = set || this.set();
+    };
+    /*\
+     * Paper.setFinish
+     [ method ]
+     **
+     * See @Paper.setStart. This method finishes catching and returns resulting set.
+     **
+     = (object) set
+    \*/
+    paperproto.setFinish = function (set) {
+        var out = this.__set__;
+        delete this.__set__;
+        return out;
+    };
+    /*\
+     * Paper.setSize
+     [ method ]
+     **
+     * If you need to change dimensions of the canvas call this method
+     **
+     > Parameters
+     **
+     - width (number) new width of the canvas
+     - height (number) new height of the canvas
+    \*/
+    paperproto.setSize = function (width, height) {
+        return R._engine.setSize.call(this, width, height);
+    };
+    /*\
+     * Paper.setViewBox
+     [ method ]
+     **
+     * Sets the view box of the paper. Practically it gives you ability to zoom and pan whole paper surface by 
+     * specifying new boundaries.
+     **
+     > Parameters
+     **
+     - x (number) new x position, default is `0`
+     - y (number) new y position, default is `0`
+     - w (number) new width of the canvas
+     - h (number) new height of the canvas
+     - fit (boolean) `true` if you want graphics to fit into new boundary box
+    \*/
+    paperproto.setViewBox = function (x, y, w, h, fit) {
+        return R._engine.setViewBox.call(this, x, y, w, h, fit);
+    };
+    /*\
+     * Paper.top
+     [ property ]
+     **
+     * Points to the topmost element on the paper
+    \*/
+    /*\
+     * Paper.bottom
+     [ property ]
+     **
+     * Points to the bottom element on the paper
+    \*/
+    paperproto.top = paperproto.bottom = null;
+    /*\
+     * Paper.raphael
+     [ property ]
+     **
+     * Points to the @Raphael object/function
+    \*/
+    paperproto.raphael = R;
+    var getOffset = function (elem) {
+        var box = elem.getBoundingClientRect(),
+            doc = elem.ownerDocument,
+            body = doc.body,
+            docElem = doc.documentElement,
+            clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
+            top  = box.top  + (g.win.pageYOffset || docElem.scrollTop || body.scrollTop ) - clientTop,
+            left = box.left + (g.win.pageXOffset || docElem.scrollLeft || body.scrollLeft) - clientLeft;
+        return {
+            y: top,
+            x: left
+        };
+    };
+    /*\
+     * Paper.getElementByPoint
+     [ method ]
+     **
+     * Returns you topmost element under given point.
+     **
+     = (object) Raphaël element object
+     > Parameters
+     **
+     - x (number) x coordinate from the top left corner of the window
+     - y (number) y coordinate from the top left corner of the window
+     > Usage
+     | paper.getElementByPoint(mouseX, mouseY).attr({stroke: "#f00"});
+    \*/
+    paperproto.getElementByPoint = function (x, y) {
+        var paper = this,
+            svg = paper.canvas,
+            target = g.doc.elementFromPoint(x, y);
+        if (g.win.opera && target.tagName == "svg") {
+            var so = getOffset(svg),
+                sr = svg.createSVGRect();
+            sr.x = x - so.x;
+            sr.y = y - so.y;
+            sr.width = sr.height = 1;
+            var hits = svg.getIntersectionList(sr, null);
+            if (hits.length) {
+                target = hits[hits.length - 1];
+            }
+        }
+        if (!target) {
+            return null;
+        }
+        while (target.parentNode && target != svg.parentNode && !target.raphael) {
+            target = target.parentNode;
+        }
+        target == paper.canvas.parentNode && (target = svg);
+        target = target && target.raphael ? paper.getById(target.raphaelid) : null;
+        return target;
+    };
+
+    /*\
+     * Paper.getElementsByBBox
+     [ method ]
+     **
+     * Returns set of elements that have an intersecting bounding box
+     **
+     > Parameters
+     **
+     - bbox (object) bbox to check with
+     = (object) @Set
+     \*/
+    paperproto.getElementsByBBox = function (bbox) {
+        var set = this.set();
+        this.forEach(function (el) {
+            if (R.isBBoxIntersect(el.getBBox(), bbox)) {
+                set.push(el);
+            }
+        });
+        return set;
+    };
+
+    /*\
+     * Paper.getById
+     [ method ]
+     **
+     * Returns you element by its internal ID.
+     **
+     > Parameters
+     **
+     - id (number) id
+     = (object) Raphaël element object
+    \*/
+    paperproto.getById = function (id) {
+        var bot = this.bottom;
+        while (bot) {
+            if (bot.id == id) {
+                return bot;
+            }
+            bot = bot.next;
+        }
+        return null;
+    };
+    /*\
+     * Paper.forEach
+     [ method ]
+     **
+     * Executes given function for each element on the paper
+     *
+     * If callback function returns `false` it will stop loop running.
+     **
+     > Parameters
+     **
+     - callback (function) function to run
+     - thisArg (object) context object for the callback
+     = (object) Paper object
+     > Usage
+     | paper.forEach(function (el) {
+     |     el.attr({ stroke: "blue" });
+     | });
+    \*/
+    paperproto.forEach = function (callback, thisArg) {
+        var bot = this.bottom;
+        while (bot) {
+            if (callback.call(thisArg, bot) === false) {
+                return this;
+            }
+            bot = bot.next;
+        }
+        return this;
+    };
+    /*\
+     * Paper.getElementsByPoint
+     [ method ]
+     **
+     * Returns set of elements that have common point inside
+     **
+     > Parameters
+     **
+     - x (number) x coordinate of the point
+     - y (number) y coordinate of the point
+     = (object) @Set
+    \*/
+    paperproto.getElementsByPoint = function (x, y) {
+        var set = this.set();
+        this.forEach(function (el) {
+            if (el.isPointInside(x, y)) {
+                set.push(el);
+            }
+        });
+        return set;
+    };
+    function x_y() {
+        return this.x + S + this.y;
+    }
+    function x_y_w_h() {
+        return this.x + S + this.y + S + this.width + " \xd7 " + this.height;
+    }
+    /*\
+     * Element.isPointInside
+     [ method ]
+     **
+     * Determine if given point is inside this element’s shape
+     **
+     > Parameters
+     **
+     - x (number) x coordinate of the point
+     - y (number) y coordinate of the point
+     = (boolean) `true` if point inside the shape
+    \*/
+    elproto.isPointInside = function (x, y) {
+        var rp = this.realPath = getPath[this.type](this);
+        if (this.attr('transform') && this.attr('transform').length) {
+            rp = R.transformPath(rp, this.attr('transform'));
+        }
+        return R.isPointInsidePath(rp, x, y);
+    };
+    /*\
+     * Element.getBBox
+     [ method ]
+     **
+     * Return bounding box for a given element
+     **
+     > Parameters
+     **
+     - isWithoutTransform (boolean) flag, `true` if you want to have bounding box before transformations. Default is `false`.
+     = (object) Bounding box object:
+     o {
+     o     x: (number) top left corner x
+     o     y: (number) top left corner y
+     o     x2: (number) bottom right corner x
+     o     y2: (number) bottom right corner y
+     o     width: (number) width
+     o     height: (number) height
+     o }
+    \*/
+    elproto.getBBox = function (isWithoutTransform) {
+        if (this.removed) {
+            return {};
+        }
+        var _ = this._;
+        if (isWithoutTransform) {
+            if (_.dirty || !_.bboxwt) {
+                this.realPath = getPath[this.type](this);
+                _.bboxwt = pathDimensions(this.realPath);
+                _.bboxwt.toString = x_y_w_h;
+                _.dirty = 0;
+            }
+            return _.bboxwt;
+        }
+        if (_.dirty || _.dirtyT || !_.bbox) {
+            if (_.dirty || !this.realPath) {
+                _.bboxwt = 0;
+                this.realPath = getPath[this.type](this);
+            }
+            _.bbox = pathDimensions(mapPath(this.realPath, this.matrix));
+            _.bbox.toString = x_y_w_h;
+            _.dirty = _.dirtyT = 0;
+        }
+        return _.bbox;
+    };
+    /*\
+     * Element.clone
+     [ method ]
+     **
+     = (object) clone of a given element
+     **
+    \*/
+    elproto.clone = function () {
+        if (this.removed) {
+            return null;
+        }
+        var out = this.paper[this.type]().attr(this.attr());
+        this.__set__ && this.__set__.push(out);
+        return out;
+    };
+    /*\
+     * Element.glow
+     [ method ]
+     **
+     * Return set of elements that create glow-like effect around given element. See @Paper.set.
+     *
+     * Note: Glow is not connected to the element. If you change element attributes it won’t adjust itself.
+     **
+     > Parameters
+     **
+     - glow (object) #optional parameters object with all properties optional:
+     o {
+     o     width (number) size of the glow, default is `10`
+     o     fill (boolean) will it be filled, default is `false`
+     o     opacity (number) opacity, default is `0.5`
+     o     offsetx (number) horizontal offset, default is `0`
+     o     offsety (number) vertical offset, default is `0`
+     o     color (string) glow colour, default is `black`
+     o }
+     = (object) @Paper.set of elements that represents glow
+    \*/
+    elproto.glow = function (glow) {
+        if (this.type == "text") {
+            return null;
+        }
+        glow = glow || {};
+        var s = {
+            width: (glow.width || 10) + (+this.attr("stroke-width") || 1),
+            fill: glow.fill || false,
+            opacity: glow.opacity || .5,
+            offsetx: glow.offsetx || 0,
+            offsety: glow.offsety || 0,
+            color: glow.color || "#000"
+        },
+            c = s.width / 2,
+            r = this.paper,
+            out = r.set(),
+            path = this.realPath || getPath[this.type](this);
+        path = this.matrix ? mapPath(path, this.matrix) : path;
+        for (var i = 1; i < c + 1; i++) {
+            out.push(r.path(path).attr({
+                stroke: s.color,
+                fill: s.fill ? s.color : "none",
+                "stroke-linejoin": "round",
+                "stroke-linecap": "round",
+                "stroke-width": +(s.width / c * i).toFixed(3),
+                opacity: +(s.opacity / c).toFixed(3)
+            }));
+        }
+        return out.insertBefore(this).translate(s.offsetx, s.offsety);
+    };
+    var curveslengths = {},
+    getPointAtSegmentLength = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, length) {
+        if (length == null) {
+            return bezlen(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y);
+        } else {
+            return R.findDotsAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, getTatLen(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, length));
+        }
+    },
+    getLengthFactory = function (istotal, subpath) {
+        return function (path, length, onlystart) {
+            path = path2curve(path);
+            var x, y, p, l, sp = "", subpaths = {}, point,
+                len = 0;
+            for (var i = 0, ii = path.length; i < ii; i++) {
+                p = path[i];
+                if (p[0] == "M") {
+                    x = +p[1];
+                    y = +p[2];
+                } else {
+                    l = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);
+                    if (len + l > length) {
+                        if (subpath && !subpaths.start) {
+                            point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);
+                            sp += ["C" + point.start.x, point.start.y, point.m.x, point.m.y, point.x, point.y];
+                            if (onlystart) {return sp;}
+                            subpaths.start = sp;
+                            sp = ["M" + point.x, point.y + "C" + point.n.x, point.n.y, point.end.x, point.end.y, p[5], p[6]].join();
+                            len += l;
+                            x = +p[5];
+                            y = +p[6];
+                            continue;
+                        }
+                        if (!istotal && !subpath) {
+                            point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);
+                            return {x: point.x, y: point.y, alpha: point.alpha};
+                        }
+                    }
+                    len += l;
+                    x = +p[5];
+                    y = +p[6];
+                }
+                sp += p.shift() + p;
+            }
+            subpaths.end = sp;
+            point = istotal ? len : subpath ? subpaths : R.findDotsAtSegment(x, y, p[0], p[1], p[2], p[3], p[4], p[5], 1);
+            point.alpha && (point = {x: point.x, y: point.y, alpha: point.alpha});
+            return point;
+        };
+    };
+    var getTotalLength = getLengthFactory(1),
+        getPointAtLength = getLengthFactory(),
+        getSubpathsAtLength = getLengthFactory(0, 1);
+    /*\
+     * Raphael.getTotalLength
+     [ method ]
+     **
+     * Returns length of the given path in pixels.
+     **
+     > Parameters
+     **
+     - path (string) SVG path string.
+     **
+     = (number) length.
+    \*/
+    R.getTotalLength = getTotalLength;
+    /*\
+     * Raphael.getPointAtLength
+     [ method ]
+     **
+     * Return coordinates of the point located at the given length on the given path.
+     **
+     > Parameters
+     **
+     - path (string) SVG path string
+     - length (number)
+     **
+     = (object) representation of the point:
+     o {
+     o     x: (number) x coordinate
+     o     y: (number) y coordinate
+     o     alpha: (number) angle of derivative
+     o }
+    \*/
+    R.getPointAtLength = getPointAtLength;
+    /*\
+     * Raphael.getSubpath
+     [ method ]
+     **
+     * Return subpath of a given path from given length to given length.
+     **
+     > Parameters
+     **
+     - path (string) SVG path string
+     - from (number) position of the start of the segment
+     - to (number) position of the end of the segment
+     **
+     = (string) pathstring for the segment
+    \*/
+    R.getSubpath = function (path, from, to) {
+        if (this.getTotalLength(path) - to < 1e-6) {
+            return getSubpathsAtLength(path, from).end;
+        }
+        var a = getSubpathsAtLength(path, to, 1);
+        return from ? getSubpathsAtLength(a, from).end : a;
+    };
+    /*\
+     * Element.getTotalLength
+     [ method ]
+     **
+     * Returns length of the path in pixels. Only works for element of “path” type.
+     = (number) length.
+    \*/
+    elproto.getTotalLength = function () {
+        var path = this.getPath();
+        if (!path) {
+            return;
+        }
+
+        if (this.node.getTotalLength) {
+            return this.node.getTotalLength();
+        }
+
+        return getTotalLength(path);
+    };
+    /*\
+     * Element.getPointAtLength
+     [ method ]
+     **
+     * Return coordinates of the point located at the given length on the given path. Only works for element of “path” type.
+     **
+     > Parameters
+     **
+     - length (number)
+     **
+     = (object) representation of the point:
+     o {
+     o     x: (number) x coordinate
+     o     y: (number) y coordinate
+     o     alpha: (number) angle of derivative
+     o }
+    \*/
+    elproto.getPointAtLength = function (length) {
+        var path = this.getPath();
+        if (!path) {
+            return;
+        }
+
+        return getPointAtLength(path, length);
+    };
+    /*\
+     * Element.getPath
+     [ method ]
+     **
+     * Returns path of the element. Only works for elements of “path” type and simple elements like circle.
+     = (object) path
+     **
+    \*/
+    elproto.getPath = function () {
+        var path,
+            getPath = R._getPath[this.type];
+        
+        if (this.type == "text" || this.type == "set") {
+            return;
+        }
+
+        if (getPath) {
+            path = getPath(this);
+        }
+
+        return path;
+    };
+    /*\
+     * Element.getSubpath
+     [ method ]
+     **
+     * Return subpath of a given element from given length to given length. Only works for element of “path” type.
+     **
+     > Parameters
+     **
+     - from (number) position of the start of the segment
+     - to (number) position of the end of the segment
+     **
+     = (string) pathstring for the segment
+    \*/
+    elproto.getSubpath = function (from, to) {
+        var path = this.getPath();
+        if (!path) {
+            return;
+        }
+
+        return R.getSubpath(path, from, to);
+    };
+    /*\
+     * Raphael.easing_formulas
+     [ property ]
+     **
+     * Object that contains easing formulas for animation. You could extend it with your own. By default it has following list of easing:
+     # <ul>
+     #     <li>“linear”</li>
+     #     <li>“&lt;” or “easeIn” or “ease-in”</li>
+     #     <li>“>” or “easeOut” or “ease-out”</li>
+     #     <li>“&lt;>” or “easeInOut” or “ease-in-out”</li>
+     #     <li>“backIn” or “back-in”</li>
+     #     <li>“backOut” or “back-out”</li>
+     #     <li>“elastic”</li>
+     #     <li>“bounce”</li>
+     # </ul>
+     # <p>See also <a href="http://raphaeljs.com/easing.html">Easing demo</a>.</p>
+    \*/
+    var ef = R.easing_formulas = {
+        linear: function (n) {
+            return n;
+        },
+        "<": function (n) {
+            return pow(n, 1.7);
+        },
+        ">": function (n) {
+            return pow(n, .48);
+        },
+        "<>": function (n) {
+            var q = .48 - n / 1.04,
+                Q = math.sqrt(.1734 + q * q),
+                x = Q - q,
+                X = pow(abs(x), 1 / 3) * (x < 0 ? -1 : 1),
+                y = -Q - q,
+                Y = pow(abs(y), 1 / 3) * (y < 0 ? -1 : 1),
+                t = X + Y + .5;
+            return (1 - t) * 3 * t * t + t * t * t;
+        },
+        backIn: function (n) {
+            var s = 1.70158;
+            return n * n * ((s + 1) * n - s);
+        },
+        backOut: function (n) {
+            n = n - 1;
+            var s = 1.70158;
+            return n * n * ((s + 1) * n + s) + 1;
+        },
+        elastic: function (n) {
+            if (n == !!n) {
+                return n;
+            }
+            return pow(2, -10 * n) * math.sin((n - .075) * (2 * PI) / .3) + 1;
+        },
+        bounce: function (n) {
+            var s = 7.5625,
+                p = 2.75,
+                l;
+            if (n < (1 / p)) {
+                l = s * n * n;
+            } else {
+                if (n < (2 / p)) {
+                    n -= (1.5 / p);
+                    l = s * n * n + .75;
+                } else {
+                    if (n < (2.5 / p)) {
+                        n -= (2.25 / p);
+                        l = s * n * n + .9375;
+                    } else {
+                        n -= (2.625 / p);
+                        l = s * n * n + .984375;
+                    }
+                }
+            }
+            return l;
+        }
+    };
+    ef.easeIn = ef["ease-in"] = ef["<"];
+    ef.easeOut = ef["ease-out"] = ef[">"];
+    ef.easeInOut = ef["ease-in-out"] = ef["<>"];
+    ef["back-in"] = ef.backIn;
+    ef["back-out"] = ef.backOut;
+
+    var animationElements = [],
+        requestAnimFrame = window.requestAnimationFrame       ||
+                           window.webkitRequestAnimationFrame ||
+                           window.mozRequestAnimationFrame    ||
+                           window.oRequestAnimationFrame      ||
+                           window.msRequestAnimationFrame     ||
+                           function (callback) {
+                               setTimeout(callback, 16);
+                           },
+        animation = function () {
+            var Now = +new Date,
+                l = 0;
+            for (; l < animationElements.length; l++) {
+                var e = animationElements[l];
+                if (e.el.removed || e.paused) {
+                    continue;
+                }
+                var time = Now - e.start,
+                    ms = e.ms,
+                    easing = e.easing,
+                    from = e.from,
+                    diff = e.diff,
+                    to = e.to,
+                    t = e.t,
+                    that = e.el,
+                    set = {},
+                    now,
+                    init = {},
+                    key;
+                if (e.initstatus) {
+                    time = (e.initstatus * e.anim.top - e.prev) / (e.percent - e.prev) * ms;
+                    e.status = e.initstatus;
+                    delete e.initstatus;
+                    e.stop && animationElements.splice(l--, 1);
+                } else {
+                    e.status = (e.prev + (e.percent - e.prev) * (time / ms)) / e.anim.top;
+                }
+                if (time < 0) {
+                    continue;
+                }
+                if (time < ms) {
+                    var pos = easing(time / ms);
+                    for (var attr in from) if (from[has](attr)) {
+                        switch (availableAnimAttrs[attr]) {
+                            case nu:
+                                now = +from[attr] + pos * ms * diff[attr];
+                                break;
+                            case "colour":
+                                now = "rgb(" + [
+                                    upto255(round(from[attr].r + pos * ms * diff[attr].r)),
+                                    upto255(round(from[attr].g + pos * ms * diff[attr].g)),
+                                    upto255(round(from[attr].b + pos * ms * diff[attr].b))
+                                ].join(",") + ")";
+                                break;
+                            case "path":
+                                now = [];
+                                for (var i = 0, ii = from[attr].length; i < ii; i++) {
+                                    now[i] = [from[attr][i][0]];
+                                    for (var j = 1, jj = from[attr][i].length; j < jj; j++) {
+                                        now[i][j] = +from[attr][i][j] + pos * ms * diff[attr][i][j];
+                                    }
+                                    now[i] = now[i].join(S);
+                                }
+                                now = now.join(S);
+                                break;
+                            case "transform":
+                                if (diff[attr].real) {
+                                    now = [];
+                                    for (i = 0, ii = from[attr].length; i < ii; i++) {
+                                        now[i] = [from[attr][i][0]];
+                                        for (j = 1, jj = from[attr][i].length; j < jj; j++) {
+                                            now[i][j] = from[attr][i][j] + pos * ms * diff[attr][i][j];
+                                        }
+                                    }
+                                } else {
+                                    var get = function (i) {
+                                        return +from[attr][i] + pos * ms * diff[attr][i];
+                                    };
+                                    // now = [["r", get(2), 0, 0], ["t", get(3), get(4)], ["s", get(0), get(1), 0, 0]];
+                                    now = [["m", get(0), get(1), get(2), get(3), get(4), get(5)]];
+                                }
+                                break;
+                            case "csv":
+                                if (attr == "clip-rect") {
+                                    now = [];
+                                    i = 4;
+                                    while (i--) {
+                                        now[i] = +from[attr][i] + pos * ms * diff[attr][i];
+                                    }
+                                }
+                                break;
+                            default:
+                                var from2 = [][concat](from[attr]);
+                                now = [];
+                                i = that.paper.customAttributes[attr].length;
+                                while (i--) {
+                                    now[i] = +from2[i] + pos * ms * diff[attr][i];
+                                }
+                                break;
+                        }
+                        set[attr] = now;
+                    }
+                    that.attr(set);
+                    (function (id, that, anim) {
+                        setTimeout(function () {
+                            eve("raphael.anim.frame." + id, that, anim);
+                        });
+                    })(that.id, that, e.anim);
+                } else {
+                    (function(f, el, a) {
+                        setTimeout(function() {
+                            eve("raphael.anim.frame." + el.id, el, a);
+                            eve("raphael.anim.finish." + el.id, el, a);
+                            R.is(f, "function") && f.call(el);
+                        });
+                    })(e.callback, that, e.anim);
+                    that.attr(to);
+                    animationElements.splice(l--, 1);
+                    if (e.repeat > 1 && !e.next) {
+                        for (key in to) if (to[has](key)) {
+                            init[key] = e.totalOrigin[key];
+                        }
+                        e.el.attr(init);
+                        runAnimation(e.anim, e.el, e.anim.percents[0], null, e.totalOrigin, e.repeat - 1);
+                    }
+                    if (e.next && !e.stop) {
+                        runAnimation(e.anim, e.el, e.next, null, e.totalOrigin, e.repeat);
+                    }
+                }
+            }
+            R.svg && that && that.paper && that.paper.safari();
+            animationElements.length && requestAnimFrame(animation);
+        },
+        upto255 = function (color) {
+            return color > 255 ? 255 : color < 0 ? 0 : color;
+        };
+    /*\
+     * Element.animateWith
+     [ method ]
+     **
+     * Acts similar to @Element.animate, but ensure that given animation runs in sync with another given element.
+     **
+     > Parameters
+     **
+     - el (object) element to sync with
+     - anim (object) animation to sync with
+     - params (object) #optional final attributes for the element, see also @Element.attr
+     - ms (number) #optional number of milliseconds for animation to run
+     - easing (string) #optional easing type. Accept on of @Raphael.easing_formulas or CSS format: `cubic&#x2010;bezier(XX,&#160;XX,&#160;XX,&#160;XX)`
+     - callback (function) #optional callback function. Will be called at the end of animation.
+     * or
+     - element (object) element to sync with
+     - anim (object) animation to sync with
+     - animation (object) #optional animation object, see @Raphael.animation
+     **
+     = (object) original element
+    \*/
+    elproto.animateWith = function (el, anim, params, ms, easing, callback) {
+        var element = this;
+        if (element.removed) {
+            callback && callback.call(element);
+            return element;
+        }
+        var a = params instanceof Animation ? params : R.animation(params, ms, easing, callback),
+            x, y;
+        runAnimation(a, element, a.percents[0], null, element.attr());
+        for (var i = 0, ii = animationElements.length; i < ii; i++) {
+            if (animationElements[i].anim == anim && animationElements[i].el == el) {
+                animationElements[ii - 1].start = animationElements[i].start;
+                break;
+            }
+        }
+        return element;
+        // 
+        // 
+        // var a = params ? R.animation(params, ms, easing, callback) : anim,
+        //     status = element.status(anim);
+        // return this.animate(a).status(a, status * anim.ms / a.ms);
+    };
+    function CubicBezierAtTime(t, p1x, p1y, p2x, p2y, duration) {
+        var cx = 3 * p1x,
+            bx = 3 * (p2x - p1x) - cx,
+            ax = 1 - cx - bx,
+            cy = 3 * p1y,
+            by = 3 * (p2y - p1y) - cy,
+            ay = 1 - cy - by;
+        function sampleCurveX(t) {
+            return ((ax * t + bx) * t + cx) * t;
+        }
+        function solve(x, epsilon) {
+            var t = solveCurveX(x, epsilon);
+            return ((ay * t + by) * t + cy) * t;
+        }
+        function solveCurveX(x, epsilon) {
+            var t0, t1, t2, x2, d2, i;
+            for(t2 = x, i = 0; i < 8; i++) {
+                x2 = sampleCurveX(t2) - x;
+                if (abs(x2) < epsilon) {
+                    return t2;
+                }
+                d2 = (3 * ax * t2 + 2 * bx) * t2 + cx;
+                if (abs(d2) < 1e-6) {
+                    break;
+                }
+                t2 = t2 - x2 / d2;
+            }
+            t0 = 0;
+            t1 = 1;
+            t2 = x;
+            if (t2 < t0) {
+                return t0;
+            }
+            if (t2 > t1) {
+                return t1;
+            }
+            while (t0 < t1) {
+                x2 = sampleCurveX(t2);
+                if (abs(x2 - x) < epsilon) {
+                    return t2;
+                }
+                if (x > x2) {
+                    t0 = t2;
+                } else {
+                    t1 = t2;
+                }
+                t2 = (t1 - t0) / 2 + t0;
+            }
+            return t2;
+        }
+        return solve(t, 1 / (200 * duration));
+    }
+    elproto.onAnimation = function (f) {
+        f ? eve.on("raphael.anim.frame." + this.id, f) : eve.unbind("raphael.anim.frame." + this.id);
+        return this;
+    };
+    function Animation(anim, ms) {
+        var percents = [],
+            newAnim = {};
+        this.ms = ms;
+        this.times = 1;
+        if (anim) {
+            for (var attr in anim) if (anim[has](attr)) {
+                newAnim[toFloat(attr)] = anim[attr];
+                percents.push(toFloat(attr));
+            }
+            percents.sort(sortByNumber);
+        }
+        this.anim = newAnim;
+        this.top = percents[percents.length - 1];
+        this.percents = percents;
+    }
+    /*\
+     * Animation.delay
+     [ method ]
+     **
+     * Creates a copy of existing animation object with given delay.
+     **
+     > Parameters
+     **
+     - delay (number) number of ms to pass between animation start and actual animation
+     **
+     = (object) new altered Animation object
+     | var anim = Raphael.animation({cx: 10, cy: 20}, 2e3);
+     | circle1.animate(anim); // run the given animation immediately
+     | circle2.animate(anim.delay(500)); // run the given animation after 500 ms
+    \*/
+    Animation.prototype.delay = function (delay) {
+        var a = new Animation(this.anim, this.ms);
+        a.times = this.times;
+        a.del = +delay || 0;
+        return a;
+    };
+    /*\
+     * Animation.repeat
+     [ method ]
+     **
+     * Creates a copy of existing animation object with given repetition.
+     **
+     > Parameters
+     **
+     - repeat (number) number iterations of animation. For infinite animation pass `Infinity`
+     **
+     = (object) new altered Animation object
+    \*/
+    Animation.prototype.repeat = function (times) {
+        var a = new Animation(this.anim, this.ms);
+        a.del = this.del;
+        a.times = math.floor(mmax(times, 0)) || 1;
+        return a;
+    };
+    function runAnimation(anim, element, percent, status, totalOrigin, times) {
+        percent = toFloat(percent);
+        var params,
+            isInAnim,
+            isInAnimSet,
+            percents = [],
+            next,
+            prev,
+            timestamp,
+            ms = anim.ms,
+            from = {},
+            to = {},
+            diff = {};
+        if (status) {
+            for (i = 0, ii = animationElements.length; i < ii; i++) {
+                var e = animationElements[i];
+                if (e.el.id == element.id && e.anim == anim) {
+                    if (e.percent != percent) {
+                        animationElements.splice(i, 1);
+                        isInAnimSet = 1;
+                    } else {
+                        isInAnim = e;
+                    }
+                    element.attr(e.totalOrigin);
+                    break;
+                }
+            }
+        } else {
+            status = +to; // NaN
+        }
+        for (var i = 0, ii = anim.percents.length; i < ii; i++) {
+            if (anim.percents[i] == percent || anim.percents[i] > status * anim.top) {
+                percent = anim.percents[i];
+                prev = anim.percents[i - 1] || 0;
+                ms = ms / anim.top * (percent - prev);
+                next = anim.percents[i + 1];
+                params = anim.anim[percent];
+                break;
+            } else if (status) {
+                element.attr(anim.anim[anim.percents[i]]);
+            }
+        }
+        if (!params) {
+            return;
+        }
+        if (!isInAnim) {
+            for (var attr in params) if (params[has](attr)) {
+                if (availableAnimAttrs[has](attr) || element.paper.customAttributes[has](attr)) {
+                    from[attr] = element.attr(attr);
+                    (from[attr] == null) && (from[attr] = availableAttrs[attr]);
+                    to[attr] = params[attr];
+                    switch (availableAnimAttrs[attr]) {
+                        case nu:
+                            diff[attr] = (to[attr] - from[attr]) / ms;
+                            break;
+                        case "colour":
+                            from[attr] = R.getRGB(from[attr]);
+                            var toColour = R.getRGB(to[attr]);
+                            diff[attr] = {
+                                r: (toColour.r - from[attr].r) / ms,
+                                g: (toColour.g - from[attr].g) / ms,
+                                b: (toColour.b - from[attr].b) / ms
+                            };
+                            break;
+                        case "path":
+                            var pathes = path2curve(from[attr], to[attr]),
+                                toPath = pathes[1];
+                            from[attr] = pathes[0];
+                            diff[attr] = [];
+                            for (i = 0, ii = from[attr].length; i < ii; i++) {
+                                diff[attr][i] = [0];
+                                for (var j = 1, jj = from[attr][i].length; j < jj; j++) {
+                                    diff[attr][i][j] = (toPath[i][j] - from[attr][i][j]) / ms;
+                                }
+                            }
+                            break;
+                        case "transform":
+                            var _ = element._,
+                                eq = equaliseTransform(_[attr], to[attr]);
+                            if (eq) {
+                                from[attr] = eq.from;
+                                to[attr] = eq.to;
+                                diff[attr] = [];
+                                diff[attr].real = true;
+                                for (i = 0, ii = from[attr].length; i < ii; i++) {
+                                    diff[attr][i] = [from[attr][i][0]];
+                                    for (j = 1, jj = from[attr][i].length; j < jj; j++) {
+                                        diff[attr][i][j] = (to[attr][i][j] - from[attr][i][j]) / ms;
+                                    }
+                                }
+                            } else {
+                                var m = (element.matrix || new Matrix),
+                                    to2 = {
+                                        _: {transform: _.transform},
+                                        getBBox: function () {
+                                            return element.getBBox(1);
+                                        }
+                                    };
+                                from[attr] = [
+                                    m.a,
+                                    m.b,
+                                    m.c,
+                                    m.d,
+                                    m.e,
+                                    m.f
+                                ];
+                                extractTransform(to2, to[attr]);
+                                to[attr] = to2._.transform;
+                                diff[attr] = [
+                                    (to2.matrix.a - m.a) / ms,
+                                    (to2.matrix.b - m.b) / ms,
+                                    (to2.matrix.c - m.c) / ms,
+                                    (to2.matrix.d - m.d) / ms,
+                                    (to2.matrix.e - m.e) / ms,
+                                    (to2.matrix.f - m.f) / ms
+                                ];
+                                // from[attr] = [_.sx, _.sy, _.deg, _.dx, _.dy];
+                                // var to2 = {_:{}, getBBox: function () { return element.getBBox(); }};
+                                // extractTransform(to2, to[attr]);
+                                // diff[attr] = [
+                                //     (to2._.sx - _.sx) / ms,
+                                //     (to2._.sy - _.sy) / ms,
+                                //     (to2._.deg - _.deg) / ms,
+                                //     (to2._.dx - _.dx) / ms,
+                                //     (to2._.dy - _.dy) / ms
+                                // ];
+                            }
+                            break;
+                        case "csv":
+                            var values = Str(params[attr])[split](separator),
+                                from2 = Str(from[attr])[split](separator);
+                            if (attr == "clip-rect") {
+                                from[attr] = from2;
+                                diff[attr] = [];
+                                i = from2.length;
+                                while (i--) {
+                                    diff[attr][i] = (values[i] - from[attr][i]) / ms;
+                                }
+                            }
+                            to[attr] = values;
+                            break;
+                        default:
+                            values = [][concat](params[attr]);
+                            from2 = [][concat](from[attr]);
+                            diff[attr] = [];
+                            i = element.paper.customAttributes[attr].length;
+                            while (i--) {
+                                diff[attr][i] = ((values[i] || 0) - (from2[i] || 0)) / ms;
+                            }
+                            break;
+                    }
+                }
+            }
+            var easing = params.easing,
+                easyeasy = R.easing_formulas[easing];
+            if (!easyeasy) {
+                easyeasy = Str(easing).match(bezierrg);
+                if (easyeasy && easyeasy.length == 5) {
+                    var curve = easyeasy;
+                    easyeasy = function (t) {
+                        return CubicBezierAtTime(t, +curve[1], +curve[2], +curve[3], +curve[4], ms);
+                    };
+                } else {
+                    easyeasy = pipe;
+                }
+            }
+            timestamp = params.start || anim.start || +new Date;
+            e = {
+                anim: anim,
+                percent: percent,
+                timestamp: timestamp,
+                start: timestamp + (anim.del || 0),
+                status: 0,
+                initstatus: status || 0,
+                stop: false,
+                ms: ms,
+                easing: easyeasy,
+                from: from,
+                diff: diff,
+                to: to,
+                el: element,
+                callback: params.callback,
+                prev: prev,
+                next: next,
+                repeat: times || anim.times,
+                origin: element.attr(),
+                totalOrigin: totalOrigin
+            };
+            animationElements.push(e);
+            if (status && !isInAnim && !isInAnimSet) {
+                e.stop = true;
+                e.start = new Date - ms * status;
+                if (animationElements.length == 1) {
+                    return animation();
+                }
+            }
+            if (isInAnimSet) {
+                e.start = new Date - e.ms * status;
+            }
+            animationElements.length == 1 && requestAnimFrame(animation);
+        } else {
+            isInAnim.initstatus = status;
+            isInAnim.start = new Date - isInAnim.ms * status;
+        }
+        eve("raphael.anim.start." + element.id, element, anim);
+    }
+    /*\
+     * Raphael.animation
+     [ method ]
+     **
+     * Creates an animation object that can be passed to the @Element.animate or @Element.animateWith methods.
+     * See also @Animation.delay and @Animation.repeat methods.
+     **
+     > Parameters
+     **
+     - params (object) final attributes for the element, see also @Element.attr
+     - ms (number) number of milliseconds for animation to run
+     - easing (string) #optional easing type. Accept one of @Raphael.easing_formulas or CSS format: `cubic&#x2010;bezier(XX,&#160;XX,&#160;XX,&#160;XX)`
+     - callback (function) #optional callback function. Will be called at the end of animation.
+     **
+     = (object) @Animation
+    \*/
+    R.animation = function (params, ms, easing, callback) {
+        if (params instanceof Animation) {
+            return params;
+        }
+        if (R.is(easing, "function") || !easing) {
+            callback = callback || easing || null;
+            easing = null;
+        }
+        params = Object(params);
+        ms = +ms || 0;
+        var p = {},
+            json,
+            attr;
+        for (attr in params) if (params[has](attr) && toFloat(attr) != attr && toFloat(attr) + "%" != attr) {
+            json = true;
+            p[attr] = params[attr];
+        }
+        if (!json) {
+            return new Animation(params, ms);
+        } else {
+            easing && (p.easing = easing);
+            callback && (p.callback = callback);
+            return new Animation({100: p}, ms);
+        }
+    };
+    /*\
+     * Element.animate
+     [ method ]
+     **
+     * Creates and starts animation for given element.
+     **
+     > Parameters
+     **
+     - params (object) final attributes for the element, see also @Element.attr
+     - ms (number) number of milliseconds for animation to run
+     - easing (string) #optional easing type. Accept one of @Raphael.easing_formulas or CSS format: `cubic&#x2010;bezier(XX,&#160;XX,&#160;XX,&#160;XX)`
+     - callback (function) #optional callback function. Will be called at the end of animation.
+     * or
+     - animation (object) animation object, see @Raphael.animation
+     **
+     = (object) original element
+    \*/
+    elproto.animate = function (params, ms, easing, callback) {
+        var element = this;
+        if (element.removed) {
+            callback && callback.call(element);
+            return element;
+        }
+        var anim = params instanceof Animation ? params : R.animation(params, ms, easing, callback);
+        runAnimation(anim, element, anim.percents[0], null, element.attr());
+        return element;
+    };
+    /*\
+     * Element.setTime
+     [ method ]
+     **
+     * Sets the status of animation of the element in milliseconds. Similar to @Element.status method.
+     **
+     > Parameters
+     **
+     - anim (object) animation object
+     - value (number) number of milliseconds from the beginning of the animation
+     **
+     = (object) original element if `value` is specified
+     * Note, that during animation following events are triggered:
+     *
+     * On each animation frame event `anim.frame.<id>`, on start `anim.start.<id>` and on end `anim.finish.<id>`.
+    \*/
+    elproto.setTime = function (anim, value) {
+        if (anim && value != null) {
+            this.status(anim, mmin(value, anim.ms) / anim.ms);
+        }
+        return this;
+    };
+    /*\
+     * Element.status
+     [ method ]
+     **
+     * Gets or sets the status of animation of the element.
+     **
+     > Parameters
+     **
+     - anim (object) #optional animation object
+     - value (number) #optional 0 – 1. If specified, method works like a setter and sets the status of a given animation to the value. This will cause animation to jump to the given position.
+     **
+     = (number) status
+     * or
+     = (array) status if `anim` is not specified. Array of objects in format:
+     o {
+     o     anim: (object) animation object
+     o     status: (number) status
+     o }
+     * or
+     = (object) original element if `value` is specified
+    \*/
+    elproto.status = function (anim, value) {
+        var out = [],
+            i = 0,
+            len,
+            e;
+        if (value != null) {
+            runAnimation(anim, this, -1, mmin(value, 1));
+            return this;
+        } else {
+            len = animationElements.length;
+            for (; i < len; i++) {
+                e = animationElements[i];
+                if (e.el.id == this.id && (!anim || e.anim == anim)) {
+                    if (anim) {
+                        return e.status;
+                    }
+                    out.push({
+                        anim: e.anim,
+                        status: e.status
+                    });
+                }
+            }
+            if (anim) {
+                return 0;
+            }
+            return out;
+        }
+    };
+    /*\
+     * Element.pause
+     [ method ]
+     **
+     * Stops animation of the element with ability to resume it later on.
+     **
+     > Parameters
+     **
+     - anim (object) #optional animation object
+     **
+     = (object) original element
+    \*/
+    elproto.pause = function (anim) {
+        for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {
+            if (eve("raphael.anim.pause." + this.id, this, animationElements[i].anim) !== false) {
+                animationElements[i].paused = true;
+            }
+        }
+        return this;
+    };
+    /*\
+     * Element.resume
+     [ method ]
+     **
+     * Resumes animation if it was paused with @Element.pause method.
+     **
+     > Parameters
+     **
+     - anim (object) #optional animation object
+     **
+     = (object) original element
+    \*/
+    elproto.resume = function (anim) {
+        for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {
+            var e = animationElements[i];
+            if (eve("raphael.anim.resume." + this.id, this, e.anim) !== false) {
+                delete e.paused;
+                this.status(e.anim, e.status);
+            }
+        }
+        return this;
+    };
+    /*\
+     * Element.stop
+     [ method ]
+     **
+     * Stops animation of the element.
+     **
+     > Parameters
+     **
+     - anim (object) #optional animation object
+     **
+     = (object) original element
+    \*/
+    elproto.stop = function (anim) {
+        for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {
+            if (eve("raphael.anim.stop." + this.id, this, animationElements[i].anim) !== false) {
+                animationElements.splice(i--, 1);
+            }
+        }
+        return this;
+    };
+    function stopAnimation(paper) {
+        for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.paper == paper) {
+            animationElements.splice(i--, 1);
+        }
+    }
+    eve.on("raphael.remove", stopAnimation);
+    eve.on("raphael.clear", stopAnimation);
+    elproto.toString = function () {
+        return "Rapha\xebl\u2019s object";
+    };
+
+    // Set
+    var Set = function (items) {
+        this.items = [];
+        this.length = 0;
+        this.type = "set";
+        if (items) {
+            for (var i = 0, ii = items.length; i < ii; i++) {
+                if (items[i] && (items[i].constructor == elproto.constructor || items[i].constructor == Set)) {
+                    this[this.items.length] = this.items[this.items.length] = items[i];
+                    this.length++;
+                }
+            }
+        }
+    },
+    setproto = Set.prototype;
+    /*\
+     * Set.push
+     [ method ]
+     **
+     * Adds each argument to the current set.
+     = (object) original element
+    \*/
+    setproto.push = function () {
+        var item,
+            len;
+        for (var i = 0, ii = arguments.length; i < ii; i++) {
+            item = arguments[i];
+            if (item && (item.constructor == elproto.constructor || item.constructor == Set)) {
+                len = this.items.length;
+                this[len] = this.items[len] = item;
+                this.length++;
+            }
+        }
+        return this;
+    };
+    /*\
+     * Set.pop
+     [ method ]
+     **
+     * Removes last element and returns it.
+     = (object) element
+    \*/
+    setproto.pop = function () {
+        this.length && delete this[this.length--];
+        return this.items.pop();
+    };
+    /*\
+     * Set.forEach
+     [ method ]
+     **
+     * Executes given function for each element in the set.
+     *
+     * If function returns `false` it will stop loop running.
+     **
+     > Parameters
+     **
+     - callback (function) function to run
+     - thisArg (object) context object for the callback
+     = (object) Set object
+    \*/
+    setproto.forEach = function (callback, thisArg) {
+        for (var i = 0, ii = this.items.length; i < ii; i++) {
+            if (callback.call(thisArg, this.items[i], i) === false) {
+                return this;
+            }
+        }
+        return this;
+    };
+    for (var method in elproto) if (elproto[has](method)) {
+        setproto[method] = (function (methodname) {
+            return function () {
+                var arg = arguments;
+                return this.forEach(function (el) {
+                    el[methodname][apply](el, arg);
+                });
+            };
+        })(method);
+    }
+    setproto.attr = function (name, value) {
+        if (name && R.is(name, array) && R.is(name[0], "object")) {
+            for (var j = 0, jj = name.length; j < jj; j++) {
+                this.items[j].attr(name[j]);
+            }
+        } else {
+            for (var i = 0, ii = this.items.length; i < ii; i++) {
+                this.items[i].attr(name, value);
+            }
+        }
+        return this;
+    };
+    /*\
+     * Set.clear
+     [ method ]
+     **
+     * Removeds all elements from the set
+    \*/
+    setproto.clear = function () {
+        while (this.length) {
+            this.pop();
+        }
+    };
+    /*\
+     * Set.splice
+     [ method ]
+     **
+     * Removes given element from the set
+     **
+     > Parameters
+     **
+     - index (number) position of the deletion
+     - count (number) number of element to remove
+     - insertion… (object) #optional elements to insert
+     = (object) set elements that were deleted
+    \*/
+    setproto.splice = function (index, count, insertion) {
+        index = index < 0 ? mmax(this.length + index, 0) : index;
+        count = mmax(0, mmin(this.length - index, count));
+        var tail = [],
+            todel = [],
+            args = [],
+            i;
+        for (i = 2; i < arguments.length; i++) {
+            args.push(arguments[i]);
+        }
+        for (i = 0; i < count; i++) {
+            todel.push(this[index + i]);
+        }
+        for (; i < this.length - index; i++) {
+            tail.push(this[index + i]);
+        }
+        var arglen = args.length;
+        for (i = 0; i < arglen + tail.length; i++) {
+            this.items[index + i] = this[index + i] = i < arglen ? args[i] : tail[i - arglen];
+        }
+        i = this.items.length = this.length -= count - arglen;
+        while (this[i]) {
+            delete this[i++];
+        }
+        return new Set(todel);
+    };
+    /*\
+     * Set.exclude
+     [ method ]
+     **
+     * Removes given element from the set
+     **
+     > Parameters
+     **
+     - element (object) element to remove
+     = (boolean) `true` if object was found & removed from the set
+    \*/
+    setproto.exclude = function (el) {
+        for (var i = 0, ii = this.length; i < ii; i++) if (this[i] == el) {
+            this.splice(i, 1);
+            return true;
+        }
+    };
+    setproto.animate = function (params, ms, easing, callback) {
+        (R.is(easing, "function") || !easing) && (callback = easing || null);
+        var len = this.items.length,
+            i = len,
+            item,
+            set = this,
+            collector;
+        if (!len) {
+            return this;
+        }
+        callback && (collector = function () {
+            !--len && callback.call(set);
+        });
+        easing = R.is(easing, string) ? easing : collector;
+        var anim = R.animation(params, ms, easing, collector);
+        item = this.items[--i].animate(anim);
+        while (i--) {
+            this.items[i] && !this.items[i].removed && this.items[i].animateWith(item, anim, anim);
+            (this.items[i] && !this.items[i].removed) || len--;
+        }
+        return this;
+    };
+    setproto.insertAfter = function (el) {
+        var i = this.items.length;
+        while (i--) {
+            this.items[i].insertAfter(el);
+        }
+        return this;
+    };
+    setproto.getBBox = function () {
+        var x = [],
+            y = [],
+            x2 = [],
+            y2 = [];
+        for (var i = this.items.length; i--;) if (!this.items[i].removed) {
+            var box = this.items[i].getBBox();
+            x.push(box.x);
+            y.push(box.y);
+            x2.push(box.x + box.width);
+            y2.push(box.y + box.height);
+        }
+        x = mmin[apply](0, x);
+        y = mmin[apply](0, y);
+        x2 = mmax[apply](0, x2);
+        y2 = mmax[apply](0, y2);
+        return {
+            x: x,
+            y: y,
+            x2: x2,
+            y2: y2,
+            width: x2 - x,
+            height: y2 - y
+        };
+    };
+    setproto.clone = function (s) {
+        s = this.paper.set();
+        for (var i = 0, ii = this.items.length; i < ii; i++) {
+            s.push(this.items[i].clone());
+        }
+        return s;
+    };
+    setproto.toString = function () {
+        return "Rapha\xebl\u2018s set";
+    };
+
+    setproto.glow = function(glowConfig) {
+        var ret = this.paper.set();
+        this.forEach(function(shape, index){
+            var g = shape.glow(glowConfig);
+            if(g != null){
+                g.forEach(function(shape2, index2){
+                    ret.push(shape2);
+                });
+            }
+        });
+        return ret;
+    };
+
+
+    /*\
+     * Set.isPointInside
+     [ method ]
+     **
+     * Determine if given point is inside this set’s elements
+     **
+     > Parameters
+     **
+     - x (number) x coordinate of the point
+     - y (number) y coordinate of the point
+     = (boolean) `true` if point is inside any of the set's elements
+     \*/
+    setproto.isPointInside = function (x, y) {
+        var isPointInside = false;
+        this.forEach(function (el) {
+            if (el.isPointInside(x, y)) {
+                console.log('runned');
+                isPointInside = true;
+                return false; // stop loop
+            }
+        });
+        return isPointInside;
+    };
+
+    /*\
+     * Raphael.registerFont
+     [ method ]
+     **
+     * Adds given font to the registered set of fonts for Raphaël. Should be used as an internal call from within Cufón’s font file.
+     * Returns original parameter, so it could be used with chaining.
+     # <a href="http://wiki.github.com/sorccu/cufon/about">More about Cufón and how to convert your font form TTF, OTF, etc to JavaScript file.</a>
+     **
+     > Parameters
+     **
+     - font (object) the font to register
+     = (object) the font you passed in
+     > Usage
+     | Cufon.registerFont(Raphael.registerFont({…}));
+    \*/
+    R.registerFont = function (font) {
+        if (!font.face) {
+            return font;
+        }
+        this.fonts = this.fonts || {};
+        var fontcopy = {
+                w: font.w,
+                face: {},
+                glyphs: {}
+            },
+            family = font.face["font-family"];
+        for (var prop in font.face) if (font.face[has](prop)) {
+            fontcopy.face[prop] = font.face[prop];
+        }
+        if (this.fonts[family]) {
+            this.fonts[family].push(fontcopy);
+        } else {
+            this.fonts[family] = [fontcopy];
+        }
+        if (!font.svg) {
+            fontcopy.face["units-per-em"] = toInt(font.face["units-per-em"], 10);
+            for (var glyph in font.glyphs) if (font.glyphs[has](glyph)) {
+                var path = font.glyphs[glyph];
+                fontcopy.glyphs[glyph] = {
+                    w: path.w,
+                    k: {},
+                    d: path.d && "M" + path.d.replace(/[mlcxtrv]/g, function (command) {
+                            return {l: "L", c: "C", x: "z", t: "m", r: "l", v: "c"}[command] || "M";
+                        }) + "z"
+                };
+                if (path.k) {
+                    for (var k in path.k) if (path[has](k)) {
+                        fontcopy.glyphs[glyph].k[k] = path.k[k];
+                    }
+                }
+            }
+        }
+        return font;
+    };
+    /*\
+     * Paper.getFont
+     [ method ]
+     **
+     * Finds font object in the registered fonts by given parameters. You could specify only one word from the font name, like “Myriad” for “Myriad Pro”.
+     **
+     > Parameters
+     **
+     - family (string) font family name or any word from it
+     - weight (string) #optional font weight
+     - style (string) #optional font style
+     - stretch (string) #optional font stretch
+     = (object) the font object
+     > Usage
+     | paper.print(100, 100, "Test string", paper.getFont("Times", 800), 30);
+    \*/
+    paperproto.getFont = function (family, weight, style, stretch) {
+        stretch = stretch || "normal";
+        style = style || "normal";
+        weight = +weight || {normal: 400, bold: 700, lighter: 300, bolder: 800}[weight] || 400;
+        if (!R.fonts) {
+            return;
+        }
+        var font = R.fonts[family];
+        if (!font) {
+            var name = new RegExp("(^|\\s)" + family.replace(/[^\w\d\s+!~.:_-]/g, E) + "(\\s|$)", "i");
+            for (var fontName in R.fonts) if (R.fonts[has](fontName)) {
+                if (name.test(fontName)) {
+                    font = R.fonts[fontName];
+                    break;
+                }
+            }
+        }
+        var thefont;
+        if (font) {
+            for (var i = 0, ii = font.length; i < ii; i++) {
+                thefont = font[i];
+                if (thefont.face["font-weight"] == weight && (thefont.face["font-style"] == style || !thefont.face["font-style"]) && thefont.face["font-stretch"] == stretch) {
+                    break;
+                }
+            }
+        }
+        return thefont;
+    };
+    /*\
+     * Paper.print
+     [ method ]
+     **
+     * Creates path that represent given text written using given font at given position with given size.
+     * Result of the method is path element that contains whole text as a separate path.
+     **
+     > Parameters
+     **
+     - x (number) x position of the text
+     - y (number) y position of the text
+     - string (string) text to print
+     - font (object) font object, see @Paper.getFont
+     - size (number) #optional size of the font, default is `16`
+     - origin (string) #optional could be `"baseline"` or `"middle"`, default is `"middle"`
+     - letter_spacing (number) #optional number in range `-1..1`, default is `0`
+     - line_spacing (number) #optional number in range `1..3`, default is `1`
+     = (object) resulting path element, which consist of all letters
+     > Usage
+     | var txt = r.print(10, 50, "print", r.getFont("Museo"), 30).attr({fill: "#fff"});
+    \*/
+    paperproto.print = function (x, y, string, font, size, origin, letter_spacing, line_spacing) {
+        origin = origin || "middle"; // baseline|middle
+        letter_spacing = mmax(mmin(letter_spacing || 0, 1), -1);
+        line_spacing = mmax(mmin(line_spacing || 1, 3), 1);
+        var letters = Str(string)[split](E),
+            shift = 0,
+            notfirst = 0,
+            path = E,
+            scale;
+        R.is(font, "string") && (font = this.getFont(font));
+        if (font) {
+            scale = (size || 16) / font.face["units-per-em"];
+            var bb = font.face.bbox[split](separator),
+                top = +bb[0],
+                lineHeight = bb[3] - bb[1],
+                shifty = 0,
+                height = +bb[1] + (origin == "baseline" ? lineHeight + (+font.face.descent) : lineHeight / 2);
+            for (var i = 0, ii = letters.length; i < ii; i++) {
+                if (letters[i] == "\n") {
+                    shift = 0;
+                    curr = 0;
+                    notfirst = 0;
+                    shifty += lineHeight * line_spacing;
+                } else {
+                    var prev = notfirst && font.glyphs[letters[i - 1]] || {},
+                        curr = font.glyphs[letters[i]];
+                    shift += notfirst ? (prev.w || font.w) + (prev.k && prev.k[letters[i]] || 0) + (font.w * letter_spacing) : 0;
+                    notfirst = 1;
+                }
+                if (curr && curr.d) {
+                    path += R.transformPath(curr.d, ["t", shift * scale, shifty * scale, "s", scale, scale, top, height, "t", (x - top) / scale, (y - height) / scale]);
+                }
+            }
+        }
+        return this.path(path).attr({
+            fill: "#000",
+            stroke: "none"
+        });
+    };
+
+    /*\
+     * Paper.add
+     [ method ]
+     **
+     * Imports elements in JSON array in format `{type: type, <attributes>}`
+     **
+     > Parameters
+     **
+     - json (array)
+     = (object) resulting set of imported elements
+     > Usage
+     | paper.add([
+     |     {
+     |         type: "circle",
+     |         cx: 10,
+     |         cy: 10,
+     |         r: 5
+     |     },
+     |     {
+     |         type: "rect",
+     |         x: 10,
+     |         y: 10,
+     |         width: 10,
+     |         height: 10,
+     |         fill: "#fc0"
+     |     }
+     | ]);
+    \*/
+    paperproto.add = function (json) {
+        if (R.is(json, "array")) {
+            var res = this.set(),
+                i = 0,
+                ii = json.length,
+                j;
+            for (; i < ii; i++) {
+                j = json[i] || {};
+                elements[has](j.type) && res.push(this[j.type]().attr(j));
+            }
+        }
+        return res;
+    };
+
+    /*\
+     * Raphael.format
+     [ method ]
+     **
+     * Simple format function. Replaces construction of type “`{<number>}`” to the corresponding argument.
+     **
+     > Parameters
+     **
+     - token (string) string to format
+     - … (string) rest of arguments will be treated as parameters for replacement
+     = (string) formated string
+     > Usage
+     | var x = 10,
+     |     y = 20,
+     |     width = 40,
+     |     height = 50;
+     | // this will draw a rectangular shape equivalent to "M10,20h40v50h-40z"
+     | paper.path(Raphael.format("M{0},{1}h{2}v{3}h{4}z", x, y, width, height, -width));
+    \*/
+    R.format = function (token, params) {
+        var args = R.is(params, array) ? [0][concat](params) : arguments;
+        token && R.is(token, string) && args.length - 1 && (token = token.replace(formatrg, function (str, i) {
+            return args[++i] == null ? E : args[i];
+        }));
+        return token || E;
+    };
+    /*\
+     * Raphael.fullfill
+     [ method ]
+     **
+     * A little bit more advanced format function than @Raphael.format. Replaces construction of type “`{<name>}`” to the corresponding argument.
+     **
+     > Parameters
+     **
+     - token (string) string to format
+     - json (object) object which properties will be used as a replacement
+     = (string) formated string
+     > Usage
+     | // this will draw a rectangular shape equivalent to "M10,20h40v50h-40z"
+     | paper.path(Raphael.fullfill("M{x},{y}h{dim.width}v{dim.height}h{dim['negative width']}z", {
+     |     x: 10,
+     |     y: 20,
+     |     dim: {
+     |         width: 40,
+     |         height: 50,
+     |         "negative width": -40
+     |     }
+     | }));
+    \*/
+    R.fullfill = (function () {
+        var tokenRegex = /\{([^\}]+)\}/g,
+            objNotationRegex = /(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g, // matches .xxxxx or ["xxxxx"] to run over object properties
+            replacer = function (all, key, obj) {
+                var res = obj;
+                key.replace(objNotationRegex, function (all, name, quote, quotedName, isFunc) {
+                    name = name || quotedName;
+                    if (res) {
+                        if (name in res) {
+                            res = res[name];
+                        }
+                        typeof res == "function" && isFunc && (res = res());
+                    }
+                });
+                res = (res == null || res == obj ? all : res) + "";
+                return res;
+            };
+        return function (str, obj) {
+            return String(str).replace(tokenRegex, function (all, key) {
+                return replacer(all, key, obj);
+            });
+        };
+    })();
+    /*\
+     * Raphael.ninja
+     [ method ]
+     **
+     * If you want to leave no trace of Raphaël (Well, Raphaël creates only one global variable `Raphael`, but anyway.) You can use `ninja` method.
+     * Beware, that in this case plugins could stop working, because they are depending on global variable existance.
+     **
+     = (object) Raphael object
+     > Usage
+     | (function (local_raphael) {
+     |     var paper = local_raphael(10, 10, 320, 200);
+     |     …
+     | })(Raphael.ninja());
+    \*/
+    R.ninja = function () {
+        oldRaphael.was ? (g.win.Raphael = oldRaphael.is) : delete Raphael;
+        return R;
+    };
+    /*\
+     * Raphael.st
+     [ property (object) ]
+     **
+     * You can add your own method to elements and sets. It is wise to add a set method for each element method
+     * you added, so you will be able to call the same method on sets too.
+     **
+     * See also @Raphael.el.
+     > Usage
+     | Raphael.el.red = function () {
+     |     this.attr({fill: "#f00"});
+     | };
+     | Raphael.st.red = function () {
+     |     this.forEach(function (el) {
+     |         el.red();
+     |     });
+     | };
+     | // then use it
+     | paper.set(paper.circle(100, 100, 20), paper.circle(110, 100, 20)).red();
+    \*/
+    R.st = setproto;
+    // Firefox <3.6 fix: http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html
+    (function (doc, loaded, f) {
+        if (doc.readyState == null && doc.addEventListener){
+            doc.addEventListener(loaded, f = function () {
+                doc.removeEventListener(loaded, f, false);
+                doc.readyState = "complete";
+            }, false);
+            doc.readyState = "loading";
+        }
+        function isLoaded() {
+            (/in/).test(doc.readyState) ? setTimeout(isLoaded, 9) : R.eve("raphael.DOMload");
+        }
+        isLoaded();
+    })(document, "DOMContentLoaded");
+
+    eve.on("raphael.DOMload", function () {
+        loaded = true;
+    });
+
+// ┌─────────────────────────────────────────────────────────────────────┐ \\
+// │ Raphaël - JavaScript Vector Library                                 │ \\
+// ├─────────────────────────────────────────────────────────────────────┤ \\
+// │ SVG Module                                                          │ \\
+// ├─────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\
+// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\
+// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\
+// └─────────────────────────────────────────────────────────────────────┘ \\
+
+(function(){
+    if (!R.svg) {
+        return;
+    }
+    var has = "hasOwnProperty",
+        Str = String,
+        toFloat = parseFloat,
+        toInt = parseInt,
+        math = Math,
+        mmax = math.max,
+        abs = math.abs,
+        pow = math.pow,
+        separator = /[, ]+/,
+        eve = R.eve,
+        E = "",
+        S = " ";
+    var xlink = "http://www.w3.org/1999/xlink",
+        markers = {
+            block: "M5,0 0,2.5 5,5z",
+            classic: "M5,0 0,2.5 5,5 3.5,3 3.5,2z",
+            diamond: "M2.5,0 5,2.5 2.5,5 0,2.5z",
+            open: "M6,1 1,3.5 6,6",
+            oval: "M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"
+        },
+        markerCounter = {};
+    R.toString = function () {
+        return  "Your browser supports SVG.\nYou are running Rapha\xebl " + this.version;
+    };
+    var $ = function (el, attr) {
+        if (attr) {
+            if (typeof el == "string") {
+                el = $(el);
+            }
+            for (var key in attr) if (attr[has](key)) {
+                if (key.substring(0, 6) == "xlink:") {
+                    el.setAttributeNS(xlink, key.substring(6), Str(attr[key]));
+                } else {
+                    el.setAttribute(key, Str(attr[key]));
+                }
+            }
+        } else {
+            el = R._g.doc.createElementNS("http://www.w3.org/2000/svg", el);
+            el.style && (el.style.webkitTapHighlightColor = "rgba(0,0,0,0)");
+        }
+        return el;
+    },
+    addGradientFill = function (element, gradient) {
+        var type = "linear",
+            id = element.id + gradient,
+            fx = .5, fy = .5,
+            o = element.node,
+            SVG = element.paper,
+            s = o.style,
+            el = R._g.doc.getElementById(id);
+        if (!el) {
+            gradient = Str(gradient).replace(R._radial_gradient, function (all, _fx, _fy) {
+                type = "radial";
+                if (_fx && _fy) {
+                    fx = toFloat(_fx);
+                    fy = toFloat(_fy);
+                    var dir = ((fy > .5) * 2 - 1);
+                    pow(fx - .5, 2) + pow(fy - .5, 2) > .25 &&
+                        (fy = math.sqrt(.25 - pow(fx - .5, 2)) * dir + .5) &&
+                        fy != .5 &&
+                        (fy = fy.toFixed(5) - 1e-5 * dir);
+                }
+                return E;
+            });
+            gradient = gradient.split(/\s*\-\s*/);
+            if (type == "linear") {
+                var angle = gradient.shift();
+                angle = -toFloat(angle);
+                if (isNaN(angle)) {
+                    return null;
+                }
+                var vector = [0, 0, math.cos(R.rad(angle)), math.sin(R.rad(angle))],
+                    max = 1 / (mmax(abs(vector[2]), abs(vector[3])) || 1);
+                vector[2] *= max;
+                vector[3] *= max;
+                if (vector[2] < 0) {
+                    vector[0] = -vector[2];
+                    vector[2] = 0;
+                }
+                if (vector[3] < 0) {
+                    vector[1] = -vector[3];
+                    vector[3] = 0;
+                }
+            }
+            var dots = R._parseDots(gradient);
+            if (!dots) {
+                return null;
+            }
+            id = id.replace(/[\(\)\s,\xb0#]/g, "_");
+            
+            if (element.gradient && id != element.gradient.id) {
+                SVG.defs.removeChild(element.gradient);
+                delete element.gradient;
+            }
+
+            if (!element.gradient) {
+                el = $(type + "Gradient", {id: id});
+                element.gradient = el;
+                $(el, type == "radial" ? {
+                    fx: fx,
+                    fy: fy
+                } : {
+                    x1: vector[0],
+                    y1: vector[1],
+                    x2: vector[2],
+                    y2: vector[3],
+                    gradientTransform: element.matrix.invert()
+                });
+                SVG.defs.appendChild(el);
+                for (var i = 0, ii = dots.length; i < ii; i++) {
+                    el.appendChild($("stop", {
+                        offset: dots[i].offset ? dots[i].offset : i ? "100%" : "0%",
+                        "stop-color": dots[i].color || "#fff"
+                    }));
+                }
+            }
+        }
+        $(o, {
+            fill: "url(#" + id + ")",
+            opacity: 1,
+            "fill-opacity": 1
+        });
+        s.fill = E;
+        s.opacity = 1;
+        s.fillOpacity = 1;
+        return 1;
+    },
+    updatePosition = function (o) {
+        var bbox = o.getBBox(1);
+        $(o.pattern, {patternTransform: o.matrix.invert() + " translate(" + bbox.x + "," + bbox.y + ")"});
+    },
+    addArrow = function (o, value, isEnd) {
+        if (o.type == "path") {
+            var values = Str(value).toLowerCase().split("-"),
+                p = o.paper,
+                se = isEnd ? "end" : "start",
+                node = o.node,
+                attrs = o.attrs,
+                stroke = attrs["stroke-width"],
+                i = values.length,
+                type = "classic",
+                from,
+                to,
+                dx,
+                refX,
+                attr,
+                w = 3,
+                h = 3,
+                t = 5;
+            while (i--) {
+                switch (values[i]) {
+                    case "block":
+                    case "classic":
+                    case "oval":
+                    case "diamond":
+                    case "open":
+                    case "none":
+                        type = values[i];
+                        break;
+                    case "wide": h = 5; break;
+                    case "narrow": h = 2; break;
+                    case "long": w = 5; break;
+                    case "short": w = 2; break;
+                }
+            }
+            if (type == "open") {
+                w += 2;
+                h += 2;
+                t += 2;
+                dx = 1;
+                refX = isEnd ? 4 : 1;
+                attr = {
+                    fill: "none",
+                    stroke: attrs.stroke
+                };
+            } else {
+                refX = dx = w / 2;
+                attr = {
+                    fill: attrs.stroke,
+                    stroke: "none"
+                };
+            }
+            if (o._.arrows) {
+                if (isEnd) {
+                    o._.arrows.endPath && markerCounter[o._.arrows.endPath]--;
+                    o._.arrows.endMarker && markerCounter[o._.arrows.endMarker]--;
+                } else {
+                    o._.arrows.startPath && markerCounter[o._.arrows.startPath]--;
+                    o._.arrows.startMarker && markerCounter[o._.arrows.startMarker]--;
+                }
+            } else {
+                o._.arrows = {};
+            }
+            if (type != "none") {
+                var pathId = "raphael-marker-" + type,
+                    markerId = "raphael-marker-" + se + type + w + h;
+                if (!R._g.doc.getElementById(pathId)) {
+                    p.defs.appendChild($($("path"), {
+                        "stroke-linecap": "round",
+                        d: markers[type],
+                        id: pathId
+                    }));
+                    markerCounter[pathId] = 1;
+                } else {
+                    markerCounter[pathId]++;
+                }
+                var marker = R._g.doc.getElementById(markerId),
+                    use;
+                if (!marker) {
+                    marker = $($("marker"), {
+                        id: markerId,
+                        markerHeight: h,
+                        markerWidth: w,
+                        orient: "auto",
+                        refX: refX,
+                        refY: h / 2
+                    });
+                    use = $($("use"), {
+                        "xlink:href": "#" + pathId,
+                        transform: (isEnd ? "rotate(180 " + w / 2 + " " + h / 2 + ") " : E) + "scale(" + w / t + "," + h / t + ")",
+                        "stroke-width": (1 / ((w / t + h / t) / 2)).toFixed(4)
+                    });
+                    marker.appendChild(use);
+                    p.defs.appendChild(marker);
+                    markerCounter[markerId] = 1;
+                } else {
+                    markerCounter[markerId]++;
+                    use = marker.getElementsByTagName("use")[0];
+                }
+                $(use, attr);
+                var delta = dx * (type != "diamond" && type != "oval");
+                if (isEnd) {
+                    from = o._.arrows.startdx * stroke || 0;
+                    to = R.getTotalLength(attrs.path) - delta * stroke;
+                } else {
+                    from = delta * stroke;
+                    to = R.getTotalLength(attrs.path) - (o._.arrows.enddx * stroke || 0);
+                }
+                attr = {};
+                attr["marker-" + se] = "url(#" + markerId + ")";
+                if (to || from) {
+                    attr.d = R.getSubpath(attrs.path, from, to);
+                }
+                $(node, attr);
+                o._.arrows[se + "Path"] = pathId;
+                o._.arrows[se + "Marker"] = markerId;
+                o._.arrows[se + "dx"] = delta;
+                o._.arrows[se + "Type"] = type;
+                o._.arrows[se + "String"] = value;
+            } else {
+                if (isEnd) {
+                    from = o._.arrows.startdx * stroke || 0;
+                    to = R.getTotalLength(attrs.path) - from;
+                } else {
+                    from = 0;
+                    to = R.getTotalLength(attrs.path) - (o._.arrows.enddx * stroke || 0);
+                }
+                o._.arrows[se + "Path"] && $(node, {d: R.getSubpath(attrs.path, from, to)});
+                delete o._.arrows[se + "Path"];
+                delete o._.arrows[se + "Marker"];
+                delete o._.arrows[se + "dx"];
+                delete o._.arrows[se + "Type"];
+                delete o._.arrows[se + "String"];
+            }
+            for (attr in markerCounter) if (markerCounter[has](attr) && !markerCounter[attr]) {
+                var item = R._g.doc.getElementById(attr);
+                item && item.parentNode.removeChild(item);
+            }
+        }
+    },
+    dasharray = {
+        "": [0],
+        "none": [0],
+        "-": [3, 1],
+        ".": [1, 1],
+        "-.": [3, 1, 1, 1],
+        "-..": [3, 1, 1, 1, 1, 1],
+        ". ": [1, 3],
+        "- ": [4, 3],
+        "--": [8, 3],
+        "- .": [4, 3, 1, 3],
+        "--.": [8, 3, 1, 3],
+        "--..": [8, 3, 1, 3, 1, 3]
+    },
+    addDashes = function (o, value, params) {
+        value = dasharray[Str(value).toLowerCase()];
+        if (value) {
+            var width = o.attrs["stroke-width"] || "1",
+                butt = {round: width, square: width, butt: 0}[o.attrs["stroke-linecap"] || params["stroke-linecap"]] || 0,
+                dashes = [],
+                i = value.length;
+            while (i--) {
+                dashes[i] = value[i] * width + ((i % 2) ? 1 : -1) * butt;
+            }
+            $(o.node, {"stroke-dasharray": dashes.join(",")});
+        }
+    },
+    setFillAndStroke = function (o, params) {
+        var node = o.node,
+            attrs = o.attrs,
+            vis = node.style.visibility;
+        node.style.visibility = "hidden";
+        for (var att in params) {
+            if (params[has](att)) {
+                if (!R._availableAttrs[has](att)) {
+                    continue;
+                }
+                var value = params[att];
+                attrs[att] = value;
+                switch (att) {
+                    case "blur":
+                        o.blur(value);
+                        break;
+                    case "href":
+                    case "title":
+                        var hl = $("title");
+                        var val = R._g.doc.createTextNode(value);
+                        hl.appendChild(val);
+                        node.appendChild(hl);
+                        break;
+                    case "target":
+                        var pn = node.parentNode;
+                        if (pn.tagName.toLowerCase() != "a") {
+                            var hl = $("a");
+                            pn.insertBefore(hl, node);
+                            hl.appendChild(node);
+                            pn = hl;
+                        }
+                        if (att == "target") {
+                            pn.setAttributeNS(xlink, "show", value == "blank" ? "new" : value);
+                        } else {
+                            pn.setAttributeNS(xlink, att, value);
+                        }
+                        break;
+                    case "cursor":
+                        node.style.cursor = value;
+                        break;
+                    case "transform":
+                        o.transform(value);
+                        break;
+                    case "arrow-start":
+                        addArrow(o, value);
+                        break;
+                    case "arrow-end":
+                        addArrow(o, value, 1);
+                        break;
+                    case "clip-rect":
+                        var rect = Str(value).split(separator);
+                        if (rect.length == 4) {
+                            o.clip && o.clip.parentNode.parentNode.removeChild(o.clip.parentNode);
+                            var el = $("clipPath"),
+                                rc = $("rect");
+                            el.id = R.createUUID();
+                            $(rc, {
+                                x: rect[0],
+                                y: rect[1],
+                                width: rect[2],
+                                height: rect[3]
+                            });
+                            el.appendChild(rc);
+                            o.paper.defs.appendChild(el);
+                            $(node, {"clip-path": "url(#" + el.id + ")"});
+                            o.clip = rc;
+                        }
+                        if (!value) {
+                            var path = node.getAttribute("clip-path");
+                            if (path) {
+                                var clip = R._g.doc.getElementById(path.replace(/(^url\(#|\)$)/g, E));
+                                clip && clip.parentNode.removeChild(clip);
+                                $(node, {"clip-path": E});
+                                delete o.clip;
+                            }
+                        }
+                    break;
+                    case "path":
+                        if (o.type == "path") {
+                            $(node, {d: value ? attrs.path = R._pathToAbsolute(value) : "M0,0"});
+                            o._.dirty = 1;
+                            if (o._.arrows) {
+                                "startString" in o._.arrows && addArrow(o, o._.arrows.startString);
+                                "endString" in o._.arrows && addArrow(o, o._.arrows.endString, 1);
+                            }
+                        }
+                        break;
+                    case "width":
+                        node.setAttribute(att, value);
+                        o._.dirty = 1;
+                        if (attrs.fx) {
+                            att = "x";
+                            value = attrs.x;
+                        } else {
+                            break;
+                        }
+                    case "x":
+                        if (attrs.fx) {
+                            value = -attrs.x - (attrs.width || 0);
+                        }
+                    case "rx":
+                        if (att == "rx" && o.type == "rect") {
+                            break;
+                        }
+                    case "cx":
+                        node.setAttribute(att, value);
+                        o.pattern && updatePosition(o);
+                        o._.dirty = 1;
+                        break;
+                    case "height":
+                        node.setAttribute(att, value);
+                        o._.dirty = 1;
+                        if (attrs.fy) {
+                            att = "y";
+                            value = attrs.y;
+                        } else {
+                            break;
+                        }
+                    case "y":
+                        if (attrs.fy) {
+                            value = -attrs.y - (attrs.height || 0);
+                        }
+                    case "ry":
+                        if (att == "ry" && o.type == "rect") {
+                            break;
+                        }
+                    case "cy":
+                        node.setAttribute(att, value);
+                        o.pattern && updatePosition(o);
+                        o._.dirty = 1;
+                        break;
+                    case "r":
+                        if (o.type == "rect") {
+                            $(node, {rx: value, ry: value});
+                        } else {
+                            node.setAttribute(att, value);
+                        }
+                        o._.dirty = 1;
+                        break;
+                    case "src":
+                        if (o.type == "image") {
+                            node.setAttributeNS(xlink, "href", value);
+                        }
+                        break;
+                    case "stroke-width":
+                        if (o._.sx != 1 || o._.sy != 1) {
+                            value /= mmax(abs(o._.sx), abs(o._.sy)) || 1;
+                        }
+                        if (o.paper._vbSize) {
+                            value *= o.paper._vbSize;
+                        }
+                        node.setAttribute(att, value);
+                        if (attrs["stroke-dasharray"]) {
+                            addDashes(o, attrs["stroke-dasharray"], params);
+                        }
+                        if (o._.arrows) {
+                            "startString" in o._.arrows && addArrow(o, o._.arrows.startString);
+                            "endString" in o._.arrows && addArrow(o, o._.arrows.endString, 1);
+                        }
+                        break;
+                    case "stroke-dasharray":
+                        addDashes(o, value, params);
+                        break;
+                    case "fill":
+                        var isURL = Str(value).match(R._ISURL);
+                        if (isURL) {
+                            el = $("pattern");
+                            var ig = $("image");
+                            el.id = R.createUUID();
+                            $(el, {x: 0, y: 0, patternUnits: "userSpaceOnUse", height: 1, width: 1});
+                            $(ig, {x: 0, y: 0, "xlink:href": isURL[1]});
+                            el.appendChild(ig);
+
+                            (function (el) {
+                                R._preload(isURL[1], function () {
+                                    var w = this.offsetWidth,
+                                        h = this.offsetHeight;
+                                    $(el, {width: w, height: h});
+                                    $(ig, {width: w, height: h});
+                                    o.paper.safari();
+                                });
+                            })(el);
+                            o.paper.defs.appendChild(el);
+                            $(node, {fill: "url(#" + el.id + ")"});
+                            o.pattern = el;
+                            o.pattern && updatePosition(o);
+                            break;
+                        }
+                        var clr = R.getRGB(value);
+                        if (!clr.error) {
+                            delete params.gradient;
+                            delete attrs.gradient;
+                            !R.is(attrs.opacity, "undefined") &&
+                                R.is(params.opacity, "undefined") &&
+                                $(node, {opacity: attrs.opacity});
+                            !R.is(attrs["fill-opacity"], "undefined") &&
+                                R.is(params["fill-opacity"], "undefined") &&
+                                $(node, {"fill-opacity": attrs["fill-opacity"]});
+                        } else if ((o.type == "circle" || o.type == "ellipse" || Str(value).charAt() != "r") && addGradientFill(o, value)) {
+                            if ("opacity" in attrs || "fill-opacity" in attrs) {
+                                var gradient = R._g.doc.getElementById(node.getAttribute("fill").replace(/^url\(#|\)$/g, E));
+                                if (gradient) {
+                                    var stops = gradient.getElementsByTagName("stop");
+                                    $(stops[stops.length - 1], {"stop-opacity": ("opacity" in attrs ? attrs.opacity : 1) * ("fill-opacity" in attrs ? attrs["fill-opacity"] : 1)});
+                                }
+                            }
+                            attrs.gradient = value;
+                            attrs.fill = "none";
+                            break;
+                        }
+                        clr[has]("opacity") && $(node, {"fill-opacity": clr.opacity > 1 ? clr.opacity / 100 : clr.opacity});
+                    case "stroke":
+                        clr = R.getRGB(value);
+                        node.setAttribute(att, clr.hex);
+                        att == "stroke" && clr[has]("opacity") && $(node, {"stroke-opacity": clr.opacity > 1 ? clr.opacity / 100 : clr.opacity});
+                        if (att == "stroke" && o._.arrows) {
+                            "startString" in o._.arrows && addArrow(o, o._.arrows.startString);
+                            "endString" in o._.arrows && addArrow(o, o._.arrows.endString, 1);
+                        }
+                        break;
+                    case "gradient":
+                        (o.type == "circle" || o.type == "ellipse" || Str(value).charAt() != "r") && addGradientFill(o, value);
+                        break;
+                    case "opacity":
+                        if (attrs.gradient && !attrs[has]("stroke-opacity")) {
+                            $(node, {"stroke-opacity": value > 1 ? value / 100 : value});
+                        }
+                        // fall
+                    case "fill-opacity":
+                        if (attrs.gradient) {
+                            gradient = R._g.doc.getElementById(node.getAttribute("fill").replace(/^url\(#|\)$/g, E));
+                            if (gradient) {
+                                stops = gradient.getElementsByTagName("stop");
+                                $(stops[stops.length - 1], {"stop-opacity": value});
+                            }
+                            break;
+                        }
+                    default:
+                        att == "font-size" && (value = toInt(value, 10) + "px");
+                        var cssrule = att.replace(/(\-.)/g, function (w) {
+                            return w.substring(1).toUpperCase();
+                        });
+                        node.style[cssrule] = value;
+                        o._.dirty = 1;
+                        node.setAttribute(att, value);
+                        break;
+                }
+            }
+        }
+
+        tuneText(o, params);
+        node.style.visibility = vis;
+    },
+    leading = 1.2,
+    tuneText = function (el, params) {
+        if (el.type != "text" || !(params[has]("text") || params[has]("font") || params[has]("font-size") || params[has]("x") || params[has]("y"))) {
+            return;
+        }
+        var a = el.attrs,
+            node = el.node,
+            fontSize = node.firstChild ? toInt(R._g.doc.defaultView.getComputedStyle(node.firstChild, E).getPropertyValue("font-size"), 10) : 10;
+
+        if (params[has]("text")) {
+            a.text = params.text;
+            while (node.firstChild) {
+                node.removeChild(node.firstChild);
+            }
+            var texts = Str(params.text).split("\n"),
+                tspans = [],
+                tspan;
+            for (var i = 0, ii = texts.length; i < ii; i++) {
+                tspan = $("tspan");
+                i && $(tspan, {dy: fontSize * leading, x: a.x});
+                tspan.appendChild(R._g.doc.createTextNode(texts[i]));
+                node.appendChild(tspan);
+                tspans[i] = tspan;
+            }
+        } else {
+            tspans = node.getElementsByTagName("tspan");
+            for (i = 0, ii = tspans.length; i < ii; i++) if (i) {
+                $(tspans[i], {dy: fontSize * leading, x: a.x});
+            } else {
+                $(tspans[0], {dy: 0});
+            }
+        }
+        $(node, {x: a.x, y: a.y});
+        el._.dirty = 1;
+        var bb = el._getBBox(),
+            dif = a.y - (bb.y + bb.height / 2);
+        dif && R.is(dif, "finite") && $(tspans[0], {dy: dif});
+    },
+    Element = function (node, svg) {
+        var X = 0,
+            Y = 0;
+        /*\
+         * Element.node
+         [ property (object) ]
+         **
+         * Gives you a reference to the DOM object, so you can assign event handlers or just mess around.
+         **
+         * Note: Don’t mess with it.
+         > Usage
+         | // draw a circle at coordinate 10,10 with radius of 10
+         | var c = paper.circle(10, 10, 10);
+         | c.node.onclick = function () {
+         |     c.attr("fill", "red");
+         | };
+        \*/
+        this[0] = this.node = node;
+        /*\
+         * Element.raphael
+         [ property (object) ]
+         **
+         * Internal reference to @Raphael object. In case it is not available.
+         > Usage
+         | Raphael.el.red = function () {
+         |     var hsb = this.paper.raphael.rgb2hsb(this.attr("fill"));
+         |     hsb.h = 1;
+         |     this.attr({fill: this.paper.raphael.hsb2rgb(hsb).hex});
+         | }
+        \*/
+        node.raphael = true;
+        /*\
+         * Element.id
+         [ property (number) ]
+         **
+         * Unique id of the element. Especially usesful when you want to listen to events of the element, 
+         * because all events are fired in format `<module>.<action>.<id>`. Also useful for @Paper.getById method.
+        \*/
+        this.id = R._oid++;
+        node.raphaelid = this.id;
+        this.matrix = R.matrix();
+        this.realPath = null;
+        /*\
+         * Element.paper
+         [ property (object) ]
+         **
+         * Internal reference to “paper” where object drawn. Mainly for use in plugins and element extensions.
+         > Usage
+         | Raphael.el.cross = function () {
+         |     this.attr({fill: "red"});
+         |     this.paper.path("M10,10L50,50M50,10L10,50")
+         |         .attr({stroke: "red"});
+         | }
+        \*/
+        this.paper = svg;
+        this.attrs = this.attrs || {};
+        this._ = {
+            transform: [],
+            sx: 1,
+            sy: 1,
+            deg: 0,
+            dx: 0,
+            dy: 0,
+            dirty: 1
+        };
+        !svg.bottom && (svg.bottom = this);
+        /*\
+         * Element.prev
+         [ property (object) ]
+         **
+         * Reference to the previous element in the hierarchy.
+        \*/
+        this.prev = svg.top;
+        svg.top && (svg.top.next = this);
+        svg.top = this;
+        /*\
+         * Element.next
+         [ property (object) ]
+         **
+         * Reference to the next element in the hierarchy.
+        \*/
+        this.next = null;
+    },
+    elproto = R.el;
+
+    Element.prototype = elproto;
+    elproto.constructor = Element;
+
+    R._engine.path = function (pathString, SVG) {
+        var el = $("path");
+        SVG.canvas && SVG.canvas.appendChild(el);
+        var p = new Element(el, SVG);
+        p.type = "path";
+        setFillAndStroke(p, {
+            fill: "none",
+            stroke: "#000",
+            path: pathString
+        });
+        return p;
+    };
+    /*\
+     * Element.rotate
+     [ method ]
+     **
+     * Deprecated! Use @Element.transform instead.
+     * Adds rotation by given angle around given point to the list of
+     * transformations of the element.
+     > Parameters
+     - deg (number) angle in degrees
+     - cx (number) #optional x coordinate of the centre of rotation
+     - cy (number) #optional y coordinate of the centre of rotation
+     * If cx & cy aren’t specified centre of the shape is used as a point of rotation.
+     = (object) @Element
+    \*/
+    elproto.rotate = function (deg, cx, cy) {
+        if (this.removed) {
+            return this;
+        }
+        deg = Str(deg).split(separator);
+        if (deg.length - 1) {
+            cx = toFloat(deg[1]);
+            cy = toFloat(deg[2]);
+        }
+        deg = toFloat(deg[0]);
+        (cy == null) && (cx = cy);
+        if (cx == null || cy == null) {
+            var bbox = this.getBBox(1);
+            cx = bbox.x + bbox.width / 2;
+            cy = bbox.y + bbox.height / 2;
+        }
+        this.transform(this._.transform.concat([["r", deg, cx, cy]]));
+        return this;
+    };
+    /*\
+     * Element.scale
+     [ method ]
+     **
+     * Deprecated! Use @Element.transform instead.
+     * Adds scale by given amount relative to given point to the list of
+     * transformations of the element.
+     > Parameters
+     - sx (number) horisontal scale amount
+     - sy (number) vertical scale amount
+     - cx (number) #optional x coordinate of the centre of scale
+     - cy (number) #optional y coordinate of the centre of scale
+     * If cx & cy aren’t specified centre of the shape is used instead.
+     = (object) @Element
+    \*/
+    elproto.scale = function (sx, sy, cx, cy) {
+        if (this.removed) {
+            return this;
+        }
+        sx = Str(sx).split(separator);
+        if (sx.length - 1) {
+            sy = toFloat(sx[1]);
+            cx = toFloat(sx[2]);
+            cy = toFloat(sx[3]);
+        }
+        sx = toFloat(sx[0]);
+        (sy == null) && (sy = sx);
+        (cy == null) && (cx = cy);
+        if (cx == null || cy == null) {
+            var bbox = this.getBBox(1);
+        }
+        cx = cx == null ? bbox.x + bbox.width / 2 : cx;
+        cy = cy == null ? bbox.y + bbox.height / 2 : cy;
+        this.transform(this._.transform.concat([["s", sx, sy, cx, cy]]));
+        return this;
+    };
+    /*\
+     * Element.translate
+     [ method ]
+     **
+     * Deprecated! Use @Element.transform instead.
+     * Adds translation by given amount to the list of transformations of the element.
+     > Parameters
+     - dx (number) horisontal shift
+     - dy (number) vertical shift
+     = (object) @Element
+    \*/
+    elproto.translate = function (dx, dy) {
+        if (this.removed) {
+            return this;
+        }
+        dx = Str(dx).split(separator);
+        if (dx.length - 1) {
+            dy = toFloat(dx[1]);
+        }
+        dx = toFloat(dx[0]) || 0;
+        dy = +dy || 0;
+        this.transform(this._.transform.concat([["t", dx, dy]]));
+        return this;
+    };
+    /*\
+     * Element.transform
+     [ method ]
+     **
+     * Adds transformation to the element which is separate to other attributes,
+     * i.e. translation doesn’t change `x` or `y` of the rectange. The format
+     * of transformation string is similar to the path string syntax:
+     | "t100,100r30,100,100s2,2,100,100r45s1.5"
+     * Each letter is a command. There are four commands: `t` is for translate, `r` is for rotate, `s` is for
+     * scale and `m` is for matrix.
+     *
+     * There are also alternative “absolute” translation, rotation and scale: `T`, `R` and `S`. They will not take previous transformation into account. For example, `...T100,0` will always move element 100 px horisontally, while `...t100,0` could move it vertically if there is `r90` before. Just compare results of `r90t100,0` and `r90T100,0`.
+     *
+     * So, the example line above could be read like “translate by 100, 100; rotate 30° around 100, 100; scale twice around 100, 100;
+     * rotate 45° around centre; scale 1.5 times relative to centre”. As you can see rotate and scale commands have origin
+     * coordinates as optional parameters, the default is the centre point of the element.
+     * Matrix accepts six parameters.
+     > Usage
+     | var el = paper.rect(10, 20, 300, 200);
+     | // translate 100, 100, rotate 45°, translate -100, 0
+     | el.transform("t100,100r45t-100,0");
+     | // if you want you can append or prepend transformations
+     | el.transform("...t50,50");
+     | el.transform("s2...");
+     | // or even wrap
+     | el.transform("t50,50...t-50-50");
+     | // to reset transformation call method with empty string
+     | el.transform("");
+     | // to get current value call it without parameters
+     | console.log(el.transform());
+     > Parameters
+     - tstr (string) #optional transformation string
+     * If tstr isn’t specified
+     = (string) current transformation string
+     * else
+     = (object) @Element
+    \*/
+    elproto.transform = function (tstr) {
+        var _ = this._;
+        if (tstr == null) {
+            return _.transform;
+        }
+        R._extractTransform(this, tstr);
+
+        this.clip && $(this.clip, {transform: this.matrix.invert()});
+        this.pattern && updatePosition(this);
+        this.node && $(this.node, {transform: this.matrix});
+    
+        if (_.sx != 1 || _.sy != 1) {
+            var sw = this.attrs[has]("stroke-width") ? this.attrs["stroke-width"] : 1;
+            this.attr({"stroke-width": sw});
+        }
+
+        return this;
+    };
+    /*\
+     * Element.hide
+     [ method ]
+     **
+     * Makes element invisible. See @Element.show.
+     = (object) @Element
+    \*/
+    elproto.hide = function () {
+        !this.removed && this.paper.safari(this.node.style.display = "none");
+        return this;
+    };
+    /*\
+     * Element.show
+     [ method ]
+     **
+     * Makes element visible. See @Element.hide.
+     = (object) @Element
+    \*/
+    elproto.show = function () {
+        !this.removed && this.paper.safari(this.node.style.display = "");
+        return this;
+    };
+    /*\
+     * Element.remove
+     [ method ]
+     **
+     * Removes element from the paper.
+    \*/
+    elproto.remove = function () {
+        if (this.removed || !this.node.parentNode) {
+            return;
+        }
+        var paper = this.paper;
+        paper.__set__ && paper.__set__.exclude(this);
+        eve.unbind("raphael.*.*." + this.id);
+        if (this.gradient) {
+            paper.defs.removeChild(this.gradient);
+        }
+        R._tear(this, paper);
+        if (this.node.parentNode.tagName.toLowerCase() == "a") {
+            this.node.parentNode.parentNode.removeChild(this.node.parentNode);
+        } else {
+            this.node.parentNode.removeChild(this.node);
+        }
+        for (var i in this) {
+            this[i] = typeof this[i] == "function" ? R._removedFactory(i) : null;
+        }
+        this.removed = true;
+    };
+    elproto._getBBox = function () {
+        if (this.node.style.display == "none") {
+            this.show();
+            var hide = true;
+        }
+        var bbox = {};
+        try {
+            bbox = this.node.getBBox();
+        } catch(e) {
+            // Firefox 3.0.x plays badly here
+        } finally {
+            bbox = bbox || {};
+        }
+        hide && this.hide();
+        return bbox;
+    };
+    /*\
+     * Element.attr
+     [ method ]
+     **
+     * Sets the attributes of the element.
+     > Parameters
+     - attrName (string) attribute’s name
+     - value (string) value
+     * or
+     - params (object) object of name/value pairs
+     * or
+     - attrName (string) attribute’s name
+     * or
+     - attrNames (array) in this case method returns array of current values for given attribute names
+     = (object) @Element if attrsName & value or params are passed in.
+     = (...) value of the attribute if only attrsName is passed in.
+     = (array) array of values of the attribute if attrsNames is passed in.
+     = (object) object of attributes if nothing is passed in.
+     > Possible parameters
+     # <p>Please refer to the <a href="http://www.w3.org/TR/SVG/" title="The W3C Recommendation for the SVG language describes these properties in detail.">SVG specification</a> for an explanation of these parameters.</p>
+     o arrow-end (string) arrowhead on the end of the path. The format for string is `<type>[-<width>[-<length>]]`. Possible types: `classic`, `block`, `open`, `oval`, `diamond`, `none`, width: `wide`, `narrow`, `medium`, length: `long`, `short`, `midium`.
+     o clip-rect (string) comma or space separated values: x, y, width and height
+     o cursor (string) CSS type of the cursor
+     o cx (number) the x-axis coordinate of the center of the circle, or ellipse
+     o cy (number) the y-axis coordinate of the center of the circle, or ellipse
+     o fill (string) colour, gradient or image
+     o fill-opacity (number)
+     o font (string)
+     o font-family (string)
+     o font-size (number) font size in pixels
+     o font-weight (string)
+     o height (number)
+     o href (string) URL, if specified element behaves as hyperlink
+     o opacity (number)
+     o path (string) SVG path string format
+     o r (number) radius of the circle, ellipse or rounded corner on the rect
+     o rx (number) horisontal radius of the ellipse
+     o ry (number) vertical radius of the ellipse
+     o src (string) image URL, only works for @Element.image element
+     o stroke (string) stroke colour
+     o stroke-dasharray (string) [“”, “`-`”, “`.`”, “`-.`”, “`-..`”, “`. `”, “`- `”, “`--`”, “`- .`”, “`--.`”, “`--..`”]
+     o stroke-linecap (string) [“`butt`”, “`square`”, “`round`”]
+     o stroke-linejoin (string) [“`bevel`”, “`round`”, “`miter`”]
+     o stroke-miterlimit (number)
+     o stroke-opacity (number)
+     o stroke-width (number) stroke width in pixels, default is '1'
+     o target (string) used with href
+     o text (string) contents of the text element. Use `\n` for multiline text
+     o text-anchor (string) [“`start`”, “`middle`”, “`end`”], default is “`middle`”
+     o title (string) will create tooltip with a given text
+     o transform (string) see @Element.transform
+     o width (number)
+     o x (number)
+     o y (number)
+     > Gradients
+     * Linear gradient format: “`‹angle›-‹colour›[-‹colour›[:‹offset›]]*-‹colour›`”, example: “`90-#fff-#000`” – 90°
+     * gradient from white to black or “`0-#fff-#f00:20-#000`” – 0° gradient from white via red (at 20%) to black.
+     *
+     * radial gradient: “`r[(‹fx›, ‹fy›)]‹colour›[-‹colour›[:‹offset›]]*-‹colour›`”, example: “`r#fff-#000`” –
+     * gradient from white to black or “`r(0.25, 0.75)#fff-#000`” – gradient from white to black with focus point
+     * at 0.25, 0.75. Focus point coordinates are in 0..1 range. Radial gradients can only be applied to circles and ellipses.
+     > Path String
+     # <p>Please refer to <a href="http://www.w3.org/TR/SVG/paths.html#PathData" title="Details of a path’s data attribute’s format are described in the SVG specification.">SVG documentation regarding path string</a>. Raphaël fully supports it.</p>
+     > Colour Parsing
+     # <ul>
+     #     <li>Colour name (“<code>red</code>”, “<code>green</code>”, “<code>cornflowerblue</code>”, etc)</li>
+     #     <li>#••• — shortened HTML colour: (“<code>#000</code>”, “<code>#fc0</code>”, etc)</li>
+     #     <li>#•••••• — full length HTML colour: (“<code>#000000</code>”, “<code>#bd2300</code>”)</li>
+     #     <li>rgb(•••, •••, •••) — red, green and blue channels’ values: (“<code>rgb(200,&nbsp;100,&nbsp;0)</code>”)</li>
+     #     <li>rgb(•••%, •••%, •••%) — same as above, but in %: (“<code>rgb(100%,&nbsp;175%,&nbsp;0%)</code>”)</li>
+     #     <li>rgba(•••, •••, •••, •••) — red, green and blue channels’ values: (“<code>rgba(200,&nbsp;100,&nbsp;0, .5)</code>”)</li>
+     #     <li>rgba(•••%, •••%, •••%, •••%) — same as above, but in %: (“<code>rgba(100%,&nbsp;175%,&nbsp;0%, 50%)</code>”)</li>
+     #     <li>hsb(•••, •••, •••) — hue, saturation and brightness values: (“<code>hsb(0.5,&nbsp;0.25,&nbsp;1)</code>”)</li>
+     #     <li>hsb(•••%, •••%, •••%) — same as above, but in %</li>
+     #     <li>hsba(•••, •••, •••, •••) — same as above, but with opacity</li>
+     #     <li>hsl(•••, •••, •••) — almost the same as hsb, see <a href="http://en.wikipedia.org/wiki/HSL_and_HSV" title="HSL and HSV - Wikipedia, the free encyclopedia">Wikipedia page</a></li>
+     #     <li>hsl(•••%, •••%, •••%) — same as above, but in %</li>
+     #     <li>hsla(•••, •••, •••, •••) — same as above, but with opacity</li>
+     #     <li>Optionally for hsb and hsl you could specify hue as a degree: “<code>hsl(240deg,&nbsp;1,&nbsp;.5)</code>” or, if you want to go fancy, “<code>hsl(240°,&nbsp;1,&nbsp;.5)</code>”</li>
+     # </ul>
+    \*/
+    elproto.attr = function (name, value) {
+        if (this.removed) {
+            return this;
+        }
+        if (name == null) {
+            var res = {};
+            for (var a in this.attrs) if (this.attrs[has](a)) {
+                res[a] = this.attrs[a];
+            }
+            res.gradient && res.fill == "none" && (res.fill = res.gradient) && delete res.gradient;
+            res.transform = this._.transform;
+            return res;
+        }
+        if (value == null && R.is(name, "string")) {
+            if (name == "fill" && this.attrs.fill == "none" && this.attrs.gradient) {
+                return this.attrs.gradient;
+            }
+            if (name == "transform") {
+                return this._.transform;
+            }
+            var names = name.split(separator),
+                out = {};
+            for (var i = 0, ii = names.length; i < ii; i++) {
+                name = names[i];
+                if (name in this.attrs) {
+                    out[name] = this.attrs[name];
+                } else if (R.is(this.paper.customAttributes[name], "function")) {
+                    out[name] = this.paper.customAttributes[name].def;
+                } else {
+                    out[name] = R._availableAttrs[name];
+                }
+            }
+            return ii - 1 ? out : out[names[0]];
+        }
+        if (value == null && R.is(name, "array")) {
+            out = {};
+            for (i = 0, ii = name.length; i < ii; i++) {
+                out[name[i]] = this.attr(name[i]);
+            }
+            return out;
+        }
+        if (value != null) {
+            var params = {};
+            params[name] = value;
+        } else if (name != null && R.is(name, "object")) {
+            params = name;
+        }
+        for (var key in params) {
+            eve("raphael.attr." + key + "." + this.id, this, params[key]);
+        }
+        for (key in this.paper.customAttributes) if (this.paper.customAttributes[has](key) && params[has](key) && R.is(this.paper.customAttributes[key], "function")) {
+            var par = this.paper.customAttributes[key].apply(this, [].concat(params[key]));
+            this.attrs[key] = params[key];
+            for (var subkey in par) if (par[has](subkey)) {
+                params[subkey] = par[subkey];
+            }
+        }
+        setFillAndStroke(this, params);
+        return this;
+    };
+    /*\
+     * Element.toFront
+     [ method ]
+     **
+     * Moves the element so it is the closest to the viewer’s eyes, on top of other elements.
+     = (object) @Element
+    \*/
+    elproto.toFront = function () {
+        if (this.removed) {
+            return this;
+        }
+        if (this.node.parentNode.tagName.toLowerCase() == "a") {
+            this.node.parentNode.parentNode.appendChild(this.node.parentNode);
+        } else {
+            this.node.parentNode.appendChild(this.node);
+        }
+        var svg = this.paper;
+        svg.top != this && R._tofront(this, svg);
+        return this;
+    };
+    /*\
+     * Element.toBack
+     [ method ]
+     **
+     * Moves the element so it is the furthest from the viewer’s eyes, behind other elements.
+     = (object) @Element
+    \*/
+    elproto.toBack = function () {
+        if (this.removed) {
+            return this;
+        }
+        var parent = this.node.parentNode;
+        if (parent.tagName.toLowerCase() == "a") {
+            parent.parentNode.insertBefore(this.node.parentNode, this.node.parentNode.parentNode.firstChild); 
+        } else if (parent.firstChild != this.node) {
+            parent.insertBefore(this.node, this.node.parentNode.firstChild);
+        }
+        R._toback(this, this.paper);
+        var svg = this.paper;
+        return this;
+    };
+    /*\
+     * Element.insertAfter
+     [ method ]
+     **
+     * Inserts current object after the given one.
+     = (object) @Element
+    \*/
+    elproto.insertAfter = function (element) {
+        if (this.removed) {
+            return this;
+        }
+        var node = element.node || element[element.length - 1].node;
+        if (node.nextSibling) {
+            node.parentNode.insertBefore(this.node, node.nextSibling);
+        } else {
+            node.parentNode.appendChild(this.node);
+        }
+        R._insertafter(this, element, this.paper);
+        return this;
+    };
+    /*\
+     * Element.insertBefore
+     [ method ]
+     **
+     * Inserts current object before the given one.
+     = (object) @Element
+    \*/
+    elproto.insertBefore = function (element) {
+        if (this.removed) {
+            return this;
+        }
+        var node = element.node || element[0].node;
+        node.parentNode.insertBefore(this.node, node);
+        R._insertbefore(this, element, this.paper);
+        return this;
+    };
+    elproto.blur = function (size) {
+        // Experimental. No Safari support. Use it on your own risk.
+        var t = this;
+        if (+size !== 0) {
+            var fltr = $("filter"),
+                blur = $("feGaussianBlur");
+            t.attrs.blur = size;
+            fltr.id = R.createUUID();
+            $(blur, {stdDeviation: +size || 1.5});
+            fltr.appendChild(blur);
+            t.paper.defs.appendChild(fltr);
+            t._blur = fltr;
+            $(t.node, {filter: "url(#" + fltr.id + ")"});
+        } else {
+            if (t._blur) {
+                t._blur.parentNode.removeChild(t._blur);
+                delete t._blur;
+                delete t.attrs.blur;
+            }
+            t.node.removeAttribute("filter");
+        }
+        return t;
+    };
+    R._engine.circle = function (svg, x, y, r) {
+        var el = $("circle");
+        svg.canvas && svg.canvas.appendChild(el);
+        var res = new Element(el, svg);
+        res.attrs = {cx: x, cy: y, r: r, fill: "none", stroke: "#000"};
+        res.type = "circle";
+        $(el, res.attrs);
+        return res;
+    };
+    R._engine.rect = function (svg, x, y, w, h, r) {
+        var el = $("rect");
+        svg.canvas && svg.canvas.appendChild(el);
+        var res = new Element(el, svg);
+        res.attrs = {x: x, y: y, width: w, height: h, r: r || 0, rx: r || 0, ry: r || 0, fill: "none", stroke: "#000"};
+        res.type = "rect";
+        $(el, res.attrs);
+        return res;
+    };
+    R._engine.ellipse = function (svg, x, y, rx, ry) {
+        var el = $("ellipse");
+        svg.canvas && svg.canvas.appendChild(el);
+        var res = new Element(el, svg);
+        res.attrs = {cx: x, cy: y, rx: rx, ry: ry, fill: "none", stroke: "#000"};
+        res.type = "ellipse";
+        $(el, res.attrs);
+        return res;
+    };
+    R._engine.image = function (svg, src, x, y, w, h) {
+        var el = $("image");
+        $(el, {x: x, y: y, width: w, height: h, preserveAspectRatio: "none"});
+        el.setAttributeNS(xlink, "href", src);
+        svg.canvas && svg.canvas.appendChild(el);
+        var res = new Element(el, svg);
+        res.attrs = {x: x, y: y, width: w, height: h, src: src};
+        res.type = "image";
+        return res;
+    };
+    R._engine.text = function (svg, x, y, text) {
+        var el = $("text");
+        svg.canvas && svg.canvas.appendChild(el);
+        var res = new Element(el, svg);
+        res.attrs = {
+            x: x,
+            y: y,
+            "text-anchor": "middle",
+            text: text,
+            font: R._availableAttrs.font,
+            stroke: "none",
+            fill: "#000"
+        };
+        res.type = "text";
+        setFillAndStroke(res, res.attrs);
+        return res;
+    };
+    R._engine.setSize = function (width, height) {
+        this.width = width || this.width;
+        this.height = height || this.height;
+        this.canvas.setAttribute("width", this.width);
+        this.canvas.setAttribute("height", this.height);
+        if (this._viewBox) {
+            this.setViewBox.apply(this, this._viewBox);
+        }
+        return this;
+    };
+    R._engine.create = function () {
+        var con = R._getContainer.apply(0, arguments),
+            container = con && con.container,
+            x = con.x,
+            y = con.y,
+            width = con.width,
+            height = con.height;
+        if (!container) {
+            throw new Error("SVG container not found.");
+        }
+        var cnvs = $("svg"),
+            css = "overflow:hidden;",
+            isFloating;
+        x = x || 0;
+        y = y || 0;
+        width = width || 512;
+        height = height || 342;
+        $(cnvs, {
+            height: height,
+            version: 1.1,
+            width: width,
+            xmlns: "http://www.w3.org/2000/svg"
+        });
+        if (container == 1) {
+            cnvs.style.cssText = css + "position:absolute;left:" + x + "px;top:" + y + "px";
+            R._g.doc.body.appendChild(cnvs);
+            isFloating = 1;
+        } else {
+            cnvs.style.cssText = css + "position:relative";
+            if (container.firstChild) {
+                container.insertBefore(cnvs, container.firstChild);
+            } else {
+                container.appendChild(cnvs);
+            }
+        }
+        container = new R._Paper;
+        container.width = width;
+        container.height = height;
+        container.canvas = cnvs;
+        container.clear();
+        container._left = container._top = 0;
+        isFloating && (container.renderfix = function () {});
+        container.renderfix();
+        return container;
+    };
+    R._engine.setViewBox = function (x, y, w, h, fit) {
+        eve("raphael.setViewBox", this, this._viewBox, [x, y, w, h, fit]);
+        var size = mmax(w / this.width, h / this.height),
+            top = this.top,
+            aspectRatio = fit ? "meet" : "xMinYMin",
+            vb,
+            sw;
+        if (x == null) {
+            if (this._vbSize) {
+                size = 1;
+            }
+            delete this._vbSize;
+            vb = "0 0 " + this.width + S + this.height;
+        } else {
+            this._vbSize = size;
+            vb = x + S + y + S + w + S + h;
+        }
+        $(this.canvas, {
+            viewBox: vb,
+            preserveAspectRatio: aspectRatio
+        });
+        while (size && top) {
+            sw = "stroke-width" in top.attrs ? top.attrs["stroke-width"] : 1;
+            top.attr({"stroke-width": sw});
+            top._.dirty = 1;
+            top._.dirtyT = 1;
+            top = top.prev;
+        }
+        this._viewBox = [x, y, w, h, !!fit];
+        return this;
+    };
+    /*\
+     * Paper.renderfix
+     [ method ]
+     **
+     * Fixes the issue of Firefox and IE9 regarding subpixel rendering. If paper is dependant
+     * on other elements after reflow it could shift half pixel which cause for lines to lost their crispness.
+     * This method fixes the issue.
+     **
+       Special thanks to Mariusz Nowak (http://www.medikoo.com/) for this method.
+    \*/
+    R.prototype.renderfix = function () {
+        var cnvs = this.canvas,
+            s = cnvs.style,
+            pos;
+        try {
+            pos = cnvs.getScreenCTM() || cnvs.createSVGMatrix();
+        } catch (e) {
+            pos = cnvs.createSVGMatrix();
+        }
+        var left = -pos.e % 1,
+            top = -pos.f % 1;
+        if (left || top) {
+            if (left) {
+                this._left = (this._left + left) % 1;
+                s.left = this._left + "px";
+            }
+            if (top) {
+                this._top = (this._top + top) % 1;
+                s.top = this._top + "px";
+            }
+        }
+    };
+    /*\
+     * Paper.clear
+     [ method ]
+     **
+     * Clears the paper, i.e. removes all the elements.
+    \*/
+    R.prototype.clear = function () {
+        R.eve("raphael.clear", this);
+        var c = this.canvas;
+        while (c.firstChild) {
+            c.removeChild(c.firstChild);
+        }
+        this.bottom = this.top = null;
+        (this.desc = $("desc")).appendChild(R._g.doc.createTextNode("Created with Rapha\xebl " + R.version));
+        c.appendChild(this.desc);
+        c.appendChild(this.defs = $("defs"));
+    };
+    /*\
+     * Paper.remove
+     [ method ]
+     **
+     * Removes the paper from the DOM.
+    \*/
+    R.prototype.remove = function () {
+        eve("raphael.remove", this);
+        this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas);
+        for (var i in this) {
+            this[i] = typeof this[i] == "function" ? R._removedFactory(i) : null;
+        }
+    };
+    var setproto = R.st;
+    for (var method in elproto) if (elproto[has](method) && !setproto[has](method)) {
+        setproto[method] = (function (methodname) {
+            return function () {
+                var arg = arguments;
+                return this.forEach(function (el) {
+                    el[methodname].apply(el, arg);
+                });
+            };
+        })(method);
+    }
+})();
+
+// ┌─────────────────────────────────────────────────────────────────────┐ \\
+// │ Raphaël - JavaScript Vector Library                                 │ \\
+// ├─────────────────────────────────────────────────────────────────────┤ \\
+// │ VML Module                                                          │ \\
+// ├─────────────────────────────────────────────────────────────────────┤ \\
+// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \\
+// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \\
+// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \\
+// └─────────────────────────────────────────────────────────────────────┘ \\
+
+(function(){
+    if (!R.vml) {
+        return;
+    }
+    var has = "hasOwnProperty",
+        Str = String,
+        toFloat = parseFloat,
+        math = Math,
+        round = math.round,
+        mmax = math.max,
+        mmin = math.min,
+        abs = math.abs,
+        fillString = "fill",
+        separator = /[, ]+/,
+        eve = R.eve,
+        ms = " progid:DXImageTransform.Microsoft",
+        S = " ",
+        E = "",
+        map = {M: "m", L: "l", C: "c", Z: "x", m: "t", l: "r", c: "v", z: "x"},
+        bites = /([clmz]),?([^clmz]*)/gi,
+        blurregexp = / progid:\S+Blur\([^\)]+\)/g,
+        val = /-?[^,\s-]+/g,
+        cssDot = "position:absolute;left:0;top:0;width:1px;height:1px",
+        zoom = 21600,
+        pathTypes = {path: 1, rect: 1, image: 1},
+        ovalTypes = {circle: 1, ellipse: 1},
+        path2vml = function (path) {
+            var total =  /[ahqstv]/ig,
+                command = R._pathToAbsolute;
+            Str(path).match(total) && (command = R._path2curve);
+            total = /[clmz]/g;
+            if (command == R._pathToAbsolute && !Str(path).match(total)) {
+                var res = Str(path).replace(bites, function (all, command, args) {
+                    var vals = [],
+                        isMove = command.toLowerCase() == "m",
+                        res = map[command];
+                    args.replace(val, function (value) {
+                        if (isMove && vals.length == 2) {
+                            res += vals + map[command == "m" ? "l" : "L"];
+                            vals = [];
+                        }
+                        vals.push(round(value * zoom));
+                    });
+                    return res + vals;
+                });
+                return res;
+            }
+            var pa = command(path), p, r;
+            res = [];
+            for (var i = 0, ii = pa.length; i < ii; i++) {
+                p = pa[i];
+                r = pa[i][0].toLowerCase();
+                r == "z" && (r = "x");
+                for (var j = 1, jj = p.length; j < jj; j++) {
+                    r += round(p[j] * zoom) + (j != jj - 1 ? "," : E);
+                }
+                res.push(r);
+            }
+            return res.join(S);
+        },
+        compensation = function (deg, dx, dy) {
+            var m = R.matrix();
+            m.rotate(-deg, .5, .5);
+            return {
+                dx: m.x(dx, dy),
+                dy: m.y(dx, dy)
+            };
+        },
+        setCoords = function (p, sx, sy, dx, dy, deg) {
+            var _ = p._,
+                m = p.matrix,
+                fillpos = _.fillpos,
+                o = p.node,
+                s = o.style,
+                y = 1,
+                flip = "",
+                dxdy,
+                kx = zoom / sx,
+                ky = zoom / sy;
+            s.visibility = "hidden";
+            if (!sx || !sy) {
+                return;
+            }
+            o.coordsize = abs(kx) + S + abs(ky);
+            s.rotation = deg * (sx * sy < 0 ? -1 : 1);
+            if (deg) {
+                var c = compensation(deg, dx, dy);
+                dx = c.dx;
+                dy = c.dy;
+            }
+            sx < 0 && (flip += "x");
+            sy < 0 && (flip += " y") && (y = -1);
+            s.flip = flip;
+            o.coordorigin = (dx * -kx) + S + (dy * -ky);
+            if (fillpos || _.fillsize) {
+                var fill = o.getElementsByTagName(fillString);
+                fill = fill && fill[0];
+                o.removeChild(fill);
+                if (fillpos) {
+                    c = compensation(deg, m.x(fillpos[0], fillpos[1]), m.y(fillpos[0], fillpos[1]));
+                    fill.position = c.dx * y + S + c.dy * y;
+                }
+                if (_.fillsize) {
+                    fill.size = _.fillsize[0] * abs(sx) + S + _.fillsize[1] * abs(sy);
+                }
+                o.appendChild(fill);
+            }
+            s.visibility = "visible";
+        };
+    R.toString = function () {
+        return  "Your browser doesn\u2019t support SVG. Falling down to VML.\nYou are running Rapha\xebl " + this.version;
+    };
+    var addArrow = function (o, value, isEnd) {
+        var values = Str(value).toLowerCase().split("-"),
+            se = isEnd ? "end" : "start",
+            i = values.length,
+            type = "classic",
+            w = "medium",
+            h = "medium";
+        while (i--) {
+            switch (values[i]) {
+                case "block":
+                case "classic":
+                case "oval":
+                case "diamond":
+                case "open":
+                case "none":
+                    type = values[i];
+                    break;
+                case "wide":
+                case "narrow": h = values[i]; break;
+                case "long":
+                case "short": w = values[i]; break;
+            }
+        }
+        var stroke = o.node.getElementsByTagName("stroke")[0];
+        stroke[se + "arrow"] = type;
+        stroke[se + "arrowlength"] = w;
+        stroke[se + "arrowwidth"] = h;
+    },
+    setFillAndStroke = function (o, params) {
+        // o.paper.canvas.style.display = "none";
+        o.attrs = o.attrs || {};
+        var node = o.node,
+            a = o.attrs,
+            s = node.style,
+            xy,
+            newpath = pathTypes[o.type] && (params.x != a.x || params.y != a.y || params.width != a.width || params.height != a.height || params.cx != a.cx || params.cy != a.cy || params.rx != a.rx || params.ry != a.ry || params.r != a.r),
+            isOval = ovalTypes[o.type] && (a.cx != params.cx || a.cy != params.cy || a.r != params.r || a.rx != params.rx || a.ry != params.ry),
+            res = o;
+
+
+        for (var par in params) if (params[has](par)) {
+            a[par] = params[par];
+        }
+        if (newpath) {
+            a.path = R._getPath[o.type](o);
+            o._.dirty = 1;
+        }
+        params.href && (node.href = params.href);
+        params.title && (node.title = params.title);
+        params.target && (node.target = params.target);
+        params.cursor && (s.cursor = params.cursor);
+        "blur" in params && o.blur(params.blur);
+        if (params.path && o.type == "path" || newpath) {
+            node.path = path2vml(~Str(a.path).toLowerCase().indexOf("r") ? R._pathToAbsolute(a.path) : a.path);
+            if (o.type == "image") {
+                o._.fillpos = [a.x, a.y];
+                o._.fillsize = [a.width, a.height];
+                setCoords(o, 1, 1, 0, 0, 0);
+            }
+        }
+        "transform" in params && o.transform(params.transform);
+        if (isOval) {
+            var cx = +a.cx,
+                cy = +a.cy,
+                rx = +a.rx || +a.r || 0,
+                ry = +a.ry || +a.r || 0;
+            node.path = R.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x", round((cx - rx) * zoom), round((cy - ry) * zoom), round((cx + rx) * zoom), round((cy + ry) * zoom), round(cx * zoom));
+            o._.dirty = 1;
+        }
+        if ("clip-rect" in params) {
+            var rect = Str(params["clip-rect"]).split(separator);
+            if (rect.length == 4) {
+                rect[2] = +rect[2] + (+rect[0]);
+                rect[3] = +rect[3] + (+rect[1]);
+                var div = node.clipRect || R._g.doc.createElement("div"),
+                    dstyle = div.style;
+                dstyle.clip = R.format("rect({1}px {2}px {3}px {0}px)", rect);
+                if (!node.clipRect) {
+                    dstyle.position = "absolute";
+                    dstyle.top = 0;
+                    dstyle.left = 0;
+                    dstyle.width = o.paper.width + "px";
+                    dstyle.height = o.paper.height + "px";
+                    node.parentNode.insertBefore(div, node);
+                    div.appendChild(node);
+                    node.clipRect = div;
+                }
+            }
+            if (!params["clip-rect"]) {
+                node.clipRect && (node.clipRect.style.clip = "auto");
+            }
+        }
+        if (o.textpath) {
+            var textpathStyle = o.textpath.style;
+            params.font && (textpathStyle.font = params.font);
+            params["font-family"] && (textpathStyle.fontFamily = '"' + params["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g, E) + '"');
+            params["font-size"] && (textpathStyle.fontSize = params["font-size"]);
+            params["font-weight"] && (textpathStyle.fontWeight = params["font-weight"]);
+            params["font-style"] && (textpathStyle.fontStyle = params["font-style"]);
+        }
+        if ("arrow-start" in params) {
+            addArrow(res, params["arrow-start"]);
+        }
+        if ("arrow-end" in params) {
+            addArrow(res, params["arrow-end"], 1);
+        }
+        if (params.opacity != null || 
+            params["stroke-width"] != null ||
+            params.fill != null ||
+            params.src != null ||
+            params.stroke != null ||
+            params["stroke-width"] != null ||
+            params["stroke-opacity"] != null ||
+            params["fill-opacity"] != null ||
+            params["stroke-dasharray"] != null ||
+            params["stroke-miterlimit"] != null ||
+            params["stroke-linejoin"] != null ||
+            params["stroke-linecap"] != null) {
+            var fill = node.getElementsByTagName(fillString),
+                newfill = false;
+            fill = fill && fill[0];
+            !fill && (newfill = fill = createNode(fillString));
+            if (o.type == "image" && params.src) {
+                fill.src = params.src;
+            }
+            params.fill && (fill.on = true);
+            if (fill.on == null || params.fill == "none" || params.fill === null) {
+                fill.on = false;
+            }
+            if (fill.on && params.fill) {
+                var isURL = Str(params.fill).match(R._ISURL);
+                if (isURL) {
+                    fill.parentNode == node && node.removeChild(fill);
+                    fill.rotate = true;
+                    fill.src = isURL[1];
+                    fill.type = "tile";
+                    var bbox = o.getBBox(1);
+                    fill.position = bbox.x + S + bbox.y;
+                    o._.fillpos = [bbox.x, bbox.y];
+
+                    R._preload(isURL[1], function () {
+                        o._.fillsize = [this.offsetWidth, this.offsetHeight];
+                    });
+                } else {
+                    fill.color = R.getRGB(params.fill).hex;
+                    fill.src = E;
+                    fill.type = "solid";
+                    if (R.getRGB(params.fill).error && (res.type in {circle: 1, ellipse: 1} || Str(params.fill).charAt() != "r") && addGradientFill(res, params.fill, fill)) {
+                        a.fill = "none";
+                        a.gradient = params.fill;
+                        fill.rotate = false;
+                    }
+                }
+            }
+            if ("fill-opacity" in params || "opacity" in params) {
+                var opacity = ((+a["fill-opacity"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1) * ((+R.getRGB(params.fill).o + 1 || 2) - 1);
+                opacity = mmin(mmax(opacity, 0), 1);
+                fill.opacity = opacity;
+                if (fill.src) {
+                    fill.color = "none";
+                }
+            }
+            node.appendChild(fill);
+            var stroke = (node.getElementsByTagName("stroke") && node.getElementsByTagName("stroke")[0]),
+            newstroke = false;
+            !stroke && (newstroke = stroke = createNode("stroke"));
+            if ((params.stroke && params.stroke != "none") ||
+                params["stroke-width"] ||
+                params["stroke-opacity"] != null ||
+                params["stroke-dasharray"] ||
+                params["stroke-miterlimit"] ||
+                params["stroke-linejoin"] ||
+                params["stroke-linecap"]) {
+                stroke.on = true;
+            }
+            (params.stroke == "none" || params.stroke === null || stroke.on == null || params.stroke == 0 || params["stroke-width"] == 0) && (stroke.on = false);
+            var strokeColor = R.getRGB(params.stroke);
+            stroke.on && params.stroke && (stroke.color = strokeColor.hex);
+            opacity = ((+a["stroke-opacity"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1) * ((+strokeColor.o + 1 || 2) - 1);
+            var width = (toFloat(params["stroke-width"]) || 1) * .75;
+            opacity = mmin(mmax(opacity, 0), 1);
+            params["stroke-width"] == null && (width = a["stroke-width"]);
+            params["stroke-width"] && (stroke.weight = width);
+            width && width < 1 && (opacity *= width) && (stroke.weight = 1);
+            stroke.opacity = opacity;
+        
+            params["stroke-linejoin"] && (stroke.joinstyle = params["stroke-linejoin"] || "miter");
+            stroke.miterlimit = params["stroke-miterlimit"] || 8;
+            params["stroke-linecap"] && (stroke.endcap = params["stroke-linecap"] == "butt" ? "flat" : params["stroke-linecap"] == "square" ? "square" : "round");
+            if (params["stroke-dasharray"]) {
+                var dasharray = {
+                    "-": "shortdash",
+                    ".": "shortdot",
+                    "-.": "shortdashdot",
+                    "-..": "shortdashdotdot",
+                    ". ": "dot",
+                    "- ": "dash",
+                    "--": "longdash",
+                    "- .": "dashdot",
+                    "--.": "longdashdot",
+                    "--..": "longdashdotdot"
+                };
+                stroke.dashstyle = dasharray[has](params["stroke-dasharray"]) ? dasharray[params["stroke-dasharray"]] : E;
+            }
+            newstroke && node.appendChild(stroke);
+        }
+        if (res.type == "text") {
+            res.paper.canvas.style.display = E;
+            var span = res.paper.span,
+                m = 100,
+                fontSize = a.font && a.font.match(/\d+(?:\.\d*)?(?=px)/);
+            s = span.style;
+            a.font && (s.font = a.font);
+            a["font-family"] && (s.fontFamily = a["font-family"]);
+            a["font-weight"] && (s.fontWeight = a["font-weight"]);
+            a["font-style"] && (s.fontStyle = a["font-style"]);
+            fontSize = toFloat(a["font-size"] || fontSize && fontSize[0]) || 10;
+            s.fontSize = fontSize * m + "px";
+            res.textpath.string && (span.innerHTML = Str(res.textpath.string).replace(/</g, "&#60;").replace(/&/g, "&#38;").replace(/\n/g, "<br>"));
+            var brect = span.getBoundingClientRect();
+            res.W = a.w = (brect.right - brect.left) / m;
+            res.H = a.h = (brect.bottom - brect.top) / m;
+            // res.paper.canvas.style.display = "none";
+            res.X = a.x;
+            res.Y = a.y + res.H / 2;
+
+            ("x" in params || "y" in params) && (res.path.v = R.format("m{0},{1}l{2},{1}", round(a.x * zoom), round(a.y * zoom), round(a.x * zoom) + 1));
+            var dirtyattrs = ["x", "y", "text", "font", "font-family", "font-weight", "font-style", "font-size"];
+            for (var d = 0, dd = dirtyattrs.length; d < dd; d++) if (dirtyattrs[d] in params) {
+                res._.dirty = 1;
+                break;
+            }
+        
+            // text-anchor emulation
+            switch (a["text-anchor"]) {
+                case "start":
+                    res.textpath.style["v-text-align"] = "left";
+                    res.bbx = res.W / 2;
+                break;
+                case "end":
+                    res.textpath.style["v-text-align"] = "right";
+                    res.bbx = -res.W / 2;
+                break;
+                default:
+                    res.textpath.style["v-text-align"] = "center";
+                    res.bbx = 0;
+                break;
+            }
+            res.textpath.style["v-text-kern"] = true;
+        }
+        // res.paper.canvas.style.display = E;
+    },
+    addGradientFill = function (o, gradient, fill) {
+        o.attrs = o.attrs || {};
+        var attrs = o.attrs,
+            pow = Math.pow,
+            opacity,
+            oindex,
+            type = "linear",
+            fxfy = ".5 .5";
+        o.attrs.gradient = gradient;
+        gradient = Str(gradient).replace(R._radial_gradient, function (all, fx, fy) {
+            type = "radial";
+            if (fx && fy) {
+                fx = toFloat(fx);
+                fy = toFloat(fy);
+                pow(fx - .5, 2) + pow(fy - .5, 2) > .25 && (fy = math.sqrt(.25 - pow(fx - .5, 2)) * ((fy > .5) * 2 - 1) + .5);
+                fxfy = fx + S + fy;
+            }
+            return E;
+        });
+        gradient = gradient.split(/\s*\-\s*/);
+        if (type == "linear") {
+            var angle = gradient.shift();
+            angle = -toFloat(angle);
+            if (isNaN(angle)) {
+                return null;
+            }
+        }
+        var dots = R._parseDots(gradient);
+        if (!dots) {
+            return null;
+        }
+        o = o.shape || o.node;
+        if (dots.length) {
+            o.removeChild(fill);
+            fill.on = true;
+            fill.method = "none";
+            fill.color = dots[0].color;
+            fill.color2 = dots[dots.length - 1].color;
+            var clrs = [];
+            for (var i = 0, ii = dots.length; i < ii; i++) {
+                dots[i].offset && clrs.push(dots[i].offset + S + dots[i].color);
+            }
+            fill.colors = clrs.length ? clrs.join() : "0% " + fill.color;
+            if (type == "radial") {
+                fill.type = "gradientTitle";
+                fill.focus = "100%";
+                fill.focussize = "0 0";
+                fill.focusposition = fxfy;
+                fill.angle = 0;
+            } else {
+                // fill.rotate= true;
+                fill.type = "gradient";
+                fill.angle = (270 - angle) % 360;
+            }
+            o.appendChild(fill);
+        }
+        return 1;
+    },
+    Element = function (node, vml) {
+        this[0] = this.node = node;
+        node.raphael = true;
+        this.id = R._oid++;
+        node.raphaelid = this.id;
+        this.X = 0;
+        this.Y = 0;
+        this.attrs = {};
+        this.paper = vml;
+        this.matrix = R.matrix();
+        this._ = {
+            transform: [],
+            sx: 1,
+            sy: 1,
+            dx: 0,
+            dy: 0,
+            deg: 0,
+            dirty: 1,
+            dirtyT: 1
+        };
+        !vml.bottom && (vml.bottom = this);
+        this.prev = vml.top;
+        vml.top && (vml.top.next = this);
+        vml.top = this;
+        this.next = null;
+    };
+    var elproto = R.el;
+
+    Element.prototype = elproto;
+    elproto.constructor = Element;
+    elproto.transform = function (tstr) {
+        if (tstr == null) {
+            return this._.transform;
+        }
+        var vbs = this.paper._viewBoxShift,
+            vbt = vbs ? "s" + [vbs.scale, vbs.scale] + "-1-1t" + [vbs.dx, vbs.dy] : E,
+            oldt;
+        if (vbs) {
+            oldt = tstr = Str(tstr).replace(/\.{3}|\u2026/g, this._.transform || E);
+        }
+        R._extractTransform(this, vbt + tstr);
+        var matrix = this.matrix.clone(),
+            skew = this.skew,
+            o = this.node,
+            split,
+            isGrad = ~Str(this.attrs.fill).indexOf("-"),
+            isPatt = !Str(this.attrs.fill).indexOf("url(");
+        matrix.translate(1, 1);
+        if (isPatt || isGrad || this.type == "image") {
+            skew.matrix = "1 0 0 1";
+            skew.offset = "0 0";
+            split = matrix.split();
+            if ((isGrad && split.noRotation) || !split.isSimple) {
+                o.style.filter = matrix.toFilter();
+                var bb = this.getBBox(),
+                    bbt = this.getBBox(1),
+                    dx = bb.x - bbt.x,
+                    dy = bb.y - bbt.y;
+                o.coordorigin = (dx * -zoom) + S + (dy * -zoom);
+                setCoords(this, 1, 1, dx, dy, 0);
+            } else {
+                o.style.filter = E;
+                setCoords(this, split.scalex, split.scaley, split.dx, split.dy, split.rotate);
+            }
+        } else {
+            o.style.filter = E;
+            skew.matrix = Str(matrix);
+            skew.offset = matrix.offset();
+        }
+        oldt && (this._.transform = oldt);
+        return this;
+    };
+    elproto.rotate = function (deg, cx, cy) {
+        if (this.removed) {
+            return this;
+        }
+        if (deg == null) {
+            return;
+        }
+        deg = Str(deg).split(separator);
+        if (deg.length - 1) {
+            cx = toFloat(deg[1]);
+            cy = toFloat(deg[2]);
+        }
+        deg = toFloat(deg[0]);
+        (cy == null) && (cx = cy);
+        if (cx == null || cy == null) {
+            var bbox = this.getBBox(1);
+            cx = bbox.x + bbox.width / 2;
+            cy = bbox.y + bbox.height / 2;
+        }
+        this._.dirtyT = 1;
+        this.transform(this._.transform.concat([["r", deg, cx, cy]]));
+        return this;
+    };
+    elproto.translate = function (dx, dy) {
+        if (this.removed) {
+            return this;
+        }
+        dx = Str(dx).split(separator);
+        if (dx.length - 1) {
+            dy = toFloat(dx[1]);
+        }
+        dx = toFloat(dx[0]) || 0;
+        dy = +dy || 0;
+        if (this._.bbox) {
+            this._.bbox.x += dx;
+            this._.bbox.y += dy;
+        }
+        this.transform(this._.transform.concat([["t", dx, dy]]));
+        return this;
+    };
+    elproto.scale = function (sx, sy, cx, cy) {
+        if (this.removed) {
+            return this;
+        }
+        sx = Str(sx).split(separator);
+        if (sx.length - 1) {
+            sy = toFloat(sx[1]);
+            cx = toFloat(sx[2]);
+            cy = toFloat(sx[3]);
+            isNaN(cx) && (cx = null);
+            isNaN(cy) && (cy = null);
+        }
+        sx = toFloat(sx[0]);
+        (sy == null) && (sy = sx);
+        (cy == null) && (cx = cy);
+        if (cx == null || cy == null) {
+            var bbox = this.getBBox(1);
+        }
+        cx = cx == null ? bbox.x + bbox.width / 2 : cx;
+        cy = cy == null ? bbox.y + bbox.height / 2 : cy;
+    
+        this.transform(this._.transform.concat([["s", sx, sy, cx, cy]]));
+        this._.dirtyT = 1;
+        return this;
+    };
+    elproto.hide = function () {
+        !this.removed && (this.node.style.display = "none");
+        return this;
+    };
+    elproto.show = function () {
+        !this.removed && (this.node.style.display = E);
+        return this;
+    };
+    elproto._getBBox = function () {
+        if (this.removed) {
+            return {};
+        }
+        return {
+            x: this.X + (this.bbx || 0) - this.W / 2,
+            y: this.Y - this.H,
+            width: this.W,
+            height: this.H
+        };
+    };
+    elproto.remove = function () {
+        if (this.removed || !this.node.parentNode) {
+            return;
+        }
+        this.paper.__set__ && this.paper.__set__.exclude(this);
+        R.eve.unbind("raphael.*.*." + this.id);
+        R._tear(this, this.paper);
+        this.node.parentNode.removeChild(this.node);
+        this.shape && this.shape.parentNode.removeChild(this.shape);
+        for (var i in this) {
+            this[i] = typeof this[i] == "function" ? R._removedFactory(i) : null;
+        }
+        this.removed = true;
+    };
+    elproto.attr = function (name, value) {
+        if (this.removed) {
+            return this;
+        }
+        if (name == null) {
+            var res = {};
+            for (var a in this.attrs) if (this.attrs[has](a)) {
+                res[a] = this.attrs[a];
+            }
+            res.gradient && res.fill == "none" && (res.fill = res.gradient) && delete res.gradient;
+            res.transform = this._.transform;
+            return res;
+        }
+        if (value == null && R.is(name, "string")) {
+            if (name == fillString && this.attrs.fill == "none" && this.attrs.gradient) {
+                return this.attrs.gradient;
+            }
+            var names = name.split(separator),
+                out = {};
+            for (var i = 0, ii = names.length; i < ii; i++) {
+                name = names[i];
+                if (name in this.attrs) {
+                    out[name] = this.attrs[name];
+                } else if (R.is(this.paper.customAttributes[name], "function")) {
+                    out[name] = this.paper.customAttributes[name].def;
+                } else {
+                    out[name] = R._availableAttrs[name];
+                }
+            }
+            return ii - 1 ? out : out[names[0]];
+        }
+        if (this.attrs && value == null && R.is(name, "array")) {
+            out = {};
+            for (i = 0, ii = name.length; i < ii; i++) {
+                out[name[i]] = this.attr(name[i]);
+            }
+            return out;
+        }
+        var params;
+        if (value != null) {
+            params = {};
+            params[name] = value;
+        }
+        value == null && R.is(name, "object") && (params = name);
+        for (var key in params) {
+            eve("raphael.attr." + key + "." + this.id, this, params[key]);
+        }
+        if (params) {
+            for (key in this.paper.customAttributes) if (this.paper.customAttributes[has](key) && params[has](key) && R.is(this.paper.customAttributes[key], "function")) {
+                var par = this.paper.customAttributes[key].apply(this, [].concat(params[key]));
+                this.attrs[key] = params[key];
+                for (var subkey in par) if (par[has](subkey)) {
+                    params[subkey] = par[subkey];
+                }
+            }
+            // this.paper.canvas.style.display = "none";
+            if (params.text && this.type == "text") {
+                this.textpath.string = params.text;
+            }
+            setFillAndStroke(this, params);
+            // this.paper.canvas.style.display = E;
+        }
+        return this;
+    };
+    elproto.toFront = function () {
+        !this.removed && this.node.parentNode.appendChild(this.node);
+        this.paper && this.paper.top != this && R._tofront(this, this.paper);
+        return this;
+    };
+    elproto.toBack = function () {
+        if (this.removed) {
+            return this;
+        }
+        if (this.node.parentNode.firstChild != this.node) {
+            this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild);
+            R._toback(this, this.paper);
+        }
+        return this;
+    };
+    elproto.insertAfter = function (element) {
+        if (this.removed) {
+            return this;
+        }
+        if (element.constructor == R.st.constructor) {
+            element = element[element.length - 1];
+        }
+        if (element.node.nextSibling) {
+            element.node.parentNode.insertBefore(this.node, element.node.nextSibling);
+        } else {
+            element.node.parentNode.appendChild(this.node);
+        }
+        R._insertafter(this, element, this.paper);
+        return this;
+    };
+    elproto.insertBefore = function (element) {
+        if (this.removed) {
+            return this;
+        }
+        if (element.constructor == R.st.constructor) {
+            element = element[0];
+        }
+        element.node.parentNode.insertBefore(this.node, element.node);
+        R._insertbefore(this, element, this.paper);
+        return this;
+    };
+    elproto.blur = function (size) {
+        var s = this.node.runtimeStyle,
+            f = s.filter;
+        f = f.replace(blurregexp, E);
+        if (+size !== 0) {
+            this.attrs.blur = size;
+            s.filter = f + S + ms + ".Blur(pixelradius=" + (+size || 1.5) + ")";
+            s.margin = R.format("-{0}px 0 0 -{0}px", round(+size || 1.5));
+        } else {
+            s.filter = f;
+            s.margin = 0;
+            delete this.attrs.blur;
+        }
+        return this;
+    };
+
+    R._engine.path = function (pathString, vml) {
+        var el = createNode("shape");
+        el.style.cssText = cssDot;
+        el.coordsize = zoom + S + zoom;
+        el.coordorigin = vml.coordorigin;
+        var p = new Element(el, vml),
+            attr = {fill: "none", stroke: "#000"};
+        pathString && (attr.path = pathString);
+        p.type = "path";
+        p.path = [];
+        p.Path = E;
+        setFillAndStroke(p, attr);
+        vml.canvas.appendChild(el);
+        var skew = createNode("skew");
+        skew.on = true;
+        el.appendChild(skew);
+        p.skew = skew;
+        p.transform(E);
+        return p;
+    };
+    R._engine.rect = function (vml, x, y, w, h, r) {
+        var path = R._rectPath(x, y, w, h, r),
+            res = vml.path(path),
+            a = res.attrs;
+        res.X = a.x = x;
+        res.Y = a.y = y;
+        res.W = a.width = w;
+        res.H = a.height = h;
+        a.r = r;
+        a.path = path;
+        res.type = "rect";
+        return res;
+    };
+    R._engine.ellipse = function (vml, x, y, rx, ry) {
+        var res = vml.path(),
+            a = res.attrs;
+        res.X = x - rx;
+        res.Y = y - ry;
+        res.W = rx * 2;
+        res.H = ry * 2;
+        res.type = "ellipse";
+        setFillAndStroke(res, {
+            cx: x,
+            cy: y,
+            rx: rx,
+            ry: ry
+        });
+        return res;
+    };
+    R._engine.circle = function (vml, x, y, r) {
+        var res = vml.path(),
+            a = res.attrs;
+        res.X = x - r;
+        res.Y = y - r;
+        res.W = res.H = r * 2;
+        res.type = "circle";
+        setFillAndStroke(res, {
+            cx: x,
+            cy: y,
+            r: r
+        });
+        return res;
+    };
+    R._engine.image = function (vml, src, x, y, w, h) {
+        var path = R._rectPath(x, y, w, h),
+            res = vml.path(path).attr({stroke: "none"}),
+            a = res.attrs,
+            node = res.node,
+            fill = node.getElementsByTagName(fillString)[0];
+        a.src = src;
+        res.X = a.x = x;
+        res.Y = a.y = y;
+        res.W = a.width = w;
+        res.H = a.height = h;
+        a.path = path;
+        res.type = "image";
+        fill.parentNode == node && node.removeChild(fill);
+        fill.rotate = true;
+        fill.src = src;
+        fill.type = "tile";
+        res._.fillpos = [x, y];
+        res._.fillsize = [w, h];
+        node.appendChild(fill);
+        setCoords(res, 1, 1, 0, 0, 0);
+        return res;
+    };
+    R._engine.text = function (vml, x, y, text) {
+        var el = createNode("shape"),
+            path = createNode("path"),
+            o = createNode("textpath");
+        x = x || 0;
+        y = y || 0;
+        text = text || "";
+        path.v = R.format("m{0},{1}l{2},{1}", round(x * zoom), round(y * zoom), round(x * zoom) + 1);
+        path.textpathok = true;
+        o.string = Str(text);
+        o.on = true;
+        el.style.cssText = cssDot;
+        el.coordsize = zoom + S + zoom;
+        el.coordorigin = "0 0";
+        var p = new Element(el, vml),
+            attr = {
+                fill: "#000",
+                stroke: "none",
+                font: R._availableAttrs.font,
+                text: text
+            };
+        p.shape = el;
+        p.path = path;
+        p.textpath = o;
+        p.type = "text";
+        p.attrs.text = Str(text);
+        p.attrs.x = x;
+        p.attrs.y = y;
+        p.attrs.w = 1;
+        p.attrs.h = 1;
+        setFillAndStroke(p, attr);
+        el.appendChild(o);
+        el.appendChild(path);
+        vml.canvas.appendChild(el);
+        var skew = createNode("skew");
+        skew.on = true;
+        el.appendChild(skew);
+        p.skew = skew;
+        p.transform(E);
+        return p;
+    };
+    R._engine.setSize = function (width, height) {
+        var cs = this.canvas.style;
+        this.width = width;
+        this.height = height;
+        width == +width && (width += "px");
+        height == +height && (height += "px");
+        cs.width = width;
+        cs.height = height;
+        cs.clip = "rect(0 " + width + " " + height + " 0)";
+        if (this._viewBox) {
+            R._engine.setViewBox.apply(this, this._viewBox);
+        }
+        return this;
+    };
+    R._engine.setViewBox = function (x, y, w, h, fit) {
+        R.eve("raphael.setViewBox", this, this._viewBox, [x, y, w, h, fit]);
+        var width = this.width,
+            height = this.height,
+            size = 1 / mmax(w / width, h / height),
+            H, W;
+        if (fit) {
+            H = height / h;
+            W = width / w;
+            if (w * H < width) {
+                x -= (width - w * H) / 2 / H;
+            }
+            if (h * W < height) {
+                y -= (height - h * W) / 2 / W;
+            }
+        }
+        this._viewBox = [x, y, w, h, !!fit];
+        this._viewBoxShift = {
+            dx: -x,
+            dy: -y,
+            scale: size
+        };
+        this.forEach(function (el) {
+            el.transform("...");
+        });
+        return this;
+    };
+    var createNode;
+    R._engine.initWin = function (win) {
+            var doc = win.document;
+            doc.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)");
+            try {
+                !doc.namespaces.rvml && doc.namespaces.add("rvml", "urn:schemas-microsoft-com:vml");
+                createNode = function (tagName) {
+                    return doc.createElement('<rvml:' + tagName + ' class="rvml">');
+                };
+            } catch (e) {
+                createNode = function (tagName) {
+                    return doc.createElement('<' + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');
+                };
+            }
+        };
+    R._engine.initWin(R._g.win);
+    R._engine.create = function () {
+        var con = R._getContainer.apply(0, arguments),
+            container = con.container,
+            height = con.height,
+            s,
+            width = con.width,
+            x = con.x,
+            y = con.y;
+        if (!container) {
+            throw new Error("VML container not found.");
+        }
+        var res = new R._Paper,
+            c = res.canvas = R._g.doc.createElement("div"),
+            cs = c.style;
+        x = x || 0;
+        y = y || 0;
+        width = width || 512;
+        height = height || 342;
+        res.width = width;
+        res.height = height;
+        width == +width && (width += "px");
+        height == +height && (height += "px");
+        res.coordsize = zoom * 1e3 + S + zoom * 1e3;
+        res.coordorigin = "0 0";
+        res.span = R._g.doc.createElement("span");
+        res.span.style.cssText = "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;";
+        c.appendChild(res.span);
+        cs.cssText = R.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden", width, height);
+        if (container == 1) {
+            R._g.doc.body.appendChild(c);
+            cs.left = x + "px";
+            cs.top = y + "px";
+            cs.position = "absolute";
+        } else {
+            if (container.firstChild) {
+                container.insertBefore(c, container.firstChild);
+            } else {
+                container.appendChild(c);
+            }
+        }
+        res.renderfix = function () {};
+        return res;
+    };
+    R.prototype.clear = function () {
+        R.eve("raphael.clear", this);
+        this.canvas.innerHTML = E;
+        this.span = R._g.doc.createElement("span");
+        this.span.style.cssText = "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";
+        this.canvas.appendChild(this.span);
+        this.bottom = this.top = null;
+    };
+    R.prototype.remove = function () {
+        R.eve("raphael.remove", this);
+        this.canvas.parentNode.removeChild(this.canvas);
+        for (var i in this) {
+            this[i] = typeof this[i] == "function" ? R._removedFactory(i) : null;
+        }
+        return true;
+    };
+
+    var setproto = R.st;
+    for (var method in elproto) if (elproto[has](method) && !setproto[has](method)) {
+        setproto[method] = (function (methodname) {
+            return function () {
+                var arg = arguments;
+                return this.forEach(function (el) {
+                    el[methodname].apply(el, arg);
+                });
+            };
+        })(method);
+    }
+})();
+
+    // EXPOSE
+    // SVG and VML are appended just before the EXPOSE line
+    // Even with AMD, Raphael should be defined globally
+    oldRaphael.was ? (g.win.Raphael = R) : (Raphael = R);
+
+    return R;
+}));
diff --git a/CubeIT/js/rollover.js b/CubeIT/js/rollover.js
new file mode 100644 (file)
index 0000000..b223478
--- /dev/null
@@ -0,0 +1,25 @@
+registerLoader(load_rollover);
+
+function load_rollover() {
+       // Rollover
+       // Preload des images en rollover
+       $("img.rollover").each(function() {
+               var images = $(this).attr('rel').split('|');
+               var img = new Array;
+               var nb = images.length;
+               for (i = 0; i < nb; i += 1) {
+                       img[i] = new Image;
+                       img.src = images[i];
+               }
+       });
+       // Changement des images
+       $("img.rollover").mouseover(function() {
+               var images = $(this).attr('rel').split('|');
+               $(this).attr('src', images[1]);
+       });
+
+       $("img.rollover").mouseout(function() {
+               var images = $(this).attr('rel').split('|');
+               $(this).attr('src', images[0]);
+       });
+}
\ No newline at end of file
diff --git a/CubeIT/js/screenfull.js b/CubeIT/js/screenfull.js
new file mode 100644 (file)
index 0000000..ebc841d
--- /dev/null
@@ -0,0 +1,143 @@
+/*!
+* screenfull
+* v1.1.1 - 2013-11-20
+* https://github.com/sindresorhus/screenfull.js
+* (c) Sindre Sorhus; MIT License
+*/
+/*global Element */
+(function (window, document) {
+       'use strict';
+
+       var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element, // IE6 throws without typeof check
+
+               fn = (function () {
+                       var val, valLength;
+                       var fnMap = [
+                               [
+                                       'requestFullscreen',
+                                       'exitFullscreen',
+                                       'fullscreenElement',
+                                       'fullscreenEnabled',
+                                       'fullscreenchange',
+                                       'fullscreenerror'
+                               ],
+                               // new WebKit
+                               [
+                                       'webkitRequestFullscreen',
+                                       'webkitExitFullscreen',
+                                       'webkitFullscreenElement',
+                                       'webkitFullscreenEnabled',
+                                       'webkitfullscreenchange',
+                                       'webkitfullscreenerror'
+
+                               ],
+                               // old WebKit (Safari 5.1)
+                               [
+                                       'webkitRequestFullScreen',
+                                       'webkitCancelFullScreen',
+                                       'webkitCurrentFullScreenElement',
+                                       'webkitCancelFullScreen',
+                                       'webkitfullscreenchange',
+                                       'webkitfullscreenerror'
+
+                               ],
+                               [
+                                       'mozRequestFullScreen',
+                                       'mozCancelFullScreen',
+                                       'mozFullScreenElement',
+                                       'mozFullScreenEnabled',
+                                       'mozfullscreenchange',
+                                       'mozfullscreenerror'
+                               ],
+                               [
+                                       'msRequestFullscreen',
+                                       'msExitFullscreen',
+                                       'msFullscreenElement',
+                                       'msFullscreenEnabled',
+                                       'MSFullscreenChange',
+                                       'MSFullscreenError'
+                               ]
+                       ];
+                       var i = 0;
+                       var l = fnMap.length;
+                       var ret = {};
+
+                       for (; i < l; i++) {
+                               val = fnMap[i];
+                               if (val && val[1] in document) {
+                                       for (i = 0, valLength = val.length; i < valLength; i++) {
+                                               ret[fnMap[0][i]] = val[i];
+                                       }
+                                       return ret;
+                               }
+                       }
+                       return false;
+               })(),
+
+               screenfull = {
+                       request: function (elem) {
+                               var request = fn.requestFullscreen;
+
+                               elem = elem || document.documentElement;
+
+                               // Work around Safari 5.1 bug: reports support for
+                               // keyboard in fullscreen even though it doesn't.
+                               // Browser sniffing, since the alternative with
+                               // setTimeout is even worse.
+                               if (/5\.1[\.\d]* Safari/.test(navigator.userAgent)) {
+                                       elem[request]();
+                               } else {
+                                       elem[request](keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT);
+                               }
+                       },
+                       exit: function () {
+                               document[fn.exitFullscreen]();
+                       },
+                       toggle: function (elem) {
+                               if (this.isFullscreen) {
+                                       this.exit();
+                               } else {
+                                       this.request(elem);
+                               }
+                       },
+                       onchange: function () {},
+                       onerror: function () {},
+                       raw: fn
+               };
+
+       if (!fn) {
+               window.screenfull = false;
+               return;
+       }
+
+       Object.defineProperties(screenfull, {
+               isFullscreen: {
+                       get: function () {
+                               return !!document[fn.fullscreenElement];
+                       }
+               },
+               element: {
+                       enumerable: true,
+                       get: function () {
+                               return document[fn.fullscreenElement];
+                       }
+               },
+               enabled: {
+                       enumerable: true,
+                       get: function () {
+                               // Coerce to boolean in case of old WebKit
+                               return !!document[fn.fullscreenEnabled];
+                       }
+               }
+       });
+
+       document.addEventListener(fn.fullscreenchange, function (e) {
+               screenfull.onchange.call(screenfull, e);
+       });
+
+       document.addEventListener(fn.fullscreenerror, function (e) {
+               screenfull.onerror.call(screenfull, e);
+       });
+
+       window.screenfull = screenfull;
+})(window, document);
\ No newline at end of file
diff --git a/CubeIT/js/selectMenu.js b/CubeIT/js/selectMenu.js
new file mode 100644 (file)
index 0000000..fb44fc2
--- /dev/null
@@ -0,0 +1,15 @@
+registerLoader(load_select_menu, true);
+
+function load_select_menu() {
+    $(document).on('change', '.selectMenu', function () {
+        var v = $(this).val();
+        if ($(this).hasClass('ajax')) {
+            displayLoader();
+            processAjaxURL(v);
+        } else {
+            if (window.location != v) {
+                window.location = v;
+            }
+        }
+    });
+}
diff --git a/CubeIT/js/selectlist.js b/CubeIT/js/selectlist.js
new file mode 100644 (file)
index 0000000..b972e48
--- /dev/null
@@ -0,0 +1,120 @@
+registerLoader(load_selectlist);
+registerLoader(load_selectlist_once, true);
+
+
+function load_selectlist() {
+       $('.cubeit-selectlist-clearfilters').each(function() {
+               updateFilters(this, false);
+       });
+}
+
+function load_selectlist_once() {
+       var selectListAutoCompleteAjax;
+       $(document).on('keyup', ".cubeit-selectlist-search #q", function() {
+               try {
+                       selectListAutoCompleteAjax.abort();
+               } catch (err) {
+
+               }
+               displayLoader();
+               selectListAutoCompleteAjax = $.ajax({
+                       url: $(this).attr('data-url') + '?q=' + encodeURIComponent($(this).val()),
+                       dataType: 'json',
+                       success: successAjax
+               });
+       });
+
+       $(document).on('click', '.cubeit-selectlist-clearfilters a', function() {
+               var parent = $(this).parents('.cubeit-selectlist-filterlist');
+               $(parent).find(':checkbox').attr('checked', 'checked');
+               updateFilters(this, true);
+               return false;
+       });
+
+       $(document).on('change', ".cubeit-selectlist-filterlist :checkbox", function() {
+               updateFilters(this, true);
+       });
+
+       $(document).on('click', ".cubeit-selectlist-editfilters a,.cubeit-selectlist-filterlist h4", function() {
+               $(this).parents('.cubeit-selectlist-filterlist').find('.cubeit-selectlist-filter-edition').slideToggle(function() {
+                       popup_dimensions();
+               });
+               return false;
+       });
+}
+
+function updateFilters(element, ajax) {
+       var parent = $(element).parents('.cubeit-selectlist-filterlist');
+
+       var selectListFilterAjax;
+       try {
+               selectListFilterAjax.abort();
+       } catch (err) {
+
+       }
+       var datas = {};
+       var words = {};
+       var w;
+       var nbFilters = 0;
+       $(parent).find(':checkbox').each(function() {
+               var v = $(this).attr('value');
+               var checked = $(this).is(':checked');
+               var name = $(this).attr('name');
+               name = name.substring(0, name.length - 2);
+               if (datas[name] === undefined) {
+                       datas[name] = [];
+                       nbFilters++;
+               }
+               if (words[name] == undefined) {
+                       w = {title: $(this).parents('dd').prev().find('label').text(), v: []};
+                       words[name] = w;
+               }
+               if (v == '_all_' || !checked) {
+                       return;
+               }
+
+               datas[name].push(v);
+               words[name]['v'].push($(this).parent().text());
+       });
+
+
+       $.each(datas, function(name, values) {
+               var checked = $(parent).find('[name="' + name + '[]"][value!="_all_"]:checkbox');
+               if (checked.length == values.length || values.length == 0) {
+                       datas[name] = undefined;
+                       words[name] = undefined;
+                       nbFilters--;
+               }
+
+       });
+
+       $(".cubeit-selectlist-clearfilters").css('display', nbFilters == 0 ? 'none' : 'inline');
+
+       var summary = '';
+       if (nbFilters > 0) {
+               var w = [];
+               $.each(words, function(k, v) {
+                       if (v == undefined) {
+                               return;
+                       }
+                       w.push('<strong>' + v.title + '</strong> ' + v.v.join(' | '));
+               });
+               summary = w.join('<br />');
+       }
+       $('.cubeit-selectlist-filter-summary').html(summary);
+
+       if (!ajax) {
+               return;
+       }
+
+       displayLoader();
+
+
+       selectListFilterAjax = $.ajax({
+               url: $(parent).attr('data-url'),
+               dataType: 'json',
+               type: 'post',
+               data: {filters: datas},
+               success: successAjax
+       });
+}
diff --git a/CubeIT/js/slideshow.js b/CubeIT/js/slideshow.js
new file mode 100644 (file)
index 0000000..069aeb5
--- /dev/null
@@ -0,0 +1,300 @@
+registerLoader(load_cubeit_slideshow);
+
+function load_cubeit_slideshow() {
+    $(".slideshow").slideshow();
+}
+
+(function ($) {
+    function Slideshow(slideshow) {
+
+        this.slideshow = slideshow;
+
+        this.height = parseInt(this.slideshow.data('height'));
+        this.width = parseInt(this.slideshow.data('width'));
+
+        this.currentIndex = -1;
+
+        var defaultOptions = {
+            autoMode: true,
+            stopAutoModeOnAction: true,
+            animDuration: .75,
+            stayDuration: 7.5,
+            arrows: true,
+            arrowspermanent: false,
+            transitionType: 'slide',
+            shortcuts: false,
+            responsive: false
+        };
+
+        this.options = $.extend({}, defaultOptions, this.slideshow.data('options'));
+        this.init();
+    }
+
+    Slideshow.prototype = {
+        init: function () {
+            var $this = this;
+            this.animating = false;
+            this.preloading = 0;
+            this.slideNumber = $this.slideshow.find('.slide').length;
+
+            if (this.slideNumber < 2) {
+                this.options.shortcuts = false;
+                this.options.arrows = false;
+                this.options.arrowspermanent = false;
+                this.options.autoMode = false;
+            }
+
+            this.preloadSlide(0, function () {
+                $this.endLoading();
+                $this.preloadImages();
+            });
+
+
+            $(window).on('cubeitresize', function () {
+                $this.resize();
+            });
+            this.resize();
+
+        },
+        setHeight: function (h) {
+            this.height = h;
+            this.slideshow.find('.slide').css('height', h);
+            this.slideshow.css('height', h);
+        },
+        preloadImages: function () {
+            var $this = this;
+            this.preloading++;
+            if (this.preloading > this.slideNumber) {
+                return;
+            }
+            this.preloadSlide(this.preloading, function () {
+                $this.preloadImages();
+            });
+        },
+        preloadSlide: function (index, callback) {
+            var $this = this;
+            var slide = this.slideshow.find('.slide:eq(' + index + ')');
+            if (slide.length === 0) {
+                return;
+            }
+            if (undefined === $(slide).data('image')) {
+                $(slide).data('loaded', '1');
+            }
+            if ($(slide).data('loaded') === '1') {
+                this.slideLoaded(slide, callback);
+                return;
+            }
+
+            var img = new Image();
+            img.src = $(slide).data('image');
+            if ($(img).isLoaded()) {
+                $this.slideLoaded(slide, callback);
+            } else {
+                $(img).on('load', function () {
+                    $this.slideLoaded(slide, callback);
+                });
+            }
+        },
+        slideLoaded: function (slide, callback) {
+            $(slide).data('loaded', '1');
+            this.initSlide(slide);
+            if (callback != undefined) {
+                callback.call();
+            }
+        },
+        initSlide: function (slide) {
+            if ($(slide).data('inited') == '1') {
+                return;
+            }
+            $(slide).data('inited', '1');
+            if (undefined !== $(slide).data('image')) {
+                $(slide).css('background-image', 'url(' + $(slide).data('image') + ')')
+            }
+            if (undefined !== $(slide).data('legend')) {
+                $(slide).append('<div class="legend">' + $(slide).data('legend') + '</div>');
+            }
+        },
+        endLoading: function () {
+            var $this = this;
+            var first = this.slideshow.find('.slide:first').show().attr('data-active', 1);
+            this.initSlide(first);
+            this.currentIndex = 0;
+
+            this.slideshow.css('height', first.height());
+
+            if (this.options.arrows) {
+                this.slideshow.append('<div class="arrows"><a href="#" class="prev"></a><a href="#" class="next"></a></div>');
+                var a = this.slideshow.find('.arrows a');
+
+                this.slideshow.find(".next").click(function () {
+                    $this.userAction();
+                    $this.goNext($this.options.animDuration);
+                    return false;
+                });
+                this.slideshow.find(".prev").click(function () {
+                    $this.userAction();
+                    $this.goPrev($this.options.animDuration);
+                    return false;
+                });
+
+                $(a).css('top', (this.height - this.slideshow.find(".prev").outerHeight()) / 2);
+                if (!this.options.arrowspermanent) {
+                    $(a).hide();
+                    this.slideshow.mouseenter(function () {
+                        $(this).find('.arrows a').stop().fadeIn(500);
+                    }).mouseleave(function () {
+                        $(this).find('.arrows a').stop().fadeOut(500);
+                    });
+                }
+            }
+            if (this.options.shortcuts) {
+                this.slideshow.append('<div class="shortcuts"><div class="shortcuts-holder"></div></div>');
+                for (var i = 0; i < this.slideNumber; i++) {
+                    this.slideshow.find('.shortcuts-holder').append('<a href="#" data-n="' + i + '">' + (i + 1) + '</a>');
+                }
+
+                this.slideshow.find('.shortcuts').on('click', 'a', function () {
+                    $this.userAction();
+                    $this.goSlide($(this).data('n'), $this.options.animDuration);
+                    return false;
+                });
+
+                this.activateShortcut(0);
+            }
+            $(window).on('cubeitresize');
+            resize();
+            this.resetTimeout();
+        },
+        userAction: function () {
+            if (this.options.stopAutoModeOnAction) {
+                this.options.autoMode = false;
+                this.resetTimeout();
+            }
+        },
+        goNext: function (duration) {
+            this.goSlide(this.currentIndex + 1, duration);
+        },
+        goPrev: function (duration) {
+            this.goSlide(this.currentIndex - 1, duration);
+        },
+        normalizeIndex: function (i) {
+            return (i + this.slideNumber) % this.slideNumber;
+        },
+        goSlide: function (nextIndex, duration) {
+            $this = this;
+            if (nextIndex === this.currentIndex) {
+                return;
+            }
+            if (this.animating) {
+                return;
+            }
+            this.animating = true;
+            var dir = 1;
+            if (nextIndex > this.currentIndex) {
+                dir = -1;
+            }
+
+            nextIndex = this.normalizeIndex(nextIndex);
+            this.activateShortcut(nextIndex);
+
+            this.initSlide(next);
+            this.resetTimeout();
+            var next = this.getSlide(nextIndex);
+            var current = this.getSlide(this.currentIndex);
+
+
+            switch (this.options.transitionType) {
+                case "slide":
+                    this.animSlide(current, next, nextIndex, dir, duration);
+                    break;
+                case 'fade':
+                default:
+                    this.animFade(current, next, nextIndex, dir, duration);
+                    break;
+            }
+        },
+        animSlide: function (current, next, nextIndex, dir, duration) {
+            var $this = this;
+            var fromNext = 0;
+            var toCurrent = 0;
+            var ease = Quad.easeOut;
+            var d = duration * 1000;
+            var ww = this.width;
+            if (this.options.responsive) {
+                ww = $(window).width();
+            }
+            fromNext = ww * dir * -1;
+            toCurrent = ww * dir;
+            $(current).css({zIndex: 1});
+            $(next).css({left: fromNext, zIndex: 2}).show();
+            this.slideshow.trigger('beforechange');
+            $(next).animate({
+                left: 0
+            }, d, ease, function () {
+
+            });
+            $(current).animate({
+                left: toCurrent
+            }, d, ease, function () {
+                $this.endTransition(nextIndex);
+            });
+        },
+        animFade: function (current, next, nextIndex, dir, duration) {
+            var $this = this;
+            var ease = Quad.easeOut;
+            var d = duration * 1000;
+
+
+            $(next).show().css({opacity: 0, zIndex: 2});
+            $(current).css({zIndex: 1});
+
+            $(next).animate({
+                opacity: 1
+            }, d, ease, function () {
+                $this.endTransition(nextIndex);
+            });
+        },
+        activateShortcut: function (i) {
+            var s = this.slideshow.find('.shortcuts');
+            $(s).find('a').removeClass('active');
+            $(s).find('a[data-n="' + i + '"]').addClass('active');
+        },
+        endTransition: function (nextIndex) {
+            var currentSlide = this.getSlide(this.currentIndex);
+            this.currentIndex = nextIndex;
+            var nextSlide = this.getSlide(this.currentIndex);
+            $(currentSlide).hide().attr('data-active', 0).hide();
+            $(nextSlide).attr('data-active', 1);
+            this.animating = false;
+            this.resetTimeout();
+            this.slideshow.trigger('afterchange');
+        },
+        getSlide: function (i) {
+            return this.slideshow.find('.slide:eq(' + i + ')');
+        },
+        resetTimeout: function () {
+            $this = this;
+            clearTimeout(this.timeout);
+            if (!this.options.autoMode) {
+                return;
+            }
+            this.timeout = setTimeout(function () {
+                $this.goNext($this.options.animDuration);
+            }, this.options.stayDuration * 1000);
+        },
+        resize: function () {
+            var size = {width: this.width, height: this.height};
+            this.slideshow.css(size);
+            this.slideshow.find('.slides,.slide').css(size);
+        }
+
+    };
+    jQuery.fn.slideshow = function () {
+        return this.each(function () {
+            var $this = $(this);
+            if ($(this).data('slideshow') === undefined) {
+                $(this).data('slideshow', new Slideshow($this));
+            }
+        });
+    };
+})(jQuery);
\ No newline at end of file
diff --git a/CubeIT/js/slideshowContinuous.js b/CubeIT/js/slideshowContinuous.js
new file mode 100644 (file)
index 0000000..9dd49f5
--- /dev/null
@@ -0,0 +1,277 @@
+registerLoader(load_cubeit_slideshow_continuous);
+
+function load_cubeit_slideshow_continuous() {
+    if ($(".slideshowcontinuous").length > 0) {
+        $(".slideshowcontinuous").slideshowContinuous();
+    }
+}
+
+(function ($) {
+    function JQslideshowContinuous(slideshow) {
+        this.slideshow = slideshow;
+
+        this.height = parseInt(this.slideshow.data('height'));
+
+        this.slideshow.css({height: this.height});
+        this.currentIndex = -1;
+
+        var defaultOptions = {
+            autoMode: true,
+            stopAutoModeOnAction: true,
+            animDuration: .75,
+            stayDuration: 7.5,
+            arrows: true,
+            arrowspermanent: false,
+            transitionType: 'slide',
+            shortcuts: false
+        };
+
+        this.options = $.extend({}, defaultOptions, this.slideshow.data('options'));
+
+        this.init();
+    }
+
+    JQslideshowContinuous.prototype = {
+        init: function () {
+            var $this = this;
+            this.animating = false;
+            this.preloading = 0;
+            this.slideNumber = $this.slideshow.find('.slide').length;
+            this.preloadSlide(0, function () {
+                $this.endLoading();
+                $this.preloadImages();
+            });
+        },
+        setHeight: function (h) {
+            this.slideshow.find('.slide').css('height', h);
+            this.slideshow.css('height', h);
+        },
+        preloadImages: function () {
+            var $this = this;
+            this.preloading++;
+            if (this.preloading > this.slideNumber) {
+                return;
+            }
+            this.preloadSlide(this.preloading, function () {
+                $this.preloadImages();
+            });
+        },
+        preloadSlide: function (index, callback) {
+            var $this = this;
+            var slide = this.slideshow.find('.slide:eq(' + index + ')');
+            if (slide.length === 0) {
+                return;
+            }
+            if (undefined === $(slide).data('image')) {
+                $(slide).data('loaded', '1');
+            }
+            if ($(slide).data('loaded') === '1') {
+                this.slideLoaded(slide, callback);
+                return;
+            }
+
+            var img = new Image();
+            img.src = $(slide).data('image');
+            if ($(img).isLoaded()) {
+                $this.slideLoaded(slide, callback);
+            } else {
+                $(img).on('load', function () {
+                    $this.slideLoaded(slide, callback);
+                });
+            }
+
+        },
+        slideLoaded: function (slide, callback) {
+            $(slide).data('loaded', '1');
+            this.initSlide(slide);
+            if (callback != undefined) {
+                callback.call();
+            }
+        },
+        initSlide: function (slide) {
+            if ($(slide).data('inited') == '1') {
+                return;
+            }
+            $(slide).data('inited', '1');
+            if (undefined !== $(slide).data('image')) {
+                $(slide).css('background-image', 'url(' + $(slide).data('image') + ')')
+            }
+            if (undefined !== $(slide).data('legend')) {
+                $(slide).append('<div class="legend">' + $(slide).data('legend') + '</div>');
+            }
+        },
+        endLoading: function () {
+            var $this = this;
+            var first = this.slideshow.find('.slide:first').show().attr('data-active', 1);
+            this.initSlide(first);
+            this.currentIndex = 0;
+
+            if (window.resize) {
+                resize();
+            }
+
+            if (this.options.arrows) {
+                this.slideshow.append('<div class="arrows"><a href="#" class="prev"></a><a href="#" class="next"></a></div>');
+                var a = this.slideshow.find('.arrows a');
+
+                this.slideshow.find(".next").click(function () {
+                    $this.userAction();
+                    $this.goNext($this.options.animDuration);
+                    return false;
+                });
+                this.slideshow.find(".prev").click(function () {
+                    $this.userAction();
+                    $this.goPrev($this.options.animDuration);
+                    return false;
+                });
+
+                $(a).css('top', (this.height - this.slideshow.find(".prev").outerHeight()) / 2);
+                if (!this.options.arrowspermanent) {
+                    $(a).hide();
+                    this.slideshow.mouseenter(function () {
+                        $(this).find('.arrows a').stop().fadeIn(500);
+                    }).mouseleave(function () {
+                        $(this).find('.arrows a').stop().fadeOut(500);
+                    });
+                }
+            }
+            if (this.options.shortcuts) {
+                this.slideshow.append('<div class="shortcuts"><div class="shortcuts-holder"></div></div>');
+                for (var i = 0; i < this.slideNumber; i++) {
+                    this.slideshow.find('.shortcuts-holder').append('<a href="#" data-n="' + i + '">' + (i + 1) + '</a>');
+                }
+
+                this.slideshow.find('.shortcuts').on('click', 'a', function () {
+                    $this.userAction();
+                    $this.goSlide($(this).data('n'), $this.options.animDuration);
+                    return false;
+                });
+
+                this.activateShortcut(0);
+            }
+            $(window).trigger('cubeitresize');
+            this.resetTimeout();
+        },
+        userAction: function () {
+            if (this.options.stopAutoModeOnAction) {
+                this.options.autoMode = false;
+                this.resetTimeout();
+            }
+        },
+        goNext: function (duration) {
+            this.goSlide(this.currentIndex + 1, duration);
+        },
+        goPrev: function (duration) {
+            this.goSlide(this.currentIndex - 1, duration);
+        },
+        normalizeIndex: function (i) {
+            return (i + this.slideNumber) % this.slideNumber;
+        },
+        goSlide: function (nextIndex, duration) {
+            $this = this;
+            if (nextIndex === this.currentIndex) {
+                return;
+            }
+            if (this.animating) {
+                return;
+            }
+            this.animating = true;
+            var dir = 1;
+            if (nextIndex > this.currentIndex) {
+                dir = -1;
+            }
+
+            nextIndex = this.normalizeIndex(nextIndex);
+            this.activateShortcut(nextIndex);
+
+            this.initSlide(next);
+            this.resetTimeout();
+            var next = this.getSlide(nextIndex);
+            var current = this.getSlide(this.currentIndex);
+
+            switch (this.options.transitionType) {
+                case "slide":
+                    this.animSlide(current, next, nextIndex, dir, duration);
+                    break;
+                case 'fade':
+                default:
+                    this.animFade(current, next, nextIndex, dir, duration);
+                    break;
+            }
+        },
+        animSlide: function (current, next, nextIndex, dir, duration) {
+            var $this = this;
+            var fromNext = 0;
+            var toCurrent = 0;
+            var ease = Quad.easeOut;
+            var d = duration * 1000;
+            var ww = $(window).width();
+            fromNext = ww * dir * -1;
+            toCurrent = ww * dir;
+            $(current).css({zIndex: 1});
+            $(next).css({left: fromNext, zIndex: 2}).show();
+            $(next).animate({
+                left: 0
+            }, d, ease, function () {
+
+            });
+            $(current).animate({
+                left: toCurrent
+            }, d, ease, function () {
+                $this.endTransition(nextIndex);
+            });
+        },
+        animFade: function (current, next, nextIndex, dir, duration) {
+            var $this = this;
+            var ease = Quad.easeOut;
+            var d = duration * 1000;
+
+
+            $(next).show().css({opacity: 0, zIndex: 2});
+            $(current).css({zIndex: 1});
+
+            $(next).animate({
+                opacity: 1
+            }, d, ease, function () {
+                $this.endTransition(nextIndex);
+            });
+        },
+        activateShortcut: function (i) {
+            var s = this.slideshow.find('.shortcuts');
+            $(s).find('a').removeClass('active');
+            $(s).find('a[data-n="' + i + '"]').addClass('active');
+        },
+        endTransition: function (nextIndex) {
+            var currentSlide = this.getSlide(this.currentIndex);
+            this.currentIndex = nextIndex;
+            var nextSlide = this.getSlide(this.currentIndex);
+            $(currentSlide).hide().attr('data-active', 0).hide();
+            $(nextSlide).attr('data-active', 1);
+            $this.animating = false;
+            $this.resetTimeout();
+        },
+        getSlide: function (i) {
+            return this.slideshow.find('.slide:eq(' + i + ')');
+        },
+        resetTimeout: function () {
+            $this = this;
+            clearTimeout(this.timeout);
+            if (!this.options.autoMode) {
+                return;
+            }
+            this.timeout = setTimeout(function () {
+                $this.goNext($this.options.animDuration);
+            }, this.options.stayDuration * 1000);
+        }
+
+    };
+
+    jQuery.fn.slideshowContinuous = function () {
+        return this.each(function () {
+            var $this = $(this);
+            if ($(this).data('slideshow') === undefined) {
+                $(this).data('slideshow', new JQslideshowContinuous($this));
+            }
+        });
+    };
+})(jQuery);
diff --git a/CubeIT/js/slideshowScroll.js b/CubeIT/js/slideshowScroll.js
new file mode 100644 (file)
index 0000000..367cb62
--- /dev/null
@@ -0,0 +1,92 @@
+registerLoader(load_cubeit_slideshow_scroll);
+function load_cubeit_slideshow_scroll() {
+
+       $(".slideshowscroll").slideshowScroll();
+}
+
+(function ($) {
+       function JQslideshowScroll(slideshow) {
+               this.slideshow = slideshow;
+
+        this.height = parseInt(this.slideshow.data('height'));
+        this.slideshow.css({height:this.height});
+
+        this.inertia = 0.1;
+               this.lastStep = null;
+               this.currentLeft = 0;
+               this.offset = null;
+               this.init();
+       }
+
+       JQslideshowScroll.prototype = {
+               init: function () {
+                       var $this = this;
+                       if (Modernizr.touch) {
+                               var c = this.slideshow.find('.slidescont');
+                               var f = this.slideshow.find('.slidesfree');
+                               var s = this.slideshow.find('.slides');
+                               $(c).append(s);
+                               $(f).remove();
+                               $(c).css('overflow', 'auto');
+                       } else {
+                               $(window).on('mousemove', function (e) {
+                                       $this.move(e.pageX);
+                               });
+                               window.requestAnimationFrame($.proxy(function (timestamp) {
+                                       this.step(timestamp)
+                               }, this));
+                               this.move(0, true);
+                       }
+               },
+               move: function (x, immediate) {
+                       if (immediate === undefined) {
+                               immediate = false;
+                       }
+
+                       var ss = this.slideshow.find(".slides");
+                       // if the cursor is closer than the margin from the edge, it considered as max
+                       var margin = 10;
+                       // normalize
+                       var ww = $(window).width();
+                       x = Math.min(Math.max(0, x), ww);
+                       /* @TODO - make width dynamic... */
+                       var sw = Math.max(Math.min(ww, 1020), $(ss).outerWidth());
+
+                       var p = (x - margin) / (ww - margin * 2);
+                       var amplitude = Math.max(0, sw - ww - margin * 2);
+                       if (sw < ww) {
+                               this.offset = (ww - sw) / 2;
+                       } else {
+                               this.offset = p * amplitude * -1;
+                       }
+                       if (immediate) {
+                               this.currentLeft = this.offset;
+                               this.slideshow.find(".slides").css('left', this.offset);
+                       }
+               },
+               step: function (timestamp) {
+                       var progress = 1 / 60;
+                       if (this.lastStep !== null) {
+                               progress = (timestamp - this.lastStep) / 1000;
+                               this.lastStep = timestamp;
+                       }
+
+                       if (this.offset !== null) {
+                               var left = this.currentLeft + (((this.offset - this.currentLeft) / this.inertia) * progress);
+                               this.slideshow.find(".slides").css('left', left);
+                               this.currentLeft = Math.round(left * 100) / 100;
+                       }
+                       window.requestAnimationFrame($.proxy(function (timestamp) {
+                               this.step(timestamp)
+                       }, this));
+               },
+       };
+       jQuery.fn.slideshowScroll = function () {
+               return this.each(function () {
+                       var $this = $(this);
+                       if ($(this).data('slideshowScroll') === undefined) {
+                               $(this).data('slideshowScroll', new JQslideshowScroll($this));
+                       }
+               })
+       };
+})(jQuery);
diff --git a/CubeIT/js/swfaddress.js b/CubeIT/js/swfaddress.js
new file mode 100644 (file)
index 0000000..e6a3293
--- /dev/null
@@ -0,0 +1,834 @@
+/**
+ * SWFAddress 2.4: Deep linking for Flash and Ajax <http://www.asual.com/swfaddress/>
+ *
+ * SWFAddress is (c) 2006-2009 Rostislav Hristov and contributors
+ * This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
+ *
+ */
+
+if (typeof asual == "undefined") var asual = {};
+if (typeof asual.util == "undefined") asual.util = {};
+
+asual.util.Browser = new function() {
+
+    var _agent = navigator.userAgent.toLowerCase(),
+        _safari = /webkit/.test(_agent),
+        _opera = /opera/.test(_agent),
+        _msie = /msie/.test(_agent) && !/opera/.test(_agent),
+        _mozilla = /mozilla/.test(_agent) && !/(compatible|webkit)/.test(_agent),
+        _version = parseFloat(_msie ? _agent.substr(_agent.indexOf('msie') + 4) :
+            (_agent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [0,'0'])[1]);
+
+    this.toString = function() {
+        return '[class Browser]';
+    };
+
+    this.getVersion = function() {
+        return _version;
+    };
+
+    this.isMSIE = function() {
+        return _msie;
+    };
+
+    this.isSafari = function() {
+        return _safari;
+    };
+
+    this.isOpera = function() {
+        return _opera;
+    };
+
+    this.isMozilla = function() {
+        return _mozilla;
+    };
+}
+
+asual.util.Events = new function() {
+
+    var DOM_LOADED = 'DOMContentLoaded',
+        STOP = 'onstop',
+        _w = window,
+        _d = document,
+        _cache = [],
+        _util = asual.util,
+        _browser = _util.Browser,
+        _msie = _browser.isMSIE(),
+        _safari = _browser.isSafari();
+
+    this.toString = function() {
+        return '[class Events]';
+    };
+
+    this.addListener = function(obj, type, listener) {
+        _cache.push({o: obj, t: type, l: listener});
+        if (!(type == DOM_LOADED && (_msie || _safari))) {
+            if (obj.addEventListener)
+                obj.addEventListener(type, listener, false);
+            else if (obj.attachEvent)
+                obj.attachEvent('on' + type, listener);
+        }
+    };
+
+    this.removeListener = function(obj, type, listener) {
+        for (var i = 0, e; e = _cache[i]; i++) {
+            if (e.o == obj && e.t == type && e.l == listener) {
+                _cache.splice(i, 1);
+                break;
+            }
+        }
+        if (!(type == DOM_LOADED && (_msie || _safari))) {
+            if (obj.removeEventListener)
+                obj.removeEventListener(type, listener, false);
+            else if (obj.detachEvent)
+                obj.detachEvent('on' + type, listener);
+        }
+    };
+
+    var _unload = function() {
+        for (var i = 0, evt; evt = _cache[i]; i++) {
+            if (evt.t != DOM_LOADED)
+                _util.Events.removeListener(evt.o, evt.t, evt.l);
+        }
+    };
+
+    var _unloadFix = function() {
+        if (_d.readyState == 'interactive') {
+            function stop() {
+                _d.detachEvent(STOP, stop);
+                _unload();
+            };
+            _d.attachEvent(STOP, stop);
+            _w.setTimeout(function() {
+                _d.detachEvent(STOP, stop);
+            }, 0);
+        }
+    };
+
+    if (_msie || _safari) {
+        (function (){
+            try {
+                if ((_msie && _d.body) || !/loaded|complete/.test(_d.readyState))
+                    _d.documentElement.doScroll('left');
+            } catch(e) {
+                return setTimeout(arguments.callee, 0);
+            }
+            for (var i = 0, e; e = _cache[i]; i++)
+                if (e.t == DOM_LOADED) e.l.call(null);
+        })();
+    }
+
+    if (_msie)
+        _w.attachEvent('onbeforeunload', _unloadFix);
+
+    this.addListener(_w, 'unload', _unload);
+}
+
+asual.util.Functions = new function() {
+
+    this.toString = function() {
+        return '[class Functions]';
+    };
+
+    this.bind = function(method, object, param) {
+        for (var i = 2, p, arr = []; p = arguments[i]; i++)
+            arr.push(p);
+        return function() {
+            return method.apply(object, arr);
+        }
+    };
+}
+
+var SWFAddressEvent = function(type) {
+
+    this.toString = function() {
+        return '[object SWFAddressEvent]';
+    };
+
+    this.type = type;
+
+    this.target = [SWFAddress][0];
+
+    this.value = SWFAddress.getValue();
+
+    this.path = SWFAddress.getPath();
+
+    this.pathNames = SWFAddress.getPathNames();
+
+    this.parameters = {};
+
+    var _parameterNames = SWFAddress.getParameterNames();
+    for (var i = 0, l = _parameterNames.length; i < l; i++)
+        this.parameters[_parameterNames[i]] = SWFAddress.getParameter(_parameterNames[i]);
+
+    this.parameterNames = _parameterNames;
+
+}
+
+SWFAddressEvent.INIT = 'init';
+
+SWFAddressEvent.CHANGE = 'change';
+
+SWFAddressEvent.INTERNAL_CHANGE = 'internalChange';
+
+SWFAddressEvent.EXTERNAL_CHANGE = 'externalChange';
+
+var SWFAddress = new function() {
+
+    var _getHash = function() {
+        var index = _l.href.indexOf('#');
+        return index != -1 ? _ec(_dc(_l.href.substr(index + 1))) : '';
+    };
+
+    var _getWindow = function() {
+        try {
+            top.document;
+            return top;
+        } catch (e) {
+            return window;
+        }
+    };
+
+    var _strictCheck = function(value, force) {
+        if (_opts.strict)
+            value = force ? (value.substr(0, 1) != '/' ? '/' + value : value) : (value == '' ? '/' : value);
+        return value;
+    };
+
+    var _ieLocal = function(value, direction) {
+        return (_msie && _l.protocol == 'file:') ?
+            (direction ? _value.replace(/\?/, '%3F') : _value.replace(/%253F/, '?')) : value;
+    };
+
+    var _searchScript = function(el) {
+        if (el.childNodes) {
+            for (var i = 0, l = el.childNodes.length, s; i < l; i++) {
+                if (el.childNodes[i].src)
+                    _url = String(el.childNodes[i].src);
+                if (s = _searchScript(el.childNodes[i]))
+                    return s;
+            }
+        }
+    };
+
+    var _titleCheck = function() {
+        if (_d.title != _title && _d.title.indexOf('#') != -1)
+            _d.title = _title;
+    };
+
+    var _listen = function() {
+        if (!_silent) {
+            var hash = _getHash();
+            var diff = !(_value == hash);
+            if (_safari && _version < 523) {
+                if (_length != _h.length) {
+                    _length = _h.length;
+                    if (typeof _stack[_length - 1] != UNDEFINED)
+                        _value = _stack[_length - 1];
+                    _update.call(this, false);
+                }
+            } else if (_msie && diff) {
+                if (_version < 7)
+                    _l.reload();
+                else
+                    this.setValue(hash);
+            } else if (diff) {
+                _value = hash;
+                _update.call(this, false);
+            }
+            if (_msie)
+                _titleCheck.call(this);
+        }
+    };
+
+    var _bodyClick = function(e) {
+        if (_popup.length > 0) {
+            var popup = window.open(_popup[0], _popup[1], eval(_popup[2]));
+            if (typeof _popup[3] != UNDEFINED)
+                eval(_popup[3]);
+        }
+        _popup = [];
+    };
+
+    var _swfChange = function() {
+        for (var i = 0, id, obj, value = SWFAddress.getValue(), setter = 'setSWFAddressValue'; id = _ids[i]; i++) {
+            obj = document.getElementById(id);
+            if (obj) {
+                if (obj.parentNode && typeof obj.parentNode.so != UNDEFINED) {
+                    obj.parentNode.so.call(setter, value);
+                } else {
+                    if (!(obj && typeof obj[setter] != UNDEFINED)) {
+                        var objects = obj.getElementsByTagName('object');
+                        var embeds = obj.getElementsByTagName('embed');
+                        obj = ((objects[0] && typeof objects[0][setter] != UNDEFINED) ?
+                            objects[0] : ((embeds[0] && typeof embeds[0][setter] != UNDEFINED) ?
+                                embeds[0] : null));
+                    }
+                    if (obj)
+                        obj[setter](value);
+                }
+            } else if (obj = document[id]) {
+                if (typeof obj[setter] != UNDEFINED)
+                    obj[setter](value);
+            }
+        }
+    };
+
+    var _jsDispatch = function(type) {
+        this.dispatchEvent(new SWFAddressEvent(type));
+        type = type.substr(0, 1).toUpperCase() + type.substr(1);
+        if(typeof this['on' + type] == FUNCTION)
+            this['on' + type]();
+    };
+
+    var _jsInit = function() {
+        if (_util.Browser.isSafari())
+            _d.body.addEventListener('click', _bodyClick);
+        _jsDispatch.call(this, 'init');
+    };
+
+    var _jsChange = function() {
+        _swfChange();
+        _jsDispatch.call(this, 'change');
+    };
+
+    var _update = function(internal) {
+        _jsChange.call(this);
+        if (internal) {
+            _jsDispatch.call(this, 'internalChange');
+        } else {
+            _jsDispatch.call(this, 'externalChange');
+        }
+        _st(_functions.bind(_track, this), 10);
+    };
+
+    var _track = function() {
+        var value = (_l.pathname + (/\/$/.test(_l.pathname) ? '' : '/') + this.getValue()).replace(/\/\//, '/').replace(/^\/$/, '');
+        var fn = _t[_opts.tracker];
+        if (typeof fn == FUNCTION)
+            fn(value);
+        else if (typeof _t.pageTracker != UNDEFINED && typeof _t.pageTracker._trackPageview == FUNCTION)
+            _t.pageTracker._trackPageview(value);
+        else if (typeof _t.urchinTracker == FUNCTION)
+            _t.urchinTracker(value);
+    };
+
+    var _htmlWrite = function() {
+        var doc = _frame.contentWindow.document;
+        doc.open();
+        doc.write('<html><head><title>' + _d.title + '</title><script>var ' + ID + ' = "' + _getHash() + '";</script></head></html>');
+        doc.close();
+    };
+
+    var _htmlLoad = function() {
+        var win = _frame.contentWindow;
+        var src = win.location.href;
+        _value = (typeof win[ID] != UNDEFINED ? win[ID] : '');
+        if (_value != _getHash()) {
+            _update.call(SWFAddress, false);
+            _l.hash = _ieLocal(_value, TRUE);
+        }
+    };
+
+    var _load = function() {
+        if (!_loaded) {
+            _loaded = TRUE;
+            if (_msie && _version < 8) {
+                var frameset = _d.getElementsByTagName('frameset')[0];
+                _frame = _d.createElement((frameset ? '' : 'i') + 'frame');
+                if (frameset) {
+                    frameset.insertAdjacentElement('beforeEnd', _frame);
+                    frameset[frameset.cols ? 'cols' : 'rows'] += ',0';
+                    _frame.src = 'javascript:false';
+                    _frame.noResize = true;
+                    _frame.frameBorder = _frame.frameSpacing = 0;
+                } else {
+                    _frame.src = 'javascript:false';
+                    _frame.style.display = 'none';
+                    _d.body.insertAdjacentElement('afterBegin', _frame);
+                }
+                _st(function() {
+                    _events.addListener(_frame, 'load', _htmlLoad);
+                    if (typeof _frame.contentWindow[ID] == UNDEFINED)
+                        _htmlWrite();
+                }, 50);
+            } else if (_safari) {
+                if (_version < 418) {
+                    _d.body.innerHTML += '<form id="' + ID + '" style="position:absolute;top:-9999px;" method="get"></form>';
+                    _form = _d.getElementById(ID);
+                }
+                if (typeof _l[ID] == UNDEFINED) _l[ID] = {};
+                if (typeof _l[ID][_l.pathname] != UNDEFINED) _stack = _l[ID][_l.pathname].split(',');
+            }
+
+            _st(_functions.bind(function() {
+                _jsInit.call(this);
+                _jsChange.call(this);
+                _track.call(this);
+            }, this), 1);
+
+            if (_msie && _version >= 8) {
+                _d.body.onhashchange = _functions.bind(_listen, this);
+                _si(_functions.bind(_titleCheck, this), 50);
+            } else {
+                _si(_functions.bind(_listen, this), 50);
+            }
+        }
+    };
+
+    var ID = 'swfaddress',
+        FUNCTION = 'function',
+        UNDEFINED = 'undefined',
+        TRUE = true,
+        FALSE = false,
+        _util = asual.util,
+        _browser = _util.Browser,
+        _events = _util.Events,
+        _functions = _util.Functions,
+        _version = _browser.getVersion(),
+        _msie = _browser.isMSIE(),
+        _mozilla = _browser.isMozilla(),
+        _opera = _browser.isOpera(),
+        _safari = _browser.isSafari(),
+        _supported = FALSE,
+        _t = _getWindow(),
+        _d = _t.document,
+        _h = _t.history,
+        _l = _t.location,
+        _si = setInterval,
+        _st = setTimeout,
+        _dc = decodeURI,
+        _ec = encodeURI,
+        _frame,
+        _form,
+        _url,
+        _title = _d.title,
+        _length = _h.length,
+        _silent = FALSE,
+        _loaded = FALSE,
+        _justset = TRUE,
+        _juststart = TRUE,
+        _ref = this,
+        _stack = [],
+        _ids = [],
+        _popup = [],
+        _listeners = {},
+        _value = _getHash(),
+        _opts = {history: TRUE, strict: TRUE};
+
+    if (_msie && _d.documentMode && _d.documentMode != _version)
+        _version = _d.documentMode != 8 ? 7 : 8;
+
+    _supported =
+        (_mozilla && _version >= 1) ||
+        (_msie && _version >= 6) ||
+        (_opera && _version >= 9.5) ||
+        (_safari && _version >= 312);
+
+    if (_supported) {
+
+        if (_opera)
+            history.navigationMode = 'compatible';
+
+        for (var i = 1; i < _length; i++)
+            _stack.push('');
+
+        _stack.push(_getHash());
+
+        if (_msie && _l.hash != _getHash())
+            _l.hash = '#' + _ieLocal(_getHash(), TRUE);
+
+        _searchScript(document);
+        var _qi = _url ? _url.indexOf('?') : -1;
+        if (_qi != -1) {
+            var param, params = _url.substr(_qi + 1).split('&');
+            for (var i = 0, p; p = params[i]; i++) {
+                param = p.split('=');
+                if (/^(history|strict)$/.test(param[0])) {
+                    _opts[param[0]] = (isNaN(param[1]) ? /^(true|yes)$/i.test(param[1]) : (parseInt(param[1]) != 0));
+                }
+                if (/^tracker$/.test(param[0]))
+                    _opts[param[0]] = param[1];
+            }
+        }
+
+        if (_msie)
+            _titleCheck.call(this);
+
+        if (window == _t)
+            _events.addListener(document, 'DOMContentLoaded', _functions.bind(_load, this));
+        _events.addListener(_t, 'load', _functions.bind(_load, this));
+
+    } else if ((!_supported && _l.href.indexOf('#') != -1) ||
+        (_safari && _version < 418 && _l.href.indexOf('#') != -1 && _l.search != '')){
+        _d.open();
+        _d.write('<html><head><meta http-equiv="refresh" content="0;url=' +
+            _l.href.substr(0, _l.href.indexOf('#')) + '" /></head></html>');
+        _d.close();
+    } else {
+        _track();
+    }
+
+    this.toString = function() {
+        return '[class SWFAddress]';
+    };
+
+    this.back = function() {
+        _h.back();
+    };
+
+    this.forward = function() {
+        _h.forward();
+    };
+
+    this.up = function() {
+        var path = this.getPath();
+        this.setValue(path.substr(0, path.lastIndexOf('/', path.length - 2) + (path.substr(path.length - 1) == '/' ? 1 : 0)));
+    };
+
+    this.go = function(delta) {
+        _h.go(delta);
+    };
+
+    this.href = function(url, target) {
+        target = typeof target != UNDEFINED ? target : '_self';
+        if (target == '_self')
+            self.location.href = url;
+        else if (target == '_top')
+            _l.href = url;
+        else if (target == '_blank')
+            window.open(url);
+        else
+            _t.frames[target].location.href = url;
+    };
+
+    this.popup = function(url, name, options, handler) {
+        try {
+            var popup = window.open(url, name, eval(options));
+            if (typeof handler != UNDEFINED)
+                eval(handler);
+        } catch (ex) {}
+        _popup = arguments;
+    };
+
+    this.getIds = function() {
+        return _ids;
+    };
+
+    this.getId = function(index) {
+        return _ids[0];
+    };
+
+    this.setId = function(id) {
+        _ids[0] = id;
+    };
+
+    this.addId = function(id) {
+        this.removeId(id);
+        _ids.push(id);
+    };
+
+    this.removeId = function(id) {
+        for (var i = 0; i < _ids.length; i++) {
+            if (id == _ids[i]) {
+                _ids.splice(i, 1);
+                break;
+            }
+        }
+    };
+
+    this.addEventListener = function(type, listener) {
+        if (typeof _listeners[type] == UNDEFINED)
+            _listeners[type] = [];
+        _listeners[type].push(listener);
+    };
+
+    this.removeEventListener = function(type, listener) {
+        if (typeof _listeners[type] != UNDEFINED) {
+            for (var i = 0, l; l = _listeners[type][i]; i++)
+                if (l == listener) break;
+            _listeners[type].splice(i, 1);
+        }
+    };
+
+    this.dispatchEvent = function(event) {
+        if (this.hasEventListener(event.type)) {
+            event.target = this;
+            for (var i = 0, l; l = _listeners[event.type][i]; i++)
+                l(event);
+            return TRUE;
+        }
+        return FALSE;
+    };
+
+    this.hasEventListener = function(type) {
+        return (typeof _listeners[type] != UNDEFINED && _listeners[type].length > 0);
+    };
+
+    this.getBaseURL = function() {
+        var url = _l.href;
+        if (url.indexOf('#') != -1)
+            url = url.substr(0, url.indexOf('#'));
+        if (url.substr(url.length - 1) == '/')
+            url = url.substr(0, url.length - 1);
+        return url;
+    };
+
+    this.getStrict = function() {
+        return _opts.strict;
+    };
+
+    this.setStrict = function(strict) {
+        _opts.strict = strict;
+    };
+
+    this.getHistory = function() {
+        return _opts.history;
+    };
+
+    this.setHistory = function(history) {
+        _opts.history = history;
+    };
+
+    this.getTracker = function() {
+        return _opts.tracker;
+    };
+
+    this.setTracker = function(tracker) {
+        _opts.tracker = tracker;
+    };
+
+    this.getTitle = function() {
+        return _d.title;
+    };
+
+    this.setTitle = function(title) {
+        if (!_supported) return null;
+        if (typeof title == UNDEFINED) return;
+        if (title == 'null') title = '';
+        title = _dc(title);
+        _st(function() {
+            _title = _d.title = title;
+            if (_juststart && _frame && _frame.contentWindow && _frame.contentWindow.document) {
+                _frame.contentWindow.document.title = title;
+                _juststart = FALSE;
+            }
+            if (!_justset && _mozilla)
+                _l.replace(_l.href.indexOf('#') != -1 ? _l.href : _l.href + '#');
+            _justset = FALSE;
+        }, 10);
+    };
+
+    this.getStatus = function() {
+        return _t.status;
+    };
+
+    this.setStatus = function(status) {
+        if (!_supported) return null;
+        if (typeof status == UNDEFINED) return;
+        if (status == 'null') status = '';
+        status = _dc(status);
+        if (!_safari) {
+            status = _strictCheck((status != 'null') ? status : '', TRUE);
+            if (status == '/') status = '';
+            if (!(/http(s)?:\/\//.test(status))) {
+                var index = _l.href.indexOf('#');
+                status = (index == -1 ? _l.href : _l.href.substr(0, index)) + '#' + status;
+            }
+            _t.status = status;
+        }
+    };
+
+    this.resetStatus = function() {
+        _t.status = '';
+    };
+
+    this.getValue = function() {
+        if (!_supported) return null;
+        return _dc(_strictCheck(_ieLocal(_value, FALSE), FALSE));
+    };
+
+    this.setValue = function(value) {
+        if (!_supported) return null;
+        if (typeof value == UNDEFINED) return;
+        if (value == 'null') value = '';
+        value = _ec(_dc(_strictCheck(value, TRUE)));
+        if (value == '/') value = '';
+        if (_value == value) return;
+        _justset = TRUE;
+        _value = value;
+        _silent = TRUE;
+        _update.call(SWFAddress, true);
+        _stack[_h.length] = _value;
+        if (_safari) {
+            if (_opts.history) {
+                _l[ID][_l.pathname] = _stack.toString();
+                _length = _h.length + 1;
+                if (_version < 418) {
+                    if (_l.search == '') {
+                        _form.action = '#' + _value;
+                        _form.submit();
+                    }
+                } else if (_version < 523 || _value == '') {
+                    var evt = _d.createEvent('MouseEvents');
+                    evt.initEvent('click', TRUE, TRUE);
+                    var anchor = _d.createElement('a');
+                    anchor.href = '#' + _value;
+                    anchor.dispatchEvent(evt);
+                } else {
+                    _l.hash = '#' + _value;
+                }
+            } else {
+                _l.replace('#' + _value);
+            }
+        } else if (_value != _getHash()) {
+            if (_opts.history)
+                _l.hash = '#' + _dc(_ieLocal(_value, TRUE));
+            else
+                _l.replace('#' + _dc(_value));
+        }
+        if ((_msie && _version < 8) && _opts.history) {
+            _st(_htmlWrite, 50);
+        }
+        if (_safari)
+            _st(function(){ _silent = FALSE; }, 1);
+        else
+            _silent = FALSE;
+    };
+
+    this.getPath = function() {
+        var value = this.getValue();
+        if (value.indexOf('?') != -1) {
+            return value.split('?')[0];
+        } else if (value.indexOf('#') != -1) {
+            return value.split('#')[0];
+        } else {
+            return value;
+        }
+    };
+
+    this.getPathNames = function() {
+        var path = this.getPath(), names = path.split('/');
+        if (path.substr(0, 1) == '/' || path.length == 0)
+            names.splice(0, 1);
+        if (path.substr(path.length - 1, 1) == '/')
+            names.splice(names.length - 1, 1);
+        return names;
+    };
+
+    this.getQueryString = function() {
+        var value = this.getValue(), index = value.indexOf('?');
+        if (index != -1 && index < value.length)
+            return value.substr(index + 1);
+    };
+
+    this.getParameter = function(param) {
+        var value = this.getValue();
+        var index = value.indexOf('?');
+        if (index != -1) {
+            value = value.substr(index + 1);
+            var p, params = value.split('&'), i = params.length, r = [];
+            while(i--) {
+                p = params[i].split('=');
+                if (p[0] == param)
+                    r.push(p[1]);
+            }
+            if (r.length != 0)
+                return r.length != 1 ? r : r[0];
+        }
+    };
+
+    this.getParameterNames = function() {
+        var value = this.getValue();
+        var index = value.indexOf('?');
+        var names = [];
+        if (index != -1) {
+            value = value.substr(index + 1);
+            if (value != '' && value.indexOf('=') != -1) {
+                var params = value.split('&'), i = 0;
+                while(i < params.length) {
+                    names.push(params[i].split('=')[0]);
+                    i++;
+                }
+            }
+        }
+        return names;
+    };
+
+    this.onInit = null;
+
+    this.onChange = null;
+
+    this.onInternalChange = null;
+
+    this.onExternalChange = null;
+
+    (function() {
+
+        var _args;
+
+        if (typeof FlashObject != UNDEFINED) SWFObject = FlashObject;
+        if (typeof SWFObject != UNDEFINED && SWFObject.prototype && SWFObject.prototype.write) {
+            var _s1 = SWFObject.prototype.write;
+            SWFObject.prototype.write = function() {
+                _args = arguments;
+                if (this.getAttribute('version').major < 8) {
+                    this.addVariable('$swfaddress', SWFAddress.getValue());
+                    ((typeof _args[0] == 'string') ?
+                        document.getElementById(_args[0]) : _args[0]).so = this;
+                }
+                var success;
+                if (success = _s1.apply(this, _args))
+                    _ref.addId(this.getAttribute('id'));
+                return success;
+            }
+        }
+
+        if (typeof swfobject != UNDEFINED) {
+            var _s2r = swfobject.registerObject;
+            swfobject.registerObject = function() {
+                _args = arguments;
+                _s2r.apply(this, _args);
+                _ref.addId(_args[0]);
+            }
+            var _s2c = swfobject.createSWF;
+            swfobject.createSWF = function() {
+                _args = arguments;
+                var swf = _s2c.apply(this, _args);
+                if (swf)
+                    _ref.addId(_args[0].id);
+                return swf;
+            }
+            var _s2e = swfobject.embedSWF;
+            swfobject.embedSWF = function() {
+                _args = arguments;
+                if (typeof _args[8] == UNDEFINED)
+                    _args[8] = {};
+                if (typeof _args[8].id == UNDEFINED)
+                    _args[8].id = _args[1];
+                _s2e.apply(this, _args);
+                _ref.addId(_args[8].id);
+            }
+        }
+
+        if (typeof UFO != UNDEFINED) {
+            var _u = UFO.create;
+            UFO.create = function() {
+                _args = arguments;
+                _u.apply(this, _args);
+                _ref.addId(_args[0].id);
+            }
+        }
+
+        if (typeof AC_FL_RunContent != UNDEFINED) {
+            var _a = AC_FL_RunContent;
+            AC_FL_RunContent = function() {
+                _args = arguments;
+                _a.apply(this, _args);
+                for (var i = 0, l = _args.length; i < l; i++)
+                    if (_args[i]== 'id') _ref.addId(_args[i+1]);
+            }
+        }
+
+    })();
+}
diff --git a/CubeIT/js/taghandler.js b/CubeIT/js/taghandler.js
new file mode 100644 (file)
index 0000000..d6e7905
--- /dev/null
@@ -0,0 +1,57 @@
+registerLoader(load_taghandler, true);
+
+function load_taghandler() {
+    $(document).on('cubeitdomchange', tagHandler);
+}
+
+function tagHandler() {
+    $('[data-taghandler]').each(function () {
+        if ($(this).data('taghandler-done') == true) {
+            return;
+        }
+        var $this = this;
+        var d = $(this).data('taghandler');
+        var allowAdd = d.allowAdd;
+        d.availableTags = [];
+        $.each(d.availableTagsIndex, function (k, v) {
+            d.availableTags.push(v);
+        });
+        d.sortTags = false;
+        if (d.fieldid) {
+            d.afterDelete = d.afterAdd = function (tag) {
+                updateTagHandler($this, d);
+            };
+        }
+        d.deleteSelector = '.remove';
+        $(this).tagHandler(d);
+        $(this).data('taghandler-done', true);
+
+        $(this).sortable({
+            cancel: ".tagInput",
+            handle: ".sorthandle",
+            items: 'li.tagItem',
+            update: function (event, ui) {
+                updateTagHandler($this, d);
+            },
+        });
+        updateTagHandler(this, d);
+    });
+
+    function updateTagHandler($this, d) {
+        var tags = $($this).tagHandler('getTags');
+        var index = [];
+        for (var i = 0; i < tags.length; i++) {
+            var v = tags[i];
+            var ind = objectIndexOf(d.availableTagsIndex, v);
+            if (d.allowAdd) {
+                index.push(v);
+            } else if (!isNaN(ind) || ind !== -1) {
+                index.push(ind);
+            }
+        }
+        $("#" + d.fieldid).val(index.join(','));
+        $($this).trigger('taghandlerchange');
+    }
+}
+
+
diff --git a/CubeIT/js/tooltip.js b/CubeIT/js/tooltip.js
new file mode 100644 (file)
index 0000000..de2a9fb
--- /dev/null
@@ -0,0 +1,97 @@
+registerLoader(load_cubeit_tooltip);
+
+function load_cubeit_tooltip() {
+    ;
+    $('[data-tooltip]').cubetooltip();
+}
+
+(function ($) {
+    function JQtooltip(element) {
+        this.mouseX = 0;
+        this.mouseY = 0;
+        this.element = element;
+        this.text = this.element.data('tooltip');
+        this.tooltipOffset = -12;
+        if (this.element.data('tooltip-offset')) {
+            this.tooltipOffset = this.element.data('tooltip-offset');
+        }
+        this.init();
+    }
+
+    JQtooltip.prototype = {
+        init: function () {
+            var $this = this;
+            this.element.on('mouseenter', function (e) {
+                $this.updateTooltipPosition(e);
+                $this.show();
+            }).on('mouseleave', function (e) {
+                $this.updateTooltipPosition(e);
+                $this.hide();
+            });
+
+            this.element.on('touchstart', function (e) {
+                $this.updateTooltipPosition(e);
+                $(document).one('touchstart', function (e) {
+                    $this.updateTooltipPosition(e);
+                    //$this.hide();
+                })
+                $this.show();
+            });
+
+            $(window).on('mousemove', function (e) {
+                $this.updateTooltipPosition(e);
+            });
+            this.hide();
+        },
+        updateTooltipPosition: function (e) {
+            this.mouseX = e.pageX;
+            this.mouseY = e.pageY;
+            this.updatePos();
+        },
+        show: function () {
+            var ttip = this.getTooltip();
+            var visible = ttip.is(':visible');
+
+
+            ttip.html(this.text);
+            if (!visible) {
+                ttip.show();
+            }
+            ttip.css({maxWidth: 300, display: 'inline-block'});
+            this.updatePos();
+            if (!visible) {
+                ttip.hide();
+            }
+            ttip.stop().fadeIn(200);
+        },
+        hide: function () {
+            var ttip = this.getTooltip();
+            ttip.stop().hide();
+        },
+        updatePos: function () {
+            var ttip = this.getTooltip();
+            ttip.css({top: this.mouseY - ttip.outerHeight() - 9, left: this.mouseX + this.tooltipOffset});
+        },
+        getTooltip: function () {
+
+            if ($('#tooltip').length == 0) {
+                var $this = this;
+                $('body').append('<div id="tooltip"></div>');
+                $("#tooltip").on('click mouseenter', function () {
+                    $this.hide();
+                });
+            }
+            return $("#tooltip");
+        },
+    };
+
+    $.fn.cubetooltip = function () {
+        return this.each(function () {
+            var $this = $(this);
+            if ($(this).data('cubeittooltip')) {
+                return;
+            }
+            $(this).data('cubeittooltip', new JQtooltip($this));
+        });
+    };
+})(jQuery);
diff --git a/CubeIT/js/touch.js b/CubeIT/js/touch.js
new file mode 100644 (file)
index 0000000..14c118b
--- /dev/null
@@ -0,0 +1,104 @@
+(function($){
+       function Touch(e,callback){
+               this.element=e;
+               this.callback=callback;
+               this.currentTouches=new Array();
+               this.init();
+       };
+               
+       Touch.prototype={
+               init:function(){
+                       this.element.on('touchstart',$.proxy(this.start,this));
+                       this.element.on('touchend',$.proxy(this.end,this));
+                       this.element.on('touchmove',$.proxy(this.move,this));
+                       this.element.on('touchcancel',$.proxy(this.cancel,this));
+               //this.element.on('mousemove',$.proxy(this.move,this));
+               },
+                       
+               start:function(event){
+                       var touches=this._getChangedTouches(event);     
+                       for (var i=0; i<touches.length; i++) {  
+                               touches[i].startX=touches[i].pageX;
+                               touches[i].startY=touches[i].pageY;
+                               touches[i].offsetX=0;
+                               touches[i].offsetY=0;
+                               this.currentTouches.push(touches[i]);
+                       }
+                       return this._callCallback();
+               },
+                       
+               move:function(event){
+                       var touches=this._getChangedTouches(event);
+                       for (var i=0; i<touches.length; i++) {  
+                               this._replaceTouch(touches[i]);
+                       }
+                       this._callCallback();
+               },
+                       
+               cancel:function(event){
+                       var touches=this._getChangedTouches(event);
+                               
+                       for (var i=0; i<touches.length; i++) {  
+                               this._removeTouch(touches[i]);
+                       }  
+                               
+                       this._callCallback();
+               },
+                       
+               end:function(event){
+                       this.cancel(event);
+               },
+                       
+               _callCallback:function(){
+                       try{
+                               return this.callback(this.currentTouches);
+                       }catch(err){
+                               fb(err);
+                               return true;
+                       }
+               },
+                       
+               _getOriginalEvent:function(event){
+                       return event.originalEvent;
+               },
+                       
+               _getChangedTouches:function(event){
+                       var  e= this._getOriginalEvent(event);
+                       return e.changedTouches;
+               },
+                       
+               _removeTouch:function(touch){
+                       for(var i=0;i<this.currentTouches.length;i++){
+                               if(this.currentTouches[i].identifier==touch.identifier){
+                                       this.currentTouches.splice(i,1);
+                                       return;
+                               }
+                       }
+               },
+                       
+               _replaceTouch:function(touch){
+                       for(var i=0;i<this.currentTouches.length;i++){
+                               if(this.currentTouches[i].identifier==touch.identifier){
+                                       touch.startX=this.currentTouches[i].startX;
+                                       touch.startY=this.currentTouches[i].startY;
+                                       touch.offsetX=touch.pageX-touch.startX;
+                                       touch.offsetY=touch.pageY-touch.startY;
+                                       this.currentTouches.splice(i,1,touch);
+                                       return;                                 
+                               }
+                       }
+               }
+       };
+
+       
+       jQuery.fn.Touch=function(callback){
+               /*if(!Modernizr.touch){
+                       return [];
+               }*/
+               return this.each(function(){
+                       new Touch($(this),callback);
+               });
+       }
+})(jQuery);
+
+
diff --git a/CubeIT/js/trackingAdwords.js b/CubeIT/js/trackingAdwords.js
new file mode 100644 (file)
index 0000000..55bd64e
--- /dev/null
@@ -0,0 +1,16 @@
+$(function() {
+       $(document).trigger('trackingAdwordsReady');
+});
+function trackingAdwordsConversion(label) {
+
+       var datas = Application.trackingAdwords[label];
+       document.write = function(text) {
+               $('body').append(text);
+       };
+       for (var k in datas) {
+               window[k] = datas[k];
+       }
+       $.getScript('//www.googleadservices.com/pagead/conversion.js', function() {
+
+       });
+}
\ No newline at end of file
diff --git a/CubeIT/js/webvideolist.js b/CubeIT/js/webvideolist.js
new file mode 100644 (file)
index 0000000..b61c9d5
--- /dev/null
@@ -0,0 +1,139 @@
+registerLoader(load_webvideolist);
+
+function load_webvideolist() {
+       $(".cubeit-webvideo-list").webvideolist();
+}
+
+(function($) {
+       function JQwebvideolist(element) {
+               this.element = element;
+               this.init();
+       }
+
+       JQwebvideolist.prototype = {
+               init: function() {
+                       this.count = 0;
+                       var $this = this;
+                       this.element.on('click', '.add', function() {
+                               $this.addElement($this.count);
+                               $this.count++;
+                               return false;
+                       });
+
+                       try {
+                               this.element.find('ul').sortable('destroy');
+                       } catch (err) {
+
+                       }
+
+                       this.element.find('ul').sortable({
+                               placeholder: 'sortable-placeholder',
+                               forcePlaceholderSize: true,
+                               scroll: false,
+                               start: function(e, ui) {
+                                       fmDelta = '';
+                                       $(window).on('mousemove', checkMouseFM);
+                               },
+                               stop: function(e, ui) {
+                                       $(window).off('mousemove', checkMouseFM);
+                                       fmDelta = '';
+                                       $this.changeOrder();
+                               }
+                       });
+
+
+                       this.element.on('click', '.del', function() {
+                               $this.deleteElement($(this).parents('li:eq(0)'));
+                               return false;
+                       });
+
+                       this.element.on('change', 'input[type="url"]', function() {
+                               $this.setVideoPreview(this);
+                       });
+
+                       var value = this.element.data('value');
+                       $.each(value, function(k, v) {
+                               if (k == 'url' || k == 'description') {
+                                       return;
+                               }
+                               $this.addElement($this.count, v);
+                               $this.count++;
+                       });
+
+                       this.changeOrder();
+               },
+               setVideoPreview: function(e) {
+                       $.ajax({
+                               url: '/ajax/getWebvideoPreview',
+                               data: {video: $(e).val()},
+                               method: 'post',
+                               type: 'json',
+                               success: function(data) {
+                                       var img = data.vars.img;
+                                       var src = $(img).attr('src');
+                                       $(e).parents('fieldset:eq(0)').find('.vignette').attr('src', src);
+                               },
+                       });
+               },
+               deleteElement: function(e) {
+                       $(e).remove();
+                       if (this.element.find('ul li:not(.t)').length == 0) {
+                               this.element.find('ul').removeClass('inited');
+                       }
+               },
+               changeOrder: function() {
+                       var i = 1;
+                       this.element.find('li:not(.t) span.numero').each(function() {
+                               $(this).text(i);
+                               i++;
+                       });
+               },
+               addElement: function(n, value) {
+                       var scroll = false;
+                       if (value === undefined) {
+                               value = {url: '', description: ''};
+                               scroll = true;
+                       }
+
+                       var c = this.element.find('ul li.t:eq(0)').clone();
+                       $(c).appendTo(this.element.find('ul'));
+                       $(c).removeClass('t');
+
+
+                       var id = $(c).find('[id*="videos-"]');
+                       $(id).each(function() {
+                               $(this).attr('id', $(this).attr('id').replace('videos-', 'videos-' + n + '-'));
+                       });
+
+                       var name = $(c).find('[name]');
+                       $(name).each(function() {
+                               $(this).attr('name', $(this).attr('name').replace('videos', 'videos[' + n + ']'));
+                       });
+
+                       $(c).find('input[type="url"]').val(value.url);
+                       $(c).find('textarea').val(value.description);
+
+                       if (value.url != '') {
+                               this.setVideoPreview($(c).find('input[type="url"]'));
+                       }
+
+                       $(c).find('input,textarea').prop('disabled', false);
+
+                       this.element.find('ul').addClass('inited');
+
+                       if (scroll) {
+                               setTimeout(function() {
+                                       $(window).scrollTo($(c), 600);
+                               }, 50);
+                       }
+               },
+       };
+
+       jQuery.fn.webvideolist = function() {
+               return this.each(function() {
+                       var $this = $(this);
+                       $(this).data('webvideolist', new JQwebvideolist($this));
+               });
+       };
+}
+)(jQuery);
diff --git a/CubeIT/less/admin/common.less b/CubeIT/less/admin/common.less
new file mode 100644 (file)
index 0000000..bf4928d
--- /dev/null
@@ -0,0 +1,60 @@
+.cubeit-selectlist{
+    box-sizing: border-box;
+       width: 100%;
+}
+
+.zend_form dd,.zend_form dt{
+       clear:both;
+}
+
+.button.left{
+       float:none;
+}
+
+.cubeit-propagate{
+       background:#f4b5ca;
+       color:#e1134b;
+       border:1px solid #e1134b;
+       padding:5px;
+       margin:5px 0 10px 0;
+}
+
+.cubeit-propagate label{
+       display:block;
+       vertical-align: top;
+}
+
+.backupList{
+       clear:both;
+}
+
+input.error,select.error,textarea.error{
+       border:1px #ff0000 solid;
+}
+
+[data-offline],[data-offline]:hover{
+       text-decoration: line-through !important;
+}
+
+#mockup{
+       position:absolute;
+       width:100%;
+       height:100%;
+       z-index: 100000;
+       top:0px;
+       left:0px;
+       pointer-events: none;
+       opacity:0.3;
+       display: block;
+       background-position: 50% 0;
+       background-repeat: no-repeat;
+}
+
+.markItUpHeader li a{
+       box-sizing:content-box;
+}
+
+.markItUpEditor{
+       padding:5px 5px 5px 35px !important;
+       border-color:#3c769d !important;
+}
\ No newline at end of file
diff --git a/CubeIT/less/admin/translations.less b/CubeIT/less/admin/translations.less
new file mode 100644 (file)
index 0000000..f748c47
--- /dev/null
@@ -0,0 +1,33 @@
+textarea {
+       width: 100%;
+}
+
+.excel {
+       display: inline-block !important;
+       float: none !important;
+}
+
+.submit {
+       float: right;
+}
+
+#locale-label, #locale-element {
+       display: inline-block;
+       width: 45%;
+       vertical-align: top;
+       margin: 0 0 30px 0;
+}
+
+#locale-label {
+       text-align: right;
+       margin: 0 20px 30px 0;
+}
+
+#locale-element {
+
+       text-align: left;
+}
+
+form dt label {
+       text-transform: none !important;
+}
\ No newline at end of file
diff --git a/CubeIT/less/admin/tree.less b/CubeIT/less/admin/tree.less
new file mode 100644 (file)
index 0000000..8fefe32
--- /dev/null
@@ -0,0 +1,36 @@
+/* Page tree */
+#pageTreeInterface h3{margin:10px 0 10px 0 !important;}
+#pageTreeInterface .page{padding:5px;border:1px solid #ccc;margin:2px 0;background:#eee;}
+#pageTreeInterface .page img{vertical-align:top;}
+#pageTreeInterface .page .handle{margin-right:10px;}
+#pageTreeInterface .page .nextl{float:right;margin-left:10px;background:none !important;}
+#pageTreeInterface .page .previous{float:right;background:none !important;}
+#pageTreeInterface .page .add{float:right;margin-right:10px;}
+#pageTreeInterface .page .online{float:right;margin-right:10px;}
+#pageTreeInterface .page .online .checkbox{
+       background-image:url("/CubeIT/images/online-offline.png"); 
+       background-repeat: no-repeat;
+       background-position: 0 100%;
+       width:16px;
+       height:16px;
+       cursor:pointer;
+}
+#pageTreeInterface .page .online .checkbox[checked]{
+       background-position: 0 0;
+}
+#pageTreeInterface .page .acl{float:right;margin-right:10px;}
+#pageTreeInterface .page .delete{float:right;margin-right:10px;}
+#pageTreeInterface .page .id{font-weight:bold;margin-right:10px;}
+#pageTreeInterface .page .name{margin-right:10px;}
+#pageTreeInterface .level0 {margin-left:0px;}
+#pageTreeInterface .level1 {margin-left:30px;}
+#pageTreeInterface .level2 {margin-left:60px;}
+#pageTreeInterface .level3 {margin-left:90px;}
+#pageTreeInterface .level4 {margin-left:120px;}
+#pageTreeInterface .level5 {margin-left:150px;}
+#pageTreeInterface .template {width:150px;}
+
+#pageTreeInterface input,
+#pageTreeInterface select{
+       width:auto;
+}
\ No newline at end of file
diff --git a/CubeIT/less/bannerCookies.less b/CubeIT/less/bannerCookies.less
new file mode 100644 (file)
index 0000000..19c10cc
--- /dev/null
@@ -0,0 +1,42 @@
+#cookieBanner {
+  position: fixed;
+  background-color: #333;
+  color: #fff;
+  left: 20px;
+  bottom: 20px;
+  width: 350px;
+  font-size: 13px;
+  padding: 30px;
+  text-align: left;
+  z-index: 1000;
+
+  a {
+    display: block;
+    text-decoration: none;
+    color: #fff;
+    margin-top: 8px;
+    width: 0;
+    white-space: nowrap;
+
+    &:hover {
+      text-decoration: underline;
+    }
+
+    &.close {
+      color: #fff;
+      position: absolute;
+      width: 25px;
+      height: 25px;
+      right: 10px;
+      top: 10px;
+      margin: 0;
+      background-color: transparent;
+      border-radius: 0;
+
+      svg {
+        width: 25px;
+        height: 25px;
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/CubeIT/less/checkbox.less b/CubeIT/less/checkbox.less
new file mode 100644 (file)
index 0000000..a0f67ef
--- /dev/null
@@ -0,0 +1,23 @@
+div.radio,
+div.checkbox{
+       width:17px;
+       height:17px;
+       background-position: 0 0;
+       display: inline-block;
+       cursor:pointer;
+       margin:0 5px 0 0;
+}
+
+div.radio{
+       background-image: url("/images/radio.png");
+}
+
+div.checkbox{
+       background-image: url("/images/checkbox.png");
+}
+
+
+div.radio[checked],
+div.checkbox[checked]{
+       background-position: 0 100%;
+}
\ No newline at end of file
diff --git a/CubeIT/less/cms.less b/CubeIT/less/cms.less
new file mode 100644 (file)
index 0000000..dc64047
--- /dev/null
@@ -0,0 +1,119 @@
+
+a.button {
+       font-weight: bold;
+       font-style: normal !important;
+       color: #fff !important;
+       background-color: #333;
+       padding: 7px 10px;
+       text-transform: uppercase;
+       font-size: 15px;
+       text-decoration: none;
+       float: right;
+       margin: 15px 0 0 0;
+}
+
+a.button.little {
+       font-size: 12px;
+       padding: 4px 10px;
+}
+
+#adminBar {
+       background-color: #333;
+}
+
+#adminBar .bar {
+       font-weight: 500;
+       font-size: 13px;
+       line-height: 13px;
+       height: 13px;
+       color: #fff;
+       text-transform: uppercase;
+}
+
+#adminBar .bar a {
+       color: #fff;
+       margin: 0 5px;
+       text-decoration: none;
+}
+
+#adminBar a.right {
+       float: right;
+       margin: 0;
+}
+
+#adminBar a:hover {
+       text-decoration: underline;
+}
+
+.hidden {
+       display: none;
+}
+
+form input[type="text"],
+form input[type="search"],
+form input[type="email"],
+form input[type="password"],
+form input[type="url"],
+form input[type="tel"],
+form input[type="number"],
+form input[type="range"],
+form textarea,
+form select,
+form .cubeit-file-list,
+.cubeit-selectlist-search input,
+.tagHandlerContainer,
+.cubeit-form-static {
+       width: 100%;
+       border: 1px solid #a2a2a2;
+       color: #323232;
+       font-size: 12px;
+       padding: 5px;
+       background: #fff;
+       box-sizing: border-box;
+       font-weight: 400;
+}
+
+form .cubeit-form-date {
+       white-space: nowrap;
+}
+
+form .tagHandlerContainer input[type="text"] {
+       border: 0;
+       padding: 0;
+}
+
+form .error input[type="text"],
+form .error input[type="search"],
+form .error input[type="email"],
+form .error input[type="password"],
+form .error input[type="url"],
+form .error input[type="tel"],
+form .error input[type="number"],
+form .error input[type="range"],
+form .error textarea,
+form .error select,
+form .error .cubeit-file-list,
+.cubeit-selectlist-search .error input,
+form .error .tagHandlerContainer {
+       border-color: #c91818;
+}
+
+.elementwrap {
+       position: relative;
+       margin: 10px 0;
+}
+
+.errormessage {
+       color: #c91818;
+       right: 0px;
+       top: 0px;
+       position: absolute;
+}
+
+form.multiactions .clearbut {
+       clear: none;
+       margin: 0 5px !important;
+       width: 1px !important;
+       float: right;
+       height: 1px !important;
+}
\ No newline at end of file
diff --git a/CubeIT/less/contextMenu.less b/CubeIT/less/contextMenu.less
new file mode 100644 (file)
index 0000000..13ef03d
--- /dev/null
@@ -0,0 +1,7 @@
+.contextMenu{border:1px solid #000;float:left;position:absolute;display:none;z-index:100000;}
+.contextMenu li{list-style-type:none;}
+.contextMenu li a{border-bottom:1px solid #ccc;padding:5px;background:#fff;display:block;padding:7px;}
+.contextMenu li a:hover{background:#ccc;}
+.contextMenu li a:hover{text-decoration:none;}
+.contextMenu li img{margin:5px;margin-right:7px;vertical-align:middle;float:none;}
+.contextMenu li.head{background:#ccc;font-weight:bold;color:#000;text-align:center;border-bottom:1px solid #000;}
\ No newline at end of file
diff --git a/CubeIT/less/cube.less b/CubeIT/less/cube.less
new file mode 100644 (file)
index 0000000..959cac3
--- /dev/null
@@ -0,0 +1,341 @@
+/* Disable default browser behavior */
+*:focus, a {
+       outline: 0;
+}
+
+input[type=text],
+input[type=password],
+input[type=file],
+input[type=email],
+input[type=search],
+input[type=tel],
+input[type=url],
+textarea {
+       appearance: none;
+}
+
+* {
+       padding: 0;
+       margin: 0;
+       background-repeat: no-repeat;
+}
+
+iframe {
+       border: 0;
+       margin: 0;
+       padding: 0;
+}
+
+body, html {
+       min-height: 100%;
+}
+
+body {
+       overflow-x: hidden;
+}
+
+img {
+       border: 0;
+       user-select: none;
+       touch-callout: none;
+}
+
+hr {
+       border: 0;
+       border-bottom: 1px solid #ccc;
+}
+
+table {
+       border-collapse: collapse;
+       empty-cells: show;
+}
+
+input[type='checkbox'], input[type='radio'] {
+       margin: 3px;
+       margin-bottom: 3px;
+}
+
+textarea {
+       resize: vertical;
+}
+
+ul,
+ol {
+       list-style-position: inside;
+}
+
+form .hsubmit {
+       position: absolute;
+       top: 0px;
+       left: 0px;
+       z-index: -10;
+       text-indent: -6666px;
+       width: 0px;
+       height: 0px;
+       overflow: hidden;
+       border: 0;
+       visibility: hidden;
+}
+
+.right {
+       text-align: right !important;
+}
+
+.left {
+       text-align: left !important;
+}
+
+.center {
+       text-align: center !important;
+}
+
+.middle {
+       vertical-align: middle !important;
+}
+
+.top {
+       vertical-align: top !important;
+}
+
+.bottom {
+       vertical-align: bottom !important;
+}
+
+.baseline {
+       vertical-align: baseline !important;
+}
+
+html {
+       .fullscreen {
+               width: 100%;
+               height: 100%;
+       }
+}
+
+.clear, .clearbut {
+       clear: both;
+}
+
+.clearbut {
+       width: 0px !important;
+       height: 0px !important;
+       float: none;
+       margin: 0 !important;
+       padding: 0 !important;
+       border: 0 !important;
+       outline: 0 !important;
+}
+
+.block {
+       display: block;
+}
+
+.no-float, .nofloat {
+       float: none !important;
+}
+
+.auto {
+       width: auto !important;
+       height: auto !important;
+}
+
+.wauto {
+       width: auto !important;
+}
+
+.hauto {
+       height: auto !important;
+}
+
+.max {
+       width: 100%
+}
+
+.hmax {
+       height: 100%;
+}
+
+.min {
+       width: 1px;
+}
+
+.hmin {
+       height: 1px;
+}
+
+.nowrap {
+       white-space: nowrap;
+}
+
+.nomargin {
+       padding: 0;
+       margin: 0;
+}
+
+.hide, [data-hidden="1"] {
+       display: none !important;
+}
+
+.pemail {
+       visibility: hidden;
+}
+
+.strong {
+       font-weight: bold;
+}
+
+.onlyforprint {
+       display: none;
+}
+
+/* Rollovers */
+.rollover {
+       background-position: top left;
+       display: block
+}
+
+.rollover:hover {
+       background-position: bottom left;
+}
+
+.rollover.active {
+       background-position: bottom left;
+}
+
+.cubeit-form-date select {
+       width: auto !important;
+       display: inline;
+       margin-right: 10px;
+}
+
+#ajaxLoader {
+       position: fixed;
+       display: none;
+       top: 0px;
+       left: 0px;
+       width: 100%;
+       height: 100%;
+       z-index: 10000000;
+
+       &.error {
+               color: #c00;
+       }
+
+       .c {
+               background: #fff;
+               font-size: 16px;
+               padding: 20px;
+               width: 340px;
+               height: 90px;
+               box-sizing: border-box;
+               margin: 0 auto;
+               border-radius: 0 0 10px 10px;
+               box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5);
+
+               img {
+                       vertical-align: middle;
+                       display: block;
+                       float: left;
+               }
+
+               p {
+                       width: 240px;
+                       float: left;
+                       margin-left: 20px;
+                       text-align: center;
+                       padding: 0;
+               }
+       }
+}
+
+.multicheckbox {
+       overflow: auto;
+}
+
+#adminlogin #message {
+       font-weight: bold;
+       color: #f00;
+       text-align: center;
+       margin: 10px;
+}
+
+.ui-front {
+       z-index: 100000 !important;
+}
+
+.dotclear {
+       .floating-left {
+               float: left;
+               margin: 0 1em 1em 0;
+       }
+
+       .floating-right {
+               float: right;
+               margin: 0 0 1em 1em;
+       }
+
+       .floating-center {
+               display: block;
+               margin: 0 auto;
+       }
+
+}
+
+#privacyForm {
+       label {
+               font-size: inherit !important;
+       }
+
+       label + br {
+               display: none;
+       }
+
+       dd {
+               margin: 15px 0;
+               label {
+                       margin: 0 18px 0 0;
+               }
+               input {
+                       vertical-align: top;
+               }
+       }
+
+}
+
+.scrollbar-measure {
+       width: 100px;
+       height: 100px;
+       overflow: scroll;
+       position: absolute;
+       top: -9999px;
+}
+
+.images {
+       &[data-align="L"], &[data-align="C"], &[data-align="R"] {
+               float: none;
+               clear: both;
+       }
+       &[data-align="L"] {
+               text-align: left;
+       }
+       &[data-align="C"] {
+               text-align: center;
+       }
+       &[data-align="R"] {
+               text-align: right;
+       }
+
+       &[data-align="FL"], &[data-align="FR"] {
+               margin: 0.5em 1em;
+       }
+
+       &[data-align="FL"] {
+               float: left;
+               margin-left: 0;
+       }
+
+       &[data-align="FR"] {
+               float: right;
+               margin-right: 0;
+       }
+}
\ No newline at end of file
diff --git a/CubeIT/less/fileManager.less b/CubeIT/less/fileManager.less
new file mode 100644 (file)
index 0000000..5dc9842
--- /dev/null
@@ -0,0 +1,129 @@
+.cubeit-file-manager {
+       .cubeit-file-manager-controls{
+               >*{
+                       vertical-align: middle;
+               }
+               .dragMessage{
+                       display: inline-block;
+                       width: 50%;
+                       margin:0 0 0 10px;
+               }
+       }
+
+       .cubeit-file-list{
+               clear:both;
+               font-size:12px;
+               list-style: none;
+               min-height: 100px;
+
+               &.drop{
+                       border-style: dashed;
+               }
+
+               li{
+                       padding: 10px;
+                       display:inline-block;
+                       background-color:#e6e6e6;
+                       position: relative;
+                       margin: 0 10px 10px 0;
+                       border:1px solid transparent;
+                       height:220px;
+                       width:170px;
+                       box-sizing: border-box;
+                       vertical-align:top;
+
+                       &.new{
+                               text-align: center;
+                               >*{
+                                       margin:8px 0;
+                               }
+                               .cancelUpload{
+                                       color:#c91818;
+                               }
+
+                               .progress{
+                                       height:20px;
+                                       border:0;
+                                       border-radius: 4px;
+                                       background-color:#fff;
+                                       padding:3px;
+                                       width: 100%;
+                                       box-sizing: border-box;
+                                       box-shadow: inset 1px 1px 4px -1px rgba(0,0,0,0,.15);
+                                       margin:30px 0;
+
+                                       .bar{
+                                               background-image:linear-gradient(to bottom, #a4cf32 0%, #78a918 100%);
+                                               width:0%;
+                                               height:100%;
+                                               border-radius: 3px;
+                                       }
+                               }
+                       }
+               }
+
+               .icon {
+                       display: inline-block;
+                       img{
+                               vertical-align: middle;
+                       }
+               }
+
+               .additional textarea {
+                       height: 100%;
+               }
+
+               .del{
+                       position:absolute;
+                       top:0px;
+                       right:0px;
+                       background-image:url("../images/filesmanager/delete.png");
+                       width:16px;
+                       height: 16px;
+               }
+
+               .download{
+                       margin:0 10px 0 0;
+                       position:absolute;
+                       right:0px;
+                       bottom:5px;
+               }
+
+               .filename{
+                       display: block;
+                       text-align: center;
+                       margin:10px 0 5px;
+                       font-size: 13px;
+               }
+
+               li,.del,.icon{
+                       cursor:pointer;
+               }
+
+               .sortable-placeholder{
+                       border:1px dashed rgba(0,0,0,0.5);
+               }
+       }
+
+       .cubeit-file-manager-controls{
+               margin:5px 0;
+       }
+
+       &.cubeit-filemanager-legend .cubeit-file-list li{
+               white-space: nowrap;
+               width:100%;
+               height:200px;
+               .additional{
+                       display: inline-block;
+                       width: auto;
+                       height:150px;
+                       margin:0 0 0 10px;
+               }
+
+               .filename{
+                       position: absolute;
+                       bottom:10px;
+                       left:10px;
+               }
+       }
+}
\ No newline at end of file
diff --git a/CubeIT/less/index.html b/CubeIT/less/index.html
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/CubeIT/less/inputNumber.less b/CubeIT/less/inputNumber.less
new file mode 100644 (file)
index 0000000..8e35115
--- /dev/null
@@ -0,0 +1,40 @@
+.cubeit-input-number{
+       @size:28px;
+       @bordersize:1px;
+       @bordercolor:#bbb;
+       @textcolor:#626063;
+       @textsize:14px;
+
+       height:@size;
+       border:@bordersize solid @bordercolor;
+       width:@size*3+@bordersize*2;
+       margin:0 auto;
+
+       input,a{
+               border:0;
+               width:@size;
+               height:@size;
+               display:inline-block;
+               text-align:center;
+               color:@textcolor;
+               vertical-align:top;
+               font-size: @textsize;
+               line-height: round(@textsize*0.75);
+       }
+
+       a{
+               border-color: @bordercolor;
+               border-style:solid;
+               border-width: 0px;
+               line-height:@size;
+               font-size:round(@textsize*1.1);
+               font-family:monospace;
+               &.minus{
+                       border-right-width: @bordersize;
+               }
+
+               &.plus{
+                       border-left-width: @bordersize;
+               }
+       }
+}
\ No newline at end of file
diff --git a/CubeIT/less/multiform.less b/CubeIT/less/multiform.less
new file mode 100644 (file)
index 0000000..0c7289d
--- /dev/null
@@ -0,0 +1,138 @@
+.cubeit_multiform{
+       box-sizing: border-box;
+       width:100%;
+
+       &[data-accordion="1"]{
+               >dd>fieldset>dl{
+                       display:none;
+               }
+       }
+
+       >dd{
+               margin-bottom: 2px;
+               >fieldset{
+                       border:0px;
+                       background: #eee;
+                       padding:0;
+                       margin:0;
+                       >dl{
+                               padding:10px;
+                       }
+                       >.legendholder>legend{
+                               display:block;
+                               background:#cacaca;
+                               padding:5px;
+                               width: 100%;
+                               box-sizing: border-box;
+                       }
+               }
+       }
+       >dt{
+               display:none;
+       }
+
+       .legendholder>legend {
+               min-height:25px;
+               span{
+                       width:16px;
+                       height:16px;
+                       display: block;
+                       float:left;
+                       cursor:pointer;
+                       background-repeat: no-repeat;
+               }
+               .legend{
+                       width:80%;
+                       display:inline;
+                       margin-left: 5px;
+                       line-height: 14px;
+                       max-width: 550px;
+                       overflow: hidden;
+                       text-overflow: clip ellipsis;
+                       white-space: nowrap;
+               }
+               .add,
+               .del{
+                       float:right;
+                       margin-right:5px;
+               }
+
+               .move{
+                       background-image:url('/CubeIT/images/tango/16/actions/mail-send-receive.png');
+                       margin-left: 5px;
+                       margin-right:15px;
+               }
+
+               .add{
+                       background-image:url('/CubeIT/images/tango/16/actions/list-add.png');
+               }
+
+               .del{
+                       background-image:url('/CubeIT/images/tango/16/actions/list-remove.png');
+               }
+       }
+
+
+       dd#cubeitbase-element,
+       dd#cubeitbase-label
+       {
+               display:none;
+       }
+
+       .ui-state-highlight{
+               height:16px;
+               border:1px dashed #cacaca;
+               padding:5px;
+       }
+
+       &[data-style="table"]{
+               display:table;
+
+               >dd{
+                       >fieldset{
+                               >.legendholder>legend{
+                                       display:none;
+                               }
+                               >dl{
+                                       display:table-row;
+                                       width:100%;
+                                       >div{
+                                               padding:0 10px;
+                                               width:9999px;
+                                               display:table-cell;
+                                               &:first-child{
+                                                       padding-left:0;
+                                               }
+                                               &:last-child{
+                                                       padding-right: 0;
+                                               }
+                                               dt{
+                                                       display:none;
+                                               }
+                                               &.but{
+                                                       width: 1px;
+                                                       vertical-align: bottom;
+                                                       >span{
+                                                               white-space: nowrap;
+                                                               display: block;
+                                                               width: 100%;
+                                                       }
+                                               }
+
+                                       }
+                               }
+                       }
+
+                       &:first-child{
+                               >fieldset>dl>div>dt{
+                                       display: inline-block;
+                                       white-space: nowrap;
+                                       width: 0;
+                               }
+                       }
+               }
+       }
+}
+
+
+
diff --git a/CubeIT/less/orderform.less b/CubeIT/less/orderform.less
new file mode 100644 (file)
index 0000000..29d43e4
--- /dev/null
@@ -0,0 +1,27 @@
+.cubeit_formorder {
+       list-style: none;
+       padding: 7px 9px;
+       border: 1px solid #a2a2a2;
+       margin: 10px 0;
+       li {
+               background: #cacaca none repeat scroll 0 0;
+               box-sizing: border-box;
+               display: block;
+               padding: 5px 5px 5px 50px;
+               width: 100%;
+               cursor: pointer;
+               background-image: url('/CubeIT/images/tango/16/actions/mail-send-receive.png');
+               background-position: 15px 6px;
+               background-repeat: no-repeat;
+               margin: 2px 0;
+               border: 1px solid transparent;
+               height: 30px;
+
+               &.ui-state-highlight {
+                       border: 1px dashed #cacaca;
+                       background-image: none;
+                       background-color: transparent;
+               }
+       }
+
+}
\ No newline at end of file
diff --git a/CubeIT/less/pdfplayer.less b/CubeIT/less/pdfplayer.less
new file mode 100644 (file)
index 0000000..7266b25
--- /dev/null
@@ -0,0 +1,28 @@
+*{
+       box-sizing: border-box;
+}
+
+body,html{
+       height:100%;
+       overflow: hidden;
+}
+
+.cubeitPdfPlayer{
+       height: 100%;
+       width:100%;     
+
+       .loader{
+               position:absolute;
+               top:0px;
+               left:0px;
+               z-index: 4;
+       }
+
+       .container{
+               position:relative;
+               overflow:hidden;
+               img{
+                       position:absolute;
+               }
+       }
+}
\ No newline at end of file
diff --git a/CubeIT/less/popup.less b/CubeIT/less/popup.less
new file mode 100644 (file)
index 0000000..395d202
--- /dev/null
@@ -0,0 +1,122 @@
+/* Faux Popup */
+.popupOverlay {
+       background: #000;
+       opacity: 0;
+       position: fixed;
+       display: none;
+       top: 0px;
+       left: 0px;
+       width: 100%;
+       height: 100%;
+}
+
+.popupWindow {
+       display: none;
+       position: fixed;
+       .closePopup {
+               position: absolute;
+               top: 25px;
+               right: 25px;
+       }
+}
+
+.b {
+       padding: 25px;
+       color: #323232;
+
+       .back {
+               background: #fff;
+               box-shadow: 0 0 5px 5px rgba(0, 0, 0, 0.2);
+               width: 100%;
+               height: 100%;
+               position: absolute;
+               top: 0;
+               left: 0px;
+               z-index: -1;
+               box-sizing: border-box;
+       }
+
+       .top {
+               box-sizing: border-box;
+               padding: 25px 25px 0 25px;
+               top: -25px;
+               left: -25px;
+               position: relative;
+       }
+
+       &.nopadding {
+               padding: 0;
+       }
+
+       > img {
+               display: block;
+       }
+
+       h3 {
+               font-weight: 400;
+               font-size: 24px;
+               padding: 0 20px 0 0;
+               margin: 0 0 20px 0;
+       }
+}
+
+.ajaxpopup {
+       color: #323232;
+
+       .closeholder {
+               position: absolute;
+               top: 0px;
+               left: 0px;
+               width: 100%;
+               z-index: 1;
+       }
+
+       .cubeit_multiform legend {
+               font-size: 16px;
+       }
+
+       label,
+       legend {
+               font-size: 12px;
+       }
+
+       fieldset {
+               padding: 10px;
+               margin: 10px 0;
+               border: 1px solid #A2A2A2;
+               background-color: rgba(0, 0, 0, 0.05);
+
+               &.nolegend {
+                       > .legendholder > legend {
+                               display: none;
+                       }
+               }
+
+               legend {
+                       font-size: 13px;
+                       padding: 5px 10px;
+               }
+       }
+
+       .cubeit-file-manager {
+               margin: 10px 0 10px;
+       }
+
+       .multicheckbox {
+               border: 1px solid #a2a2a2;
+               background: #fff;
+               padding: 10px;
+               color: #323232;
+       }
+
+       .multicheckbox input {
+               vertical-align: top;
+       }
+
+       .localized {
+               border: 1px solid #A2A2A2;
+               margin: 10px 0;
+               padding: 10px;
+               background: #eee;
+       }
+}
\ No newline at end of file
diff --git a/CubeIT/less/preventOrphan.less b/CubeIT/less/preventOrphan.less
new file mode 100644 (file)
index 0000000..e1fddbc
--- /dev/null
@@ -0,0 +1,3 @@
+.preventOrphanBreak {
+       clear: left;
+}
\ No newline at end of file
diff --git a/CubeIT/less/selectlist.less b/CubeIT/less/selectlist.less
new file mode 100644 (file)
index 0000000..4a42453
--- /dev/null
@@ -0,0 +1,100 @@
+
+.cubeit-selectlist{
+       font-size:12px;
+       min-width: 400px;
+}
+
+.cubeit-selectlist td,
+.cubeit-selectlist th{
+       text-align: left;
+       padding:5px;
+}
+
+.cubeit-selectlist th{
+       border-bottom: 1px solid #000;
+}
+
+.cubeit-selectlist th a img{
+       vertical-align: middle;
+       margin : 0 0 0 3px;
+}
+
+.cubeit-selectlist tr.odd td{
+       background: #ccc;
+}
+
+.button.cubeit-selectlist-new{
+       margin:10px 0 10px 0;
+}
+
+.cubeit-selectlist th a{
+       color:inherit;
+}
+
+.cubeit-selectlist-container .pager{
+       margin: 0 auto;
+       font-size: 14px;
+       text-align: center;
+}
+
+.cubeit-selectlist-container .pager a,.cubeit-selectlist-filterlist a{
+       color:inherit;
+}
+
+.cubeit-selectlist-search{
+       margin-top:10px;
+}
+
+dd.selectlist-inline{
+       border:1px solid #A2A2A2;
+       padding:10px;
+}
+
+.cubeit-selectlist-filterlist{
+       margin:15px 0 0 0;
+       background:#ccc;
+       padding:15px;
+       border:1px solid #333;
+}
+
+.cubeit-selectlist-filter,.cubeit-selectlist-filter-check,.cubeit-selectlist-filter dt{
+       display:inline-block;
+       vertical-align: top;
+}
+
+.cubeit-selectlist-filterlist h4{
+       cursor:pointer;
+       display: inline-block;
+}
+
+.cubeit-selectlist-filter{
+       margin:0 10px 0 0;
+}
+.cubeit-selectlist-filter-summary{
+       font-size: 60%;
+       font-weight: normal;
+       font-style: italic;
+       float:right;
+       text-align: left;
+}
+
+.cubeit-selectlist-editfilters,
+.cubeit-selectlist-clearfilters
+{
+       display:inline;
+       margin:0 0 0 5px;
+}
+
+.cubeit-selectlist-editfilters img,
+.cubeit-selectlist-clearfilters img{
+       vertical-align: middle;
+}
+
+.cubeit-selectlist-filter-edition{
+       display:none;
+}
+
+.cubeit-selectlist .action{
+       width:0;
+       white-space: nowrap;
+}
\ No newline at end of file
diff --git a/CubeIT/less/slideshow.less b/CubeIT/less/slideshow.less
new file mode 100644 (file)
index 0000000..13bddc9
--- /dev/null
@@ -0,0 +1,34 @@
+.slideshow {
+       position: relative;
+
+       .slides {
+               overflow: hidden;
+               position: relative;
+               .slide {
+                       display: none;
+                       position: absolute;
+                       top: 0px;
+                       left: 0px;
+                       z-index: 9;
+                       background-size: cover;
+                       background-position: 50% 50%;
+                       width: 100%;
+                       height: 100%;
+               }
+       }
+
+       .arrows a {
+               position: absolute;
+               z-index: 10;
+               display: block;
+               &:before {
+                       content: none !important;
+               }
+               &.prev {
+                       left: 0px;
+               }
+               .next {
+                       right: 0px;
+               }
+       }
+}
\ No newline at end of file
diff --git a/CubeIT/less/taghandler.less b/CubeIT/less/taghandler.less
new file mode 100644 (file)
index 0000000..667da08
--- /dev/null
@@ -0,0 +1,47 @@
+.tagItem {
+       .sorthandle {
+               width: 16px;
+               height: 16px;
+               background-image:url('/CubeIT/images/tango/16/actions/mail-send-receive.png');
+               display: inline-block;
+               margin-top: 5px;
+               margin-right: 5px;
+               vertical-align: top;
+               cursor: pointer;
+               float: left;
+       }
+
+       .remove{
+               width: 16px;
+               height: 16px;
+               background-image:url('/CubeIT/images/tango/16/actions/list-remove.png');
+               display: inline-block;
+               margin-top: 5px;
+               margin-right: 5px;
+               vertical-align: top;
+               cursor: pointer;
+               float: right;
+               vertical-align: top;
+       }
+
+       .tagItemContent{
+               display: inline-block;
+               vertical-align: top;
+               float: left;
+
+       }
+}
+
+body {
+       .tagHandler {
+               ul.tagHandlerContainer li {
+                       height: 30px;
+                       line-height: 22px;
+                       float: none;
+                       border-radius: 2px;
+               }
+               .tagInput {
+                       display: block;
+               }
+       }
+}
diff --git a/CubeIT/less/tooltip.less b/CubeIT/less/tooltip.less
new file mode 100644 (file)
index 0000000..fcb3ade
--- /dev/null
@@ -0,0 +1,34 @@
+@color:#333;
+@text:#fff;
+@size:12px;
+@radius:3px;
+@p:5px;
+@padding:(@p);
+@paddingSide:(@p+3);
+@arrow:7px;
+
+#tooltip {
+       background-color: @color;
+       border-radius: @radius;
+       color: @text;
+       cursor: default;
+       display: inline-block;
+       font-size: @size;
+       letter-spacing: 0;
+       padding: @padding @paddingSide;
+       position: absolute;
+       z-index: 10000000;
+       white-space: pre-line;
+
+       &:after {
+               bottom: (-1*@arrow);
+               content: "";
+               height: 0px;
+               width:0px;
+               border-left: (@arrow/1.5) solid transparent;
+               border-right: (@arrow/1.5) solid transparent;
+               border-top: @arrow solid @color;
+               left: 20px;
+               position: absolute;
+       }
+}
\ No newline at end of file
diff --git a/CubeIT/less/webvideolist.less b/CubeIT/less/webvideolist.less
new file mode 100644 (file)
index 0000000..6dd42da
--- /dev/null
@@ -0,0 +1,95 @@
+.cubeit-webvideo-list{
+       .topbar{
+               clear:both;
+               display:block;
+               padding:0 0 70px ;
+               a.add{
+                       float:left;
+               }
+               .services{
+                       float:right;
+                       margin:30px 0 0 0;
+                       a{
+                               display:inline-block;
+                               height:21px;
+                               background-position:50% 50%;
+                               margin:0px 8px;
+                               &.youtube{
+                                       background-image: url("../images/webvideo/youtube.png");
+                                       width:50px;
+                               }
+                               &.dailymotion{
+                                       background-image: url("../images/webvideo/dailymotion.png");
+                                       width:84px;
+                               }
+                               &.vimeo{
+                                       background-image: url("../images/webvideo/vimeo.png");
+                                       width:51px;
+                               }
+                       }
+               }
+       }
+       ul{
+               &.inited{
+                       border:1px solid #a2a2a2;
+               }
+               border-radius:3px;
+               padding: 0 15px 15px;
+               clear:both;
+               list-style:none;
+               li{
+                       background-color:#e6e6e6;
+                       margin:15px 0 0 0;
+                       position:relative;
+
+
+                       &.t{
+                               display:none;
+                       }
+
+                       fieldset{
+                               background-color:transparent !important;
+                               padding:15px !important;
+                               margin:0 !important;
+                               width:auto !important;
+
+                               .vignette{
+                                       display:inline-block;
+                                       margin:10px 10px 10px 0;
+                                       +dd{
+                                               display:inline-block;
+                                               margin:10px 0 0 0;
+                                               width:319px;
+                                               textarea{
+                                                       width:319px;
+                                                       height:151px;
+                                               }
+                                       }
+
+
+                               }
+
+                               input[type="url"]{
+                                       width:483px !important;
+                               }
+
+                               .videoLabel{
+                                       text-align: center;
+                                       width:151px;
+                               }
+                               a.del{
+                                       background-image: url("../images/filesmanager/delete.png");
+                                       height: 16px;
+                                       position: absolute;
+                                       right: 0;
+                                       top: 0;
+                                       width: 16px;
+                               }
+
+
+                       }
+
+
+               }
+       }
+}
diff --git a/CubeIT/swf/_src/CubeIT Video.as3proj b/CubeIT/swf/_src/CubeIT Video.as3proj
new file mode 100644 (file)
index 0000000..431c32c
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+  <!-- Output SWF options -->
+  <output>
+    <movie disabled="False" />
+    <movie input="" />
+    <movie disabled="True" />
+    <movie fps="30" />
+    <movie width="800" />
+    <movie height="600" />
+    <movie version="10" />
+    <movie background="#FFFFFF" />
+  </output>
+  <!-- Other classes to be compiled into your SWF -->
+  <classpaths>
+    <class path="." />
+  </classpaths>
+  <!-- Intrinsic Libraries -->
+  <intrinsics>
+    <element path="Library\AS3\frameworks\FlashIDE" />
+  </intrinsics>
+  <!-- Class files to compile (other referenced classes will automatically be included) -->
+  <compileTargets>
+    <!-- example: <compile path="classes\Main.as" /> -->
+  </compileTargets>
+  <!-- Paths to exclude from the Project Explorer tree -->
+  <hiddenPaths>
+    <!-- example: <hidden path="..." /> -->
+  </hiddenPaths>
+  <!-- Executed before build -->
+  <preBuildCommand />
+  <!-- Executed after build -->
+  <postBuildCommand alwaysRun="False" />
+  <!-- Other project options -->
+  <options>
+    <option showHiddenPaths="False" />
+    <option testMovie="Default" />
+  </options>
+</project>
\ No newline at end of file
diff --git a/CubeIT/swf/_src/com/cubedesigners/cubeit/video/Main.as b/CubeIT/swf/_src/com/cubedesigners/cubeit/video/Main.as
new file mode 100644 (file)
index 0000000..c390e4a
--- /dev/null
@@ -0,0 +1,134 @@
+package com.cubedesigners.cubeit.video {
+       import br.com.stimuli.loading.BulkLoader;
+       import br.com.stimuli.loading.loadingtypes.VideoItem;
+       import com.greensock.TweenLite;
+       import cube.component.CubeDocument;
+       import flash.events.Event;
+       import flash.events.NetStatusEvent;
+       import flash.external.ExternalInterface;
+       import flash.media.Video;
+       import flash.net.NetStream;
+       import flash.system.Security;
+       import flash.system.System;
+       
+       /**
+        * ...
+        * @author Vincent
+        */
+       public class Main extends CubeDocument {
+               public var videoURL:String;
+               public var loop:Boolean;
+               public var sound:Boolean;
+               public var valign:String;
+               public var halign:String;
+               public var expand:Boolean;
+               
+               public var loader:BulkLoader;
+               protected var videoItem:VideoItem;
+               protected var ns:NetStream;
+               protected var video:Video;
+               protected var meta:Object;
+               protected var vWidth:Number;
+               protected var vHeight:Number;
+               
+               public function Main(){
+                       Security.allowDomain('*');
+                       Security.allowInsecureDomain('*');
+                       
+                       videoURL = this.getFlashvar('video', 'http://rbc.paris.cubedesigners.com/files/z/a/4ed5fe63-zap.flv');
+                       loop = this.getFlashvar('loop', '0') == '1';
+                       sound = this.getFlashvar('sound', '1') == '1';
+                       valign = this.getFlashvar('valign', 'T');
+                       halign = this.getFlashvar('halign', 'C');
+                       expand = this.getFlashvar('expand', '1') == '1';
+                       
+                       addEventListener(Event.RESIZE, resize);
+                       
+                       soundMute = !sound;
+                       
+                       loader = new BulkLoader('cubeit_video', 1);
+                       
+                       videoItem = loader.add(videoURL, {id: 'video'}) as VideoItem;
+                       loader.start();
+                       
+                       videoItem.addEventListener(BulkLoader.CAN_BEGIN_PLAYING, ready);
+               }
+               
+               protected function resume():void {
+                       ns.resume();
+               }
+               
+               protected function pause():void {
+                       ns.pause();
+               }
+               
+               protected function getDuration():Number {
+                       return meta.duration;
+               }
+               
+               protected function ready(e:Event):void {
+                       
+                               ExternalInterface.call('alert', ExternalInterface.objectID);
+                               ExternalInterface.addCallback('getDuration', getDuration);
+                               ExternalInterface.addCallback('pause', pause);
+                               ExternalInterface.addCallback('resume', resume);
+                       
+                       
+                       ns = videoItem.stream;
+                       ns.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
+                       meta = loader.getNetStreamMetaData('video');
+                       
+                       ns.seek(0);
+                       ns.resume();
+                       
+                       vWidth = meta.width;
+                       vHeight = meta.height;
+                       video = new Video(meta.width, meta.height);
+                       video.attachNetStream(ns);
+                       video.alpha = 0;
+                       video.smoothing = true;
+                       resize();
+                       TweenLite.to(video, 0.5, {alpha: 1});
+                       addChild(video);
+               }
+               
+               protected function netStatus(e:NetStatusEvent){
+                       if (e.info.code == 'NetStream.Play.Stop' && loop){
+                               ns.seek(0);
+                               ns.resume();
+                       }
+               }
+               
+               protected function resize(... rest){
+                       if (video == null){
+                               return;
+                       }
+                       if (expand){
+                               var s = Math.min(width / vWidth, height / vHeight);
+                               video.scaleX = video.scaleY = s;
+                       }
+                       
+                       if (halign == 'C'){
+                               video.x = (width - video.width) / 2;
+                       }
+                       else if (halign == 'L'){
+                               video.x = 0;
+                       }
+                       else if (halign == 'R'){
+                               video.x = width - video.width;
+                       }
+                       
+                       if (valign == 'T'){
+                               video.y = 0;
+                       }
+                       else if (valign == 'M'){
+                               video.y = (height - video.height) / 2;
+                       }
+                       else if (valign == 'B'){
+                               video.y = height - video.height;
+                       }
+               }
+       
+       }
+
+}
\ No newline at end of file
diff --git a/CubeIT/swf/_src/video.fla b/CubeIT/swf/_src/video.fla
new file mode 100644 (file)
index 0000000..3ca13cc
Binary files /dev/null and b/CubeIT/swf/_src/video.fla differ
diff --git a/CubeIT/swf/video.swf b/CubeIT/swf/video.swf
new file mode 100644 (file)
index 0000000..bc6a021
Binary files /dev/null and b/CubeIT/swf/video.swf differ
index 02b87efa950a1877d318b8555ef89f78f2c53670..c0ba779332640ebc1561d7975eb3d4db26666f86 100644 (file)
@@ -51,7 +51,7 @@ privacy.analytics = 1
 
 [staging : production]
 
-dev = true
+dev = false
 
 mail.from = external@cubedesigners.com
 mail.host=mail2.cubedesigners.com
@@ -61,7 +61,7 @@ mail.password=z6hfYZJEfFZp48pza3
 mail.encryption=tls
 
 database.params.host = localhost
-database.params.password = 7^ACmhtEx4P^8s&44#jN
+database.params.password = "7^ACmhtEx4P^8s&44#jN"
 database.params.dbname = bloomsburie_2025_staging
 database.params.username = cubedesigners
 
@@ -79,15 +79,6 @@ session.adapter = files
 
 [testing : staging]
 
-dev = false
-
-mail.from = external@cubedesigners.com
-mail.host=mail2.cubedesigners.com
-mail.port=587
-mail.username=external@cubedesigners.com
-mail.password=z6hfYZJEfFZp48pza3
-mail.encryption=tls
-
 database.params.host = bloomsburie-mariadb
 database.params.password = 0b0uezljtKO7RrjR
 database.params.dbname = bloomsburie
diff --git a/framework/application/configs/settings.1416239239.ini b/framework/application/configs/settings.1416239239.ini
new file mode 100644 (file)
index 0000000..d46c1f4
--- /dev/null
@@ -0,0 +1,156 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners"
+longTitle.en = ""
+description.fr = ""
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://plus.google.com/108505338910338279554"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
diff --git a/framework/application/configs/settings.1416321741.ini b/framework/application/configs/settings.1416321741.ini
new file mode 100644 (file)
index 0000000..aa94732
--- /dev/null
@@ -0,0 +1,157 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners"
+longTitle.en = ""
+description.fr = ""
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416322174.ini b/framework/application/configs/settings.1416322174.ini
new file mode 100644 (file)
index 0000000..4f2613d
--- /dev/null
@@ -0,0 +1,160 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners"
+longTitle.en = ""
+description.fr = ""
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/channel/UCuxiIzuENyp90JxUFHvxbLg"
+followus.fr.reseauxsociaux.4.picto = false
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416323647.ini b/framework/application/configs/settings.1416323647.ini
new file mode 100644 (file)
index 0000000..de88170
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners"
+longTitle.en = ""
+description.fr = ""
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/channel/UCuxiIzuENyp90JxUFHvxbLg"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b5c40-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416323687.ini b/framework/application/configs/settings.1416323687.ini
new file mode 100644 (file)
index 0000000..a3553ed
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners"
+longTitle.en = ""
+description.fr = ""
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/channel/UCuxiIzuENyp90JxUFHvxbLg"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b623a-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416323755.ini b/framework/application/configs/settings.1416323755.ini
new file mode 100644 (file)
index 0000000..114e7ab
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners"
+longTitle.en = ""
+description.fr = ""
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/channel/UCuxiIzuENyp90JxUFHvxbLg"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b6264-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416323772.ini b/framework/application/configs/settings.1416323772.ini
new file mode 100644 (file)
index 0000000..c3900e5
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, multimédia et design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, web, multimédia et design produit située à Paris et Montpellier (création de site internet, installations interactives et motion graphics)."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/channel/UCuxiIzuENyp90JxUFHvxbLg"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b5c40-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416323949.ini b/framework/application/configs/settings.1416323949.ini
new file mode 100644 (file)
index 0000000..6eed999
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, multimédia et design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, web, multimédia et design produit située à Paris et Montpellier (création de site internet, installations interactives et motion graphics)."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/channel/UCuxiIzuENyp90JxUFHvxbLg"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b623a-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416324003.ini b/framework/application/configs/settings.1416324003.ini
new file mode 100644 (file)
index 0000000..d983831
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, multimédia et design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, web, multimédia et design produit située à Paris et Montpellier (création de site internet, installations interactives et motion graphics)."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/channel/UCuxiIzuENyp90JxUFHvxbLg"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b6368-youtube1.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416326399.ini b/framework/application/configs/settings.1416326399.ini
new file mode 100644 (file)
index 0000000..639d1f3
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, multimédia et design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, web, multimédia et design produit située à Paris et Montpellier (création de site internet, installations interactives et motion graphics)."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/channel/UCuxiIzuENyp90JxUFHvxbLg"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416327317.ini b/framework/application/configs/settings.1416327317.ini
new file mode 100644 (file)
index 0000000..da41480
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/channel/UCuxiIzuENyp90JxUFHvxbLg"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416327925.ini b/framework/application/configs/settings.1416327925.ini
new file mode 100644 (file)
index 0000000..2529d2a
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416328119.ini b/framework/application/configs/settings.1416328119.ini
new file mode 100644 (file)
index 0000000..e165e46
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b72f0-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416416867.ini b/framework/application/configs/settings.1416416867.ini
new file mode 100644 (file)
index 0000000..d18d474
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://fr-fr.facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416580907.ini b/framework/application/configs/settings.1416580907.ini
new file mode 100644 (file)
index 0000000..76984b3
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416581183.ini b/framework/application/configs/settings.1416581183.ini
new file mode 100644 (file)
index 0000000..76984b3
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le graphisme de l’exposition Mars pour la Cité de l’espace."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416581225.ini b/framework/application/configs/settings.1416581225.ini
new file mode 100644 (file)
index 0000000..c1dfb88
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-12 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.1.date = "2013-07-16 00:00:00"
+actus.fr.actualites.1.texte = "Nous sommes fiers de vous présenter la boutique Fnac Disney Infinity !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416581301.ini b/framework/application/configs/settings.1416581301.ini
new file mode 100644 (file)
index 0000000..7a50e9a
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-12 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.1.date = "2013-11-21 00:00:00"
+actus.fr.actualites.1.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416581380.ini b/framework/application/configs/settings.1416581380.ini
new file mode 100644 (file)
index 0000000..7a50e9a
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2013-11-12 00:00:00"
+actus.fr.actualites.0.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.1.date = "2013-11-21 00:00:00"
+actus.fr.actualites.1.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.2.date = "2013-07-07 00:00:00"
+actus.fr.actualites.2.texte = "Hercules lance la webcam HD Twist, design Cubedesigners. une webcam mini au pied original : flexible, en silicone tendre, elle se fixe partout !"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416581402.ini b/framework/application/configs/settings.1416581402.ini
new file mode 100644 (file)
index 0000000..314cac5
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.date = "2014-11-12 00:00:00"
+actus.fr.actualites.1.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.date = "2014-04-26 00:00:00"
+actus.fr.actualites.2.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416581534.ini b/framework/application/configs/settings.1416581534.ini
new file mode 100644 (file)
index 0000000..314cac5
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.date = "2014-11-12 00:00:00"
+actus.fr.actualites.1.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.date = "2014-04-26 00:00:00"
+actus.fr.actualites.2.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416595633.ini b/framework/application/configs/settings.1416595633.ini
new file mode 100644 (file)
index 0000000..fc5ce73
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.date = "2014-11-12 00:00:00"
+actus.fr.actualites.1.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.date = "2014-04-26 00:00:00"
+actus.fr.actualites.2.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse : Explorations extrêmes"
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416600543.ini b/framework/application/configs/settings.1416600543.ini
new file mode 100644 (file)
index 0000000..eb43b0c
--- /dev/null
@@ -0,0 +1,169 @@
+[production]
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.date = "2014-11-12 00:00:00"
+actus.fr.actualites.1.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.date = "2014-04-26 00:00:00"
+actus.fr.actualites.2.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse : Explorations extrêmes."
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416836876.ini b/framework/application/configs/settings.1416836876.ini
new file mode 100644 (file)
index 0000000..f18b871
--- /dev/null
@@ -0,0 +1,170 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.date = "2014-11-12 00:00:00"
+actus.fr.actualites.1.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.date = "2014-04-26 00:00:00"
+actus.fr.actualites.2.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse : Explorations extrêmes."
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés"
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416914222.ini b/framework/application/configs/settings.1416914222.ini
new file mode 100644 (file)
index 0000000..0a3683f
--- /dev/null
@@ -0,0 +1,170 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.date = "2014-11-12 00:00:00"
+actus.fr.actualites.1.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.date = "2014-04-26 00:00:00"
+actus.fr.actualites.2.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse : Explorations extrêmes."
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416914259.ini b/framework/application/configs/settings.1416914259.ini
new file mode 100644 (file)
index 0000000..0a3683f
--- /dev/null
@@ -0,0 +1,170 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.date = "2014-11-12 00:00:00"
+actus.fr.actualites.1.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.date = "2014-04-26 00:00:00"
+actus.fr.actualites.2.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse : Explorations extrêmes."
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416914414.ini b/framework/application/configs/settings.1416914414.ini
new file mode 100644 (file)
index 0000000..0a3683f
--- /dev/null
@@ -0,0 +1,170 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.date = "2014-11-12 00:00:00"
+actus.fr.actualites.1.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.date = "2014-04-26 00:00:00"
+actus.fr.actualites.2.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse : Explorations extrêmes."
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1416941726.ini b/framework/application/configs/settings.1416941726.ini
new file mode 100644 (file)
index 0000000..0a3683f
--- /dev/null
@@ -0,0 +1,170 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.date = "2014-11-12 00:00:00"
+actus.fr.actualites.1.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.date = "2014-04-26 00:00:00"
+actus.fr.actualites.2.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse : Explorations extrêmes."
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Pinterest"
+followus.fr.reseauxsociaux.3.url = "https://www.pinterest.com/"
+followus.fr.reseauxsociaux.3.color = "#ca111a"
+followus.fr.reseauxsociaux.3.picto.0 = "52fa1dbc-picto-pi.svg"
+followus.fr.reseauxsociaux.4.titre = "Youtube"
+followus.fr.reseauxsociaux.4.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.4.color = "#c22528"
+followus.fr.reseauxsociaux.4.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1417005978.ini b/framework/application/configs/settings.1417005978.ini
new file mode 100644 (file)
index 0000000..0f9fbfc
--- /dev/null
@@ -0,0 +1,166 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners // Agence de design global // Graphisme, web, design produit // Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.date = "2014-11-12 00:00:00"
+actus.fr.actualites.1.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.date = "2014-04-26 00:00:00"
+actus.fr.actualites.2.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse : Explorations extrêmes."
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Youtube"
+followus.fr.reseauxsociaux.3.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.3.color = "#c22528"
+followus.fr.reseauxsociaux.3.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1417006049.ini b/framework/application/configs/settings.1417006049.ini
new file mode 100644 (file)
index 0000000..4bc5a25
--- /dev/null
@@ -0,0 +1,168 @@
+[production]
+localesEnabled.0 = "fr"
+logoTitle = "Cubedesigners"
+baseline = "Agence de création sur mesure"
+tags = ""
+longTitle.fr = "Cubedesigners / Agence de design global / Graphisme, web, design produit / Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.date = "2014-11-12 00:00:00"
+actus.fr.actualites.1.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.date = "2014-04-26 00:00:00"
+actus.fr.actualites.2.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse : Explorations extrêmes."
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Youtube"
+followus.fr.reseauxsociaux.3.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.3.color = "#c22528"
+followus.fr.reseauxsociaux.3.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1419607474.ini b/framework/application/configs/settings.1419607474.ini
new file mode 100644 (file)
index 0000000..080f8c7
--- /dev/null
@@ -0,0 +1,170 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners / Agence de design global / Graphisme, web, design produit / Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+logoTitle.fr = "Cubedesigners"
+logoTitle.en = ""
+baseline.fr = "Agence de création sur mesure"
+baseline.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-11-21 00:00:00"
+actus.fr.actualites.0.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.date = "2014-11-12 00:00:00"
+actus.fr.actualites.1.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.date = "2014-04-26 00:00:00"
+actus.fr.actualites.2.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse : Explorations extrêmes."
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Youtube"
+followus.fr.reseauxsociaux.3.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.3.color = "#c22528"
+followus.fr.reseauxsociaux.3.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1419607574.ini b/framework/application/configs/settings.1419607574.ini
new file mode 100644 (file)
index 0000000..c4ed167
--- /dev/null
@@ -0,0 +1,173 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners / Agence de design global / Graphisme, web, design produit / Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+logoTitle.fr = "Cubedesigners"
+logoTitle.en = ""
+baseline.fr = "Agence de création sur mesure"
+baseline.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-12-26 16:23:34"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le site internet Enko Running Shoes
+http://www.enko-running-shoes.com/"
+actus.fr.actualites.1.date = "2014-11-21 00:00:00"
+actus.fr.actualites.1.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.2.date = "2014-11-12 00:00:00"
+actus.fr.actualites.2.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.3.date = "2014-04-26 00:00:00"
+actus.fr.actualites.3.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse : Explorations extrêmes."
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Youtube"
+followus.fr.reseauxsociaux.3.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.3.color = "#c22528"
+followus.fr.reseauxsociaux.3.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1419607799.ini b/framework/application/configs/settings.1419607799.ini
new file mode 100644 (file)
index 0000000..c4ed167
--- /dev/null
@@ -0,0 +1,173 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners / Agence de design global / Graphisme, web, design produit / Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+logoTitle.fr = "Cubedesigners"
+logoTitle.en = ""
+baseline.fr = "Agence de création sur mesure"
+baseline.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-12-26 16:23:34"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le site internet Enko Running Shoes
+http://www.enko-running-shoes.com/"
+actus.fr.actualites.1.date = "2014-11-21 00:00:00"
+actus.fr.actualites.1.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.2.date = "2014-11-12 00:00:00"
+actus.fr.actualites.2.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.3.date = "2014-04-26 00:00:00"
+actus.fr.actualites.3.texte = "Nouvelle exposition pour la Cité de l’espace à Toulouse : Explorations extrêmes."
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Youtube"
+followus.fr.reseauxsociaux.3.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.3.color = "#c22528"
+followus.fr.reseauxsociaux.3.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1419860069.ini b/framework/application/configs/settings.1419860069.ini
new file mode 100644 (file)
index 0000000..0869105
--- /dev/null
@@ -0,0 +1,171 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners / Agence de design global / Graphisme, web, design produit / Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+logoTitle.fr = "Cubedesigners"
+logoTitle.en = ""
+baseline.fr = "Agence de création sur mesure"
+baseline.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-12-26 16:23:34"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le site internet Enko Running Shoes
+http://www.enko-running-shoes.com/"
+actus.fr.actualites.1.date = "2014-11-21 00:00:00"
+actus.fr.actualites.1.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.2.date = "2014-11-12 00:00:00"
+actus.fr.actualites.2.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Youtube"
+followus.fr.reseauxsociaux.3.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.3.color = "#c22528"
+followus.fr.reseauxsociaux.3.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1419860379.ini b/framework/application/configs/settings.1419860379.ini
new file mode 100644 (file)
index 0000000..99cf38d
--- /dev/null
@@ -0,0 +1,172 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners / Agence de design global / Graphisme, web, design produit / Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+logoTitle.fr = "Cubedesigners"
+logoTitle.en = ""
+baseline.fr = "Agence de création sur mesure"
+baseline.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-12-26 16:23:34"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le site internet [Enko Running Shoes|http://www.enko-running-shoes.com/]
+
+"
+actus.fr.actualites.1.date = "2014-11-21 00:00:00"
+actus.fr.actualites.1.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.2.date = "2014-11-12 00:00:00"
+actus.fr.actualites.2.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Youtube"
+followus.fr.reseauxsociaux.3.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.3.color = "#c22528"
+followus.fr.reseauxsociaux.3.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1419861026.ini b/framework/application/configs/settings.1419861026.ini
new file mode 100644 (file)
index 0000000..d504045
--- /dev/null
@@ -0,0 +1,188 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners / Agence de design global / Graphisme, web, design produit / Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+logoTitle.fr = "Cubedesigners"
+logoTitle.en = ""
+baseline.fr = "Agence de création sur mesure"
+baseline.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-12-26 16:23:34"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le site internet Enko Running Shoes
+
+"
+actus.fr.actualites.0.link.url = "http://www.enko-running-shoes.com/"
+actus.fr.actualites.0.link.page = ""
+actus.fr.actualites.1.date = "2014-11-21 00:00:00"
+actus.fr.actualites.1.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.link.url = ""
+actus.fr.actualites.1.link.page = ""
+actus.fr.actualites.2.date = "2014-11-12 00:00:00"
+actus.fr.actualites.2.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.link.url = ""
+actus.fr.actualites.2.link.page = ""
+actus.en.actualites.0.date = "2014-01-20 12:19:32"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.0.link.url = ""
+actus.en.actualites.0.link.page = ""
+actus.en.actualites.1.date = "2014-01-20 12:19:32"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.1.link.url = ""
+actus.en.actualites.1.link.page = ""
+actus.en.actualites.2.date = "2014-01-20 12:19:32"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.2.link.url = ""
+actus.en.actualites.2.link.page = ""
+actus.en.actualites.3.date = "2014-01-20 12:19:32"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.3.link.url = ""
+actus.en.actualites.3.link.page = ""
+actus.en.actualites.4.date = "2014-01-20 12:19:32"
+actus.en.actualites.4.texte = ""
+actus.en.actualites.4.link.url = ""
+actus.en.actualites.4.link.page = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Youtube"
+followus.fr.reseauxsociaux.3.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.3.color = "#c22528"
+followus.fr.reseauxsociaux.3.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1419861169.ini b/framework/application/configs/settings.1419861169.ini
new file mode 100644 (file)
index 0000000..1172c0a
--- /dev/null
@@ -0,0 +1,188 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners / Agence de design global / Graphisme, web, design produit / Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+logoTitle.fr = "Cubedesigners"
+logoTitle.en = ""
+baseline.fr = "Agence de création sur mesure"
+baseline.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-12-26 12:12:12"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le site internet Enko Running Shoes
+
+"
+actus.fr.actualites.0.link.url = "http://www.enko-running-shoes.com/"
+actus.fr.actualites.0.link.page = ""
+actus.fr.actualites.1.date = "2014-11-21 12:12:12"
+actus.fr.actualites.1.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.link.url = ""
+actus.fr.actualites.1.link.page = ""
+actus.fr.actualites.2.date = "2014-11-12 12:12:12"
+actus.fr.actualites.2.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.link.url = ""
+actus.fr.actualites.2.link.page = ""
+actus.en.actualites.0.date = "2014-01-20 12:12:12"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.0.link.url = ""
+actus.en.actualites.0.link.page = ""
+actus.en.actualites.1.date = "2014-01-20 12:12:12"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.1.link.url = ""
+actus.en.actualites.1.link.page = ""
+actus.en.actualites.2.date = "2014-01-20 12:12:12"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.2.link.url = ""
+actus.en.actualites.2.link.page = ""
+actus.en.actualites.3.date = "2014-01-20 12:12:12"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.3.link.url = ""
+actus.en.actualites.3.link.page = ""
+actus.en.actualites.4.date = "2014-01-20 12:12:12"
+actus.en.actualites.4.texte = ""
+actus.en.actualites.4.link.url = ""
+actus.en.actualites.4.link.page = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Youtube"
+followus.fr.reseauxsociaux.3.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.3.color = "#c22528"
+followus.fr.reseauxsociaux.3.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1419861868.ini b/framework/application/configs/settings.1419861868.ini
new file mode 100644 (file)
index 0000000..a8a77f7
--- /dev/null
@@ -0,0 +1,188 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners / Agence de design global / Graphisme, web, design produit / Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+logoTitle.fr = "Cubedesigners"
+logoTitle.en = ""
+baseline.fr = "Agence de création sur mesure"
+baseline.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-12-26 12:12:12"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le site internet Enko Running Shoes
+
+"
+actus.fr.actualites.0.link.url = "http://www.enko-running-shoes.com/"
+actus.fr.actualites.0.link.page = ""
+actus.fr.actualites.1.date = "2014-11-21 12:12:12"
+actus.fr.actualites.1.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.link.url = ""
+actus.fr.actualites.1.link.page = ""
+actus.fr.actualites.2.date = "2014-11-12 12:12:12"
+actus.fr.actualites.2.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.link.url = ""
+actus.fr.actualites.2.link.page = "3/139"
+actus.en.actualites.0.date = "2014-01-20 12:12:12"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.0.link.url = ""
+actus.en.actualites.0.link.page = ""
+actus.en.actualites.1.date = "2014-01-20 12:12:12"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.1.link.url = ""
+actus.en.actualites.1.link.page = ""
+actus.en.actualites.2.date = "2014-01-20 12:12:12"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.2.link.url = ""
+actus.en.actualites.2.link.page = ""
+actus.en.actualites.3.date = "2014-01-20 12:12:12"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.3.link.url = ""
+actus.en.actualites.3.link.page = ""
+actus.en.actualites.4.date = "2014-01-20 12:12:12"
+actus.en.actualites.4.texte = ""
+actus.en.actualites.4.link.url = ""
+actus.en.actualites.4.link.page = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Youtube"
+followus.fr.reseauxsociaux.3.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.3.color = "#c22528"
+followus.fr.reseauxsociaux.3.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1420798609.ini b/framework/application/configs/settings.1420798609.ini
new file mode 100644 (file)
index 0000000..b03c0d0
--- /dev/null
@@ -0,0 +1,188 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners / Agence web, graphisme, design / Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+logoTitle.fr = "Cubedesigners"
+logoTitle.en = ""
+baseline.fr = "Agence de création sur mesure"
+baseline.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2014-12-26 12:12:12"
+actus.fr.actualites.0.texte = "Cubedesigners réalise le site internet Enko Running Shoes
+
+"
+actus.fr.actualites.0.link.url = "http://www.enko-running-shoes.com/"
+actus.fr.actualites.0.link.page = ""
+actus.fr.actualites.1.date = "2014-11-21 12:12:12"
+actus.fr.actualites.1.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.1.link.url = ""
+actus.fr.actualites.1.link.page = ""
+actus.fr.actualites.2.date = "2014-11-12 12:12:12"
+actus.fr.actualites.2.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.2.link.url = ""
+actus.fr.actualites.2.link.page = "3/139"
+actus.en.actualites.0.date = "2014-01-20 12:12:12"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.0.link.url = ""
+actus.en.actualites.0.link.page = ""
+actus.en.actualites.1.date = "2014-01-20 12:12:12"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.1.link.url = ""
+actus.en.actualites.1.link.page = ""
+actus.en.actualites.2.date = "2014-01-20 12:12:12"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.2.link.url = ""
+actus.en.actualites.2.link.page = ""
+actus.en.actualites.3.date = "2014-01-20 12:12:12"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.3.link.url = ""
+actus.en.actualites.3.link.page = ""
+actus.en.actualites.4.date = "2014-01-20 12:12:12"
+actus.en.actualites.4.texte = ""
+actus.en.actualites.4.link.url = ""
+actus.en.actualites.4.link.page = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Youtube"
+followus.fr.reseauxsociaux.3.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.3.color = "#c22528"
+followus.fr.reseauxsociaux.3.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1420798643.ini b/framework/application/configs/settings.1420798643.ini
new file mode 100644 (file)
index 0000000..0b699dc
--- /dev/null
@@ -0,0 +1,192 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners / Agence web, graphisme, design / Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+logoTitle.fr = "Cubedesigners"
+logoTitle.en = ""
+baseline.fr = "Agence de création sur mesure"
+baseline.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2015-01-09 12:12:12"
+actus.fr.actualites.0.texte = "Cubedesigners réalise trois nouveaux sites liés : la maison de retraite Yves Couzy, le restaurant César & Léonie, et la résidence seniors Pavillon Madeleine."
+actus.fr.actualites.0.link.url = "http://www.mdryvescouzy.com/"
+actus.fr.actualites.0.link.page = ""
+actus.fr.actualites.1.date = "2014-12-26 12:12:12"
+actus.fr.actualites.1.texte = "Cubedesigners réalise le site internet Enko Running Shoes
+
+"
+actus.fr.actualites.1.link.url = "http://www.enko-running-shoes.com/"
+actus.fr.actualites.1.link.page = ""
+actus.fr.actualites.2.date = "2014-11-21 12:12:12"
+actus.fr.actualites.2.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.2.link.url = ""
+actus.fr.actualites.2.link.page = ""
+actus.fr.actualites.3.date = "2014-11-12 12:12:12"
+actus.fr.actualites.3.texte = "Cubedesigners réalise les supports de communication de la Cité de l'espace pour la journée d’atterrissage de Philae sur la comète Tchouri."
+actus.fr.actualites.3.link.url = ""
+actus.fr.actualites.3.link.page = "3/139"
+actus.en.actualites.0.date = "2014-01-20 12:12:12"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.0.link.url = ""
+actus.en.actualites.0.link.page = ""
+actus.en.actualites.1.date = "2014-01-20 12:12:12"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.1.link.url = ""
+actus.en.actualites.1.link.page = ""
+actus.en.actualites.2.date = "2014-01-20 12:12:12"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.2.link.url = ""
+actus.en.actualites.2.link.page = ""
+actus.en.actualites.3.date = "2014-01-20 12:12:12"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.3.link.url = ""
+actus.en.actualites.3.link.page = ""
+actus.en.actualites.4.date = "2014-01-20 12:12:12"
+actus.en.actualites.4.texte = ""
+actus.en.actualites.4.link.url = ""
+actus.en.actualites.4.link.page = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Youtube"
+followus.fr.reseauxsociaux.3.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.3.color = "#c22528"
+followus.fr.reseauxsociaux.3.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/application/configs/settings.1420809456.ini b/framework/application/configs/settings.1420809456.ini
new file mode 100644 (file)
index 0000000..7b32c9a
--- /dev/null
@@ -0,0 +1,188 @@
+[production]
+localesEnabled.0 = "fr"
+tags = ""
+longTitle.fr = "Cubedesigners / Agence web, graphisme, design / Paris Montpellier"
+longTitle.en = ""
+description.fr = "Cubedesigners est une agence de Design global : graphisme, sites internet et design produit située à Paris et Montpellier."
+description.en = ""
+logoTitle.fr = "Cubedesigners"
+logoTitle.en = ""
+baseline.fr = "Agence de création sur mesure"
+baseline.en = ""
+contact.fr.bloc = "Pour toute information,
+un email unique : [contact@cubedesigners.com|mailto:contact@cubedesigners.com]
+l’agence concernée vous répondra dans les plus brefs délais."
+contact.fr.bureaux.0.coordonnees.nom = "Agence de Paris"
+contact.fr.bureaux.0.coordonnees.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.coordonnees.code_postal = "75005"
+contact.fr.bureaux.0.coordonnees.ville = "Paris"
+contact.fr.bureaux.0.coordonnees.pays = "FR"
+contact.fr.bureaux.0.coordonnees.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.coordonnees.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.0.map.zoom = 15
+contact.fr.bureaux.0.map.googleLink = "https://maps.google.com/maps?q=46+Rue+de+la+Clef,Paris,France"
+contact.fr.bureaux.0.map.centre.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.map.centre.code_postal = "75005"
+contact.fr.bureaux.0.map.centre.ville = "Paris"
+contact.fr.bureaux.0.map.centre.pays = "FR"
+contact.fr.bureaux.0.markers.0.nom = "Agence de Paris"
+contact.fr.bureaux.0.markers.0.adresse = "46 Rue de la Clef"
+contact.fr.bureaux.0.markers.0.code_postal = "75005"
+contact.fr.bureaux.0.markers.0.ville = "Paris"
+contact.fr.bureaux.0.markers.0.pays = "FR"
+contact.fr.bureaux.0.markers.0.tel = "(+33) 1 44 24 18 53"
+contact.fr.bureaux.0.markers.0.fax = "(+33) 1 83 64 34 71"
+contact.fr.bureaux.0.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.coordonnees.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.coordonnees.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.coordonnees.code_postal = "34000"
+contact.fr.bureaux.1.coordonnees.ville = "Montpellier"
+contact.fr.bureaux.1.coordonnees.pays = "FR"
+contact.fr.bureaux.1.coordonnees.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.coordonnees.icon.0 = "52dfd1dd-pointeur.png"
+contact.fr.bureaux.1.map.zoom = 15
+contact.fr.bureaux.1.map.googleLink = "https://maps.google.com/maps?q=12+Bis+Rue+du+G%C3%A9n%C3%A9ral+Maurin,Montpellier,France"
+contact.fr.bureaux.1.map.centre.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.map.centre.code_postal = "34000"
+contact.fr.bureaux.1.map.centre.ville = "Montpellier"
+contact.fr.bureaux.1.map.centre.pays = "FR"
+contact.fr.bureaux.1.markers.0.nom = "Agence de Montpellier"
+contact.fr.bureaux.1.markers.0.adresse = "12 Bis Rue du Général Maurin"
+contact.fr.bureaux.1.markers.0.code_postal = "34000 "
+contact.fr.bureaux.1.markers.0.ville = "Montpellier"
+contact.fr.bureaux.1.markers.0.pays = "FR"
+contact.fr.bureaux.1.markers.0.tel = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.fax = "(+33) 4 67 02 71 47"
+contact.fr.bureaux.1.markers.0.icon.0 = "52dfd1dd-pointeur.png"
+contact.en.bloc = ""
+contact.en.bureaux.0.coordonnees.nom = ""
+contact.en.bureaux.0.coordonnees.adresse = ""
+contact.en.bureaux.0.coordonnees.code_postal = ""
+contact.en.bureaux.0.coordonnees.ville = ""
+contact.en.bureaux.0.coordonnees.pays = "FR"
+contact.en.bureaux.0.coordonnees.tel = ""
+contact.en.bureaux.0.coordonnees.fax = ""
+contact.en.bureaux.0.coordonnees.icon = false
+contact.en.bureaux.0.map.zoom = 0
+contact.en.bureaux.0.map.googleLink = ""
+contact.en.bureaux.0.map.centre.adresse = ""
+contact.en.bureaux.0.map.centre.code_postal = ""
+contact.en.bureaux.0.map.centre.ville = ""
+contact.en.bureaux.0.map.centre.pays = "FR"
+contact.en.bureaux.0.markers.0.nom = ""
+contact.en.bureaux.0.markers.0.adresse = ""
+contact.en.bureaux.0.markers.0.code_postal = ""
+contact.en.bureaux.0.markers.0.ville = ""
+contact.en.bureaux.0.markers.0.pays = "FR"
+contact.en.bureaux.0.markers.0.tel = ""
+contact.en.bureaux.0.markers.0.fax = ""
+contact.en.bureaux.0.markers.0.icon = false
+contact.en.bureaux.0.markers.1.nom = ""
+contact.en.bureaux.0.markers.1.adresse = ""
+contact.en.bureaux.0.markers.1.code_postal = ""
+contact.en.bureaux.0.markers.1.ville = ""
+contact.en.bureaux.0.markers.1.pays = "FR"
+contact.en.bureaux.0.markers.1.tel = ""
+contact.en.bureaux.0.markers.1.fax = ""
+contact.en.bureaux.0.markers.1.icon = false
+contact.en.bureaux.1.coordonnees.nom = ""
+contact.en.bureaux.1.coordonnees.adresse = ""
+contact.en.bureaux.1.coordonnees.code_postal = ""
+contact.en.bureaux.1.coordonnees.ville = ""
+contact.en.bureaux.1.coordonnees.pays = "FR"
+contact.en.bureaux.1.coordonnees.tel = ""
+contact.en.bureaux.1.coordonnees.fax = ""
+contact.en.bureaux.1.coordonnees.icon = false
+contact.en.bureaux.1.map.zoom = 0
+contact.en.bureaux.1.map.googleLink = ""
+contact.en.bureaux.1.map.centre.adresse = ""
+contact.en.bureaux.1.map.centre.code_postal = ""
+contact.en.bureaux.1.map.centre.ville = ""
+contact.en.bureaux.1.map.centre.pays = "FR"
+contact.en.bureaux.1.markers.0.nom = ""
+contact.en.bureaux.1.markers.0.adresse = ""
+contact.en.bureaux.1.markers.0.code_postal = ""
+contact.en.bureaux.1.markers.0.ville = ""
+contact.en.bureaux.1.markers.0.pays = "FR"
+contact.en.bureaux.1.markers.0.tel = ""
+contact.en.bureaux.1.markers.0.fax = ""
+contact.en.bureaux.1.markers.0.icon = false
+contact.en.bureaux.1.markers.1.nom = ""
+contact.en.bureaux.1.markers.1.adresse = ""
+contact.en.bureaux.1.markers.1.code_postal = ""
+contact.en.bureaux.1.markers.1.ville = ""
+contact.en.bureaux.1.markers.1.pays = "FR"
+contact.en.bureaux.1.markers.1.tel = ""
+contact.en.bureaux.1.markers.1.fax = ""
+contact.en.bureaux.1.markers.1.icon = false
+actus.fr.actualites.0.date = "2015-01-09 12:12:12"
+actus.fr.actualites.0.texte = "Cubedesigners réalise trois nouveaux sites liés : la maison de retraite Yves Couzy, le restaurant César & Léonie, et la résidence seniors Pavillon Madeleine."
+actus.fr.actualites.0.link.url = "http://www.mdryvescouzy.com/"
+actus.fr.actualites.0.link.page = ""
+actus.fr.actualites.1.date = "2014-12-26 12:12:12"
+actus.fr.actualites.1.texte = "Cubedesigners réalise le site internet Enko Running Shoes
+
+"
+actus.fr.actualites.1.link.url = "http://www.enko-running-shoes.com/"
+actus.fr.actualites.1.link.page = ""
+actus.fr.actualites.2.date = "2014-11-21 12:12:12"
+actus.fr.actualites.2.texte = "Bienvenue sur notre nouveau site !"
+actus.fr.actualites.2.link.url = ""
+actus.fr.actualites.2.link.page = ""
+actus.en.actualites.0.date = "2014-01-20 12:12:12"
+actus.en.actualites.0.texte = ""
+actus.en.actualites.0.link.url = ""
+actus.en.actualites.0.link.page = ""
+actus.en.actualites.1.date = "2014-01-20 12:12:12"
+actus.en.actualites.1.texte = ""
+actus.en.actualites.1.link.url = ""
+actus.en.actualites.1.link.page = ""
+actus.en.actualites.2.date = "2014-01-20 12:12:12"
+actus.en.actualites.2.texte = ""
+actus.en.actualites.2.link.url = ""
+actus.en.actualites.2.link.page = ""
+actus.en.actualites.3.date = "2014-01-20 12:12:12"
+actus.en.actualites.3.texte = ""
+actus.en.actualites.3.link.url = ""
+actus.en.actualites.3.link.page = ""
+actus.en.actualites.4.date = "2014-01-20 12:12:12"
+actus.en.actualites.4.texte = ""
+actus.en.actualites.4.link.url = ""
+actus.en.actualites.4.link.page = ""
+followus.fr.reseauxsociaux.0.titre = "Facebook"
+followus.fr.reseauxsociaux.0.url = "https://facebook.com/Cubedesigners"
+followus.fr.reseauxsociaux.0.color = "#39599f"
+followus.fr.reseauxsociaux.0.picto.0 = "52fa1da5-picto-fb.svg"
+followus.fr.reseauxsociaux.1.titre = "Twitter"
+followus.fr.reseauxsociaux.1.url = "https://twitter.com/Cubedesigners"
+followus.fr.reseauxsociaux.1.color = "#45b0e3"
+followus.fr.reseauxsociaux.1.picto.0 = "52fa1dad-picto-tw.svg"
+followus.fr.reseauxsociaux.2.titre = "Google Plus"
+followus.fr.reseauxsociaux.2.url = "https://www.google.com/+Cubedesigners"
+followus.fr.reseauxsociaux.2.color = "#e64405"
+followus.fr.reseauxsociaux.2.picto.0 = "52fa1db5-picto-gplus.svg"
+followus.fr.reseauxsociaux.3.titre = "Youtube"
+followus.fr.reseauxsociaux.3.url = "https://www.youtube.com/user/Cubedesigners"
+followus.fr.reseauxsociaux.3.color = "#c22528"
+followus.fr.reseauxsociaux.3.picto.0 = "546b73b4-546b63a0-youtube.svg"
+followus.en.reseauxsociaux.0.titre = ""
+followus.en.reseauxsociaux.0.url = ""
+followus.en.reseauxsociaux.0.color = false
+followus.en.reseauxsociaux.0.picto = false
+followus.en.reseauxsociaux.1.titre = ""
+followus.en.reseauxsociaux.1.url = ""
+followus.en.reseauxsociaux.1.color = false
+followus.en.reseauxsociaux.1.picto = false
+followus.en.reseauxsociaux.2.titre = ""
+followus.en.reseauxsociaux.2.url = ""
+followus.en.reseauxsociaux.2.color = false
+followus.en.reseauxsociaux.2.picto = false
+followus.en.reseauxsociaux.3.titre = ""
+followus.en.reseauxsociaux.3.url = ""
+followus.en.reseauxsociaux.3.color = false
+followus.en.reseauxsociaux.3.picto = false
+copyright.fr = "Copyright © Cubedesigners. Tous droits réservés. "
+copyright.en = ""
+
diff --git a/framework/library/ChromeLogger/ChromePhp.php b/framework/library/ChromeLogger/ChromePhp.php
deleted file mode 100644 (file)
index cb547f4..0000000
+++ /dev/null
@@ -1,445 +0,0 @@
-<?php
-/**
- * Copyright 2010-2013 Craig Campbell
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Server Side Chrome PHP debugger class
- *
- * @package ChromePhp
- * @author Craig Campbell <iamcraigcampbell@gmail.com>
- */
-class ChromePhp {
-       /**
-        * @var string
-        */
-       const VERSION = '4.1.0';
-
-       /**
-        * @var string
-        */
-       const HEADER_NAME = 'X-ChromeLogger-Data';
-
-       /**
-        * @var string
-        */
-       const BACKTRACE_LEVEL = 'backtrace_level';
-
-       /**
-        * @var string
-        */
-       const LOG = 'log';
-
-       /**
-        * @var string
-        */
-       const WARN = 'warn';
-
-       /**
-        * @var string
-        */
-       const ERROR = 'error';
-
-       /**
-        * @var string
-        */
-       const GROUP = 'group';
-
-       /**
-        * @var string
-        */
-       const INFO = 'info';
-
-       /**
-        * @var string
-        */
-       const GROUP_END = 'groupEnd';
-
-       /**
-        * @var string
-        */
-       const GROUP_COLLAPSED = 'groupCollapsed';
-
-       /**
-        * @var string
-        */
-       const TABLE = 'table';
-
-       /**
-        * @var string
-        */
-       protected $_php_version;
-
-       /**
-        * @var int
-        */
-       protected $_timestamp;
-
-       /**
-        * @var array
-        */
-       protected $_json = array(
-               'version' => self::VERSION,
-               'columns' => array('log', 'backtrace', 'type'),
-               'rows' => array()
-       );
-
-       /**
-        * @var array
-        */
-       protected $_backtraces = array();
-
-       /**
-        * @var bool
-        */
-       protected $_error_triggered = false;
-
-       /**
-        * @var array
-        */
-       protected $_settings = array(
-               self::BACKTRACE_LEVEL => 1
-       );
-
-       /**
-        * @var ChromePhp
-        */
-       protected static $_instance;
-
-       /**
-        * Prevent recursion when working with objects referring to each other
-        *
-        * @var array
-        */
-       protected $_processed = array();
-
-       protected $_enabled = false;
-
-       /**
-        * constructor
-        */
-       public function __construct() {
-               $this->_php_version = phpversion();
-               $this->_timestamp = $this->_php_version >= 5.1 ? $_SERVER['REQUEST_TIME'] : time();
-               $this->_json['request_uri'] = $_SERVER['REQUEST_URI'];
-       }
-
-       public function setEnabled($enabled = true) {
-               $this->_enabled = $enabled;
-       }
-
-       /**
-        * gets instance of this class
-        *
-        * @return ChromePhp
-        */
-       public static function getInstance() {
-               if (self::$_instance === null) {
-                       self::$_instance = new self();
-               }
-               return self::$_instance;
-       }
-
-       /**
-        * logs a variable to the console
-        *
-        * @param mixed $data,... unlimited OPTIONAL number of additional logs [...]
-        * @return void
-        */
-       public static function log() {
-               $args = func_get_args();
-               return self::_log('', $args);
-       }
-
-       /**
-        * logs a warning to the console
-        *
-        * @param mixed $data,... unlimited OPTIONAL number of additional logs [...]
-        * @return void
-        */
-       public static function warn() {
-               $args = func_get_args();
-               return self::_log(self::WARN, $args);
-       }
-
-       /**
-        * logs an error to the console
-        *
-        * @param mixed $data,... unlimited OPTIONAL number of additional logs [...]
-        * @return void
-        */
-       public static function error() {
-               $args = func_get_args();
-               return self::_log(self::ERROR, $args);
-       }
-
-       /**
-        * sends a group log
-        *
-        * @param string value
-        */
-       public static function group() {
-               $args = func_get_args();
-               return self::_log(self::GROUP, $args);
-       }
-
-       /**
-        * sends an info log
-        *
-        * @param mixed $data,... unlimited OPTIONAL number of additional logs [...]
-        * @return void
-        */
-       public static function info() {
-               $args = func_get_args();
-               return self::_log(self::INFO, $args);
-       }
-
-       /**
-        * sends a collapsed group log
-        *
-        * @param string value
-        */
-       public static function groupCollapsed() {
-               $args = func_get_args();
-               return self::_log(self::GROUP_COLLAPSED, $args);
-       }
-
-       /**
-        * ends a group log
-        *
-        * @param string value
-        */
-       public static function groupEnd() {
-               $args = func_get_args();
-               return self::_log(self::GROUP_END, $args);
-       }
-
-       /**
-        * sends a table log
-        *
-        * @param string value
-        */
-       public static function table() {
-               $args = func_get_args();
-               return self::_log(self::TABLE, $args);
-       }
-
-       /**
-        * internal logging call
-        *
-        * @param string $type
-        * @return void
-        */
-       protected static function _log($type, array $args) {
-               // nothing passed in, don't do anything
-               if (count($args) == 0 && $type != self::GROUP_END) {
-                       return;
-               }
-
-               $logger = self::getInstance();
-
-               $logger->_processed = array();
-
-               $logs = array();
-               foreach ($args as $arg) {
-                       $logs[] = $logger->_convert($arg);
-               }
-
-               $backtrace = debug_backtrace(false);
-               $level = $logger->getSetting(self::BACKTRACE_LEVEL);
-
-               $backtrace_message = 'unknown';
-               if (isset($backtrace[$level]['file']) && isset($backtrace[$level]['line'])) {
-                       $backtrace_message = $backtrace[$level]['file'] . ' : ' . $backtrace[$level]['line'];
-               }
-
-               $logger->_addRow($logs, $backtrace_message, $type);
-       }
-
-       /**
-        * converts an object to a better format for logging
-        *
-        * @param Object
-        * @return array
-        */
-       protected function _convert($object) {
-               // if this isn't an object then just return it
-               if (!is_object($object)) {
-                       return $object;
-               }
-
-               //Mark this object as processed so we don't convert it twice and it
-               //Also avoid recursion when objects refer to each other
-               $this->_processed[] = $object;
-
-               $object_as_array = array();
-
-               // first add the class name
-               $object_as_array['___class_name'] = get_class($object);
-
-               // loop through object vars
-               $object_vars = get_object_vars($object);
-               foreach ($object_vars as $key => $value) {
-
-                       // same instance as parent object
-                       if ($value === $object || in_array($value, $this->_processed, true)) {
-                               $value = 'recursion - parent object [' . get_class($value) . ']';
-                       }
-                       $object_as_array[$key] = $this->_convert($value);
-               }
-
-               $reflection = new ReflectionClass($object);
-
-               // loop through the properties and add those
-               foreach ($reflection->getProperties() as $property) {
-
-                       // if one of these properties was already added above then ignore it
-                       if (array_key_exists($property->getName(), $object_vars)) {
-                               continue;
-                       }
-                       $type = $this->_getPropertyKey($property);
-
-                       if ($this->_php_version >= 5.3) {
-                               $property->setAccessible(true);
-                       }
-
-                       try {
-                               $value = $property->getValue($object);
-                       } catch (ReflectionException $e) {
-                               $value = 'only PHP 5.3 can access private/protected properties';
-                       }
-
-                       // same instance as parent object
-                       if ($value === $object || in_array($value, $this->_processed, true)) {
-                               $value = 'recursion - parent object [' . get_class($value) . ']';
-                       }
-
-                       $object_as_array[$type] = $this->_convert($value);
-               }
-               return $object_as_array;
-       }
-
-       /**
-        * takes a reflection property and returns a nicely formatted key of the property name
-        *
-        * @param ReflectionProperty
-        * @return string
-        */
-       protected function _getPropertyKey(ReflectionProperty $property) {
-               $static = $property->isStatic() ? ' static' : '';
-               if ($property->isPublic()) {
-                       return 'public' . $static . ' ' . $property->getName();
-               }
-
-               if ($property->isProtected()) {
-                       return 'protected' . $static . ' ' . $property->getName();
-               }
-
-               if ($property->isPrivate()) {
-                       return 'private' . $static . ' ' . $property->getName();
-               }
-       }
-
-       /**
-        * adds a value to the data array
-        *
-        * @var mixed
-        * @return void
-        */
-       protected function _addRow(array $logs, $backtrace, $type) {
-
-               // if this is logged on the same line for example in a loop, set it to null to save space
-               if (in_array($backtrace, $this->_backtraces)) {
-                       $backtrace = null;
-               }
-
-               // for group, groupEnd, and groupCollapsed
-               // take out the backtrace since it is not useful
-               if ($type == self::GROUP || $type == self::GROUP_END || $type == self::GROUP_COLLAPSED) {
-                       $backtrace = null;
-               }
-
-               if ($backtrace !== null) {
-                       $this->_backtraces[] = $backtrace;
-               }
-
-               $row = array($logs, $backtrace, $type);
-
-               $this->_json['rows'][] = $row;
-
-               $f = LOG_PATH . '/chromelogger.log';
-               $fp = fopen($f, 'a+');
-               fwrite($fp, print_r($row, true) . "\n\n");
-               fclose($fp);
-
-               if (!$this->_enabled) {
-                       return;
-               }
-               $this->_writeHeader($this->_json);
-       }
-
-       protected function _writeHeader($data) {
-               if (!$this->_enabled) {
-                       return;
-               }
-               header(self::HEADER_NAME . ': ' . $this->_encode($data));
-       }
-
-       /**
-        * encodes the data to be sent along with the request
-        *
-        * @param array $data
-        * @return string
-        */
-       protected function _encode($data) {
-               return base64_encode(utf8_encode(json_encode($data)));
-       }
-
-       /**
-        * adds a setting
-        *
-        * @param string key
-        * @param mixed value
-        * @return void
-        */
-       public function addSetting($key, $value) {
-               $this->_settings[$key] = $value;
-       }
-
-       /**
-        * add ability to set multiple settings in one call
-        *
-        * @param array $settings
-        * @return void
-        */
-       public function addSettings(array $settings) {
-               foreach ($settings as $key => $value) {
-                       $this->addSetting($key, $value);
-               }
-       }
-
-       /**
-        * gets a setting
-        *
-        * @param string key
-        * @return mixed
-        */
-       public function getSetting($key) {
-               if (!isset($this->_settings[$key])) {
-                       return null;
-               }
-               return $this->_settings[$key];
-       }
-}
diff --git a/framework/library/ChromeLogger/fb.php b/framework/library/ChromeLogger/fb.php
deleted file mode 100644 (file)
index 18764e9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-function fb() {
-       $instance = CubeIT_Log_Chrome::getInstance();
-       $args = func_get_args();
-       return call_user_func_array(array($instance, 'log'), $args);
-}
\ No newline at end of file
index 0e134cc6ddbae495bde8fa0422b617c4553432b7..45e6dfd1e270c6e8a9c4dc23a14a7194e0a928b4 100644 (file)
@@ -40,7 +40,7 @@ class CubeIT_Application extends Zend_Application
                 define('CLI', false);
             }
 
-            $devOptions = array('firephp' => $options['dev'] && !CLI,
+            $devOptions = array('firephp' => false,
                 'profiler' => $options['dev']);
 
             $defaultPhpSettings = array('memory_limit' => '1G',
index 50a68026a3c014f84a79135f70d9c3ac7e505fb2..4ef19163ab8e3dc7a2416e9e867556d2b045c12c 100644 (file)
@@ -29,7 +29,6 @@ class CubeIT_Bootstrap_Base extends Zend_Application_Bootstrap_Bootstrap
        {
                self::$_bootstrap = $this;
 
-               $this->bootstrap('firephp');
                $this->bootstrap('config');
                $this->bootstrap('defaultLocale');
                $this->bootstrap('router');
@@ -53,24 +52,6 @@ class CubeIT_Bootstrap_Base extends Zend_Application_Bootstrap_Bootstrap
                return $fc;
        }
 
-       protected function _initFirephp()
-       {
-               CubeIT_Library::ChromeLogger();
-
-               $chrome = CubeIT_Log_Chrome::getInstance(true);
-               $enabled = $this->getOpt('firephp', false);
-               $chrome->setEnabled($enabled);
-
-               if (!$enabled) {
-                       return;
-               }
-
-               CubeIT_Log_Chrome::registerErrorHandler();
-               CubeIT_Log_Chrome::registerExceptionHandler();
-
-               CubeIT_Log_Chrome::info($this->getAppNamespace() . ' : ' . $this->getApplication()->getEnvironment());
-       }
-
        protected function _initConfig()
        {
 
index dee41495f62df8af38eb885a6d3ab6664f64ea14..a3f229fb3f0fbeac416578145c1c361ea298754d 100644 (file)
 <?php
 
-class CubeIT_CommandLine {
-
-       protected $program;
-       protected $args = array();
-       protected $env = array();
-       protected $cd = null;
-       protected $commande = null;
-       protected $output;
-       protected $temp_output = true;
-       protected $error;
-       protected $nohup = false;
-       protected $execTime;
-       protected $lang;
-       protected $ssh = null;
-       protected $longArgSeparator = '=';
-
-       function __construct($program, $output = null, $error = true) {
-               if (stristr($program, ' ')) {
-                       $program = '"' . $program . '"';
-               }
-               $this->program = $program;
-               $this->commande = null;
-               if (null === $output) {
-                       if (defined('DATA_PATH')) {
-                               $this->output = tempnam(DATA_PATH . '/temp', 'CubeIT_');
-                       } else {
-                               $this->output = tempnam(sys_get_temp_dir(), 'CubeIT');
-                       }
-               } else {
-                       $this->temp_output = false;
-                       $this->output = $output;
-               }
-               $this->error = $error;
-       }
-
-       public function setArg($name = null, $val = null) {
-               if (null === $name && null === $val) {
-                       return;
-               }
-               if (stristr($val, ' ') && !stristr($val, '>') && !stristr($val, '<')) {
-                       $val = '"' . $val . '"';
-               }
-               $this->args[] = array($name, $val);
-       }
-
-       public function __get($varname) {
-               if ($varname == 'output') {
-                       return file_get_contents($this->output);
-               } elseif ($varname == 'outputfile') {
-                       return $this->output;
-               } elseif ($varname == 'commande' || $varname == 'command') {
-                       if (null === $this->commande) {
-                               $this->makeCommande($this->output, $this->error);
-                       }
-                       return $this->commande;
-               } elseif ($varname == 'execTime') {
-                       return $this->execTime;
-               }
-       }
-
-       public function cd($path) {
-               $this->cd = $path;
-       }
-
-       public function setLang($lang) {
-               $this->setEnv('LANG', $lang);
-       }
-
-       public function setEnv($name, $val) {
-               if (PATH_SEPARATOR == ':') {
-                       $this->env[$name] = $val;
-               }
-       }
-
-       public function setPath($val) {
-               if (PATH_SEPARATOR == ':') {
-                       $this->setEnv('PATH', $val);
-               } else {
-                       $this->program = $val . '' . $this->program;
-               }
-       }
-
-       public function setNohup($val) {
-               $this->nohup = $val;
-       }
-
-       public function setManualArg($val) {
-               $this->args[] = array(null, $val);
-       }
-
-       protected function _preExecute() {
-
-       }
-
-       public function execute($fonction = 'shell_exec') {
-               $startTime = microtime(true);
-               $this->_preExecute();
-               if ($fonction instanceof CubeIT_Networking_SSH2) {
-                       $this->makeCommande();
-                       $o = $fonction->exec($this->commande);
-                       file_put_contents($this->output, $o['output'] . "\n\n---\n\n" . $o['error']);
-               } else if (null === $this->ssh) {
-                       $this->makeCommande($this->output, $this->error);
-                       $fonction($this->commande);
-               } else {
-                       $this->makeCommande();
-
-                       $key = '';
-                       if (null !== $this->ssh['key']) {
-                               $key = ' -i ' . $this->ssh['key'];
-                       }
-
-                       $c = 'echo "' . $this->commande . '" | ssh ' . $key . ' -p ' . $this->ssh['port'] . ' ' . $this->ssh['username'] . '@' . $this->ssh['host'] . ' \'bash -s\'';
-                       $c .= ' > ' . $this->output;
-                       if ($this->error) {
-                               $c .= ' 2>&1 ';
-                       }
-
-                       $fonction($c);
-               }
-               $endTime = microtime(true);
-               $this->execTime = $endTime - $startTime;
-       }
-
-       public function __set($varname, $value) {
-               $this->setArg($varname, $value);
-       }
-
-       public function __destruct() {
-               if ($this->temp_output && file_exists($this->output)) {
-                       //unlink($this->output);
-               }
-       }
-
-       public function setLongArgumentSeparator($separator = "=") {
-               $this->longArgSeparator = $separator;
-               return $this;
-       }
-
-       public function makeCommande($output = false, $error = false) {
-               $commande = $this->program;
-               $commandes = array();
-               foreach ($this->args as $arg) {
-                       if (strlen($arg[0]) == 1) {
-                               $commande .= ' -' . $arg[0];
-                               if (null !== $arg[1]) {
-                                       $commande .= ' ' . $arg[1];
-                               }
-                       } elseif (null === $arg[0]) {
-                               $commande .= ' ' . $arg[1];
-                       } else {
-                               if (substr($arg[0], 0, 1) == '-') {
-                                       $commande .= ' ' . $arg[0];
-                                       if (null !== $arg[1]) {
-                                               $commande .= ' ' . $arg[1];
-                                       }
-                               } else {
-                                       $commande .= ' --' . $arg[0];
-                                       if (null !== $arg[1]) {
-                                               $commande .= $this->longArgSeparator . $arg[1];
-                                       }
-                               }
-                       }
-               }
-
-               if (null !== $this->cd) {
-                       $commandes[] = 'cd ' . $this->cd;
-               }
-               if (count($this->env) > 0) {
-                       foreach ($this->env as $var => $val) {
-                               if ($var == 'PATH') {
-                                       $commandes[] = 'export ' . $var . '=$' . $var . ':' . $val;
-                               } else {
-                                       $commandes[] = 'export ' . $var . '=' . $val;
-                               }
-                       }
-               }
-
-               if ($this->nohup) {
-                       $commande = 'nohup ' . $commande;
-               }
-
-               $commandes[] = $commande;
-
-               $this->commande = implode(';', $commandes);
-
-               if ($output) {
-                       $this->commande .= ' > ' . $output;
-               }
-               if ($error) {
-                       $this->commande .= ' 2>&1 ';
-               }
-               if ($this->nohup) {
-                       $this->commande .= ' & echo $!';
-               }
-       }
-
-       public static function getArgs($argv) {
-               $filename = array_shift($argv);
-
-               $i = 0;
-               $res = array();
-               $skip = false;
-               foreach ($argv as $j => $v) {
-                       if ($skip) {
-                               $skip = false;
-                               continue;
-                       }
-                       if (substr($v, 0, 2) == '--') {
-                               list($k, $value) = explode('=', $v);
-                               $res[trim($k, '-')] = trim($value, ' "\'');
-                       } elseif (substr($v, 0, 1) == '-') {
-                               $res[trim($v, '-')] = trim($argv[$j + 1], ' \'"');
-                               $skip = true;
-                       } else {
-                               $res[$i] = trim($v, "'\" ");
-                       }
-                       $i++;
-               }
-               return $res;
-       }
-
-       public static function getCommandPath($command) {
-               $bootstrap = Bootstrap::getInstance();
-
-               $bin = $bootstrap->getOption('bin');
-               if (isset($bin[$command]) && $bin[$command]) {
-                       return $bin[$command];
-               }
-               return false;
-       }
-
-       public function setSSH($host, $username, $password, $port = 22, $key = null) {
-               $this->ssh = array('host' => $host, 'username' => $username, 'password' => $password, 'port' => $port, 'key' => $key);
-       }
-
-       public function debug($debugfunc = array('ChromePhp', 'log')) {
-
-               $e = explode('/', $this->program);
-               $p = array_pop($e);
-               file_put_contents('/tmp/' . $p . '.' . microtime(true) . '.txt', $this->commande . "\n\n" . file_get_contents($this->output));
-               //              if (!is_callable($debugfunc)) {
-               //                      return;
-               //              }
-
-               /*if ($debugfunc == 'fb') {
-                       call_user_func($debugfunc, file_get_contents($this->output), $this->commande);
-               } else {
-                       call_user_func($debugfunc, array('commande' => $this->commande, 'output' => file_get_contents($this->output)));
-               }*/
-       }
+class CubeIT_CommandLine
+{
+
+    protected $program;
+    protected $args = array();
+    protected $env = array();
+    protected $cd = null;
+    protected $commande = null;
+    protected $output;
+    protected $temp_output = true;
+    protected $error;
+    protected $nohup = false;
+    protected $execTime;
+    protected $lang;
+    protected $ssh = null;
+    protected $longArgSeparator = '=';
+
+    function __construct($program, $output = null, $error = true)
+    {
+        if (stristr($program, ' ')) {
+            $program = '"' . $program . '"';
+        }
+        $this->program = $program;
+        $this->commande = null;
+        if (null === $output) {
+            if (defined('DATA_PATH')) {
+                $this->output = tempnam(DATA_PATH . '/temp', 'CubeIT_');
+            } else {
+                $this->output = tempnam(sys_get_temp_dir(), 'CubeIT');
+            }
+        } else {
+            $this->temp_output = false;
+            $this->output = $output;
+        }
+        $this->error = $error;
+    }
+
+    public function setArg($name = null, $val = null)
+    {
+        if (null === $name && null === $val) {
+            return;
+        }
+        if (stristr($val, ' ') && !stristr($val, '>') && !stristr($val, '<')) {
+            $val = '"' . $val . '"';
+        }
+        $this->args[] = array($name, $val);
+    }
+
+    public function __get($varname)
+    {
+        if ($varname == 'output') {
+            return file_get_contents($this->output);
+        } elseif ($varname == 'outputfile') {
+            return $this->output;
+        } elseif ($varname == 'commande' || $varname == 'command') {
+            if (null === $this->commande) {
+                $this->makeCommande($this->output, $this->error);
+            }
+            return $this->commande;
+        } elseif ($varname == 'execTime') {
+            return $this->execTime;
+        }
+    }
+
+    public function cd($path)
+    {
+        $this->cd = $path;
+    }
+
+    public function setLang($lang)
+    {
+        $this->setEnv('LANG', $lang);
+    }
+
+    public function setEnv($name, $val)
+    {
+        if (PATH_SEPARATOR == ':') {
+            $this->env[$name] = $val;
+        }
+    }
+
+    public function setPath($val)
+    {
+        if (PATH_SEPARATOR == ':') {
+            $this->setEnv('PATH', $val);
+        } else {
+            $this->program = $val . '' . $this->program;
+        }
+    }
+
+    public function setNohup($val)
+    {
+        $this->nohup = $val;
+    }
+
+    public function setManualArg($val)
+    {
+        $this->args[] = array(null, $val);
+    }
+
+    protected function _preExecute()
+    {
+
+    }
+
+    public function execute($fonction = 'shell_exec')
+    {
+        $startTime = microtime(true);
+        $this->_preExecute();
+        if ($fonction instanceof CubeIT_Networking_SSH2) {
+            $this->makeCommande();
+            $o = $fonction->exec($this->commande);
+            file_put_contents($this->output, $o['output'] . "\n\n---\n\n" . $o['error']);
+        } else if (null === $this->ssh) {
+            $this->makeCommande($this->output, $this->error);
+            $fonction($this->commande);
+        } else {
+            $this->makeCommande();
+
+            $key = '';
+            if (null !== $this->ssh['key']) {
+                $key = ' -i ' . $this->ssh['key'];
+            }
+
+            $c = 'echo "' . $this->commande . '" | ssh ' . $key . ' -p ' . $this->ssh['port'] . ' ' . $this->ssh['username'] . '@' . $this->ssh['host'] . ' \'bash -s\'';
+            $c .= ' > ' . $this->output;
+            if ($this->error) {
+                $c .= ' 2>&1 ';
+            }
+
+            $fonction($c);
+        }
+        $endTime = microtime(true);
+        $this->execTime = $endTime - $startTime;
+    }
+
+    public function __set($varname, $value)
+    {
+        $this->setArg($varname, $value);
+    }
+
+    public function __destruct()
+    {
+        if ($this->temp_output && file_exists($this->output)) {
+            //unlink($this->output);
+        }
+    }
+
+    public function setLongArgumentSeparator($separator = "=")
+    {
+        $this->longArgSeparator = $separator;
+        return $this;
+    }
+
+    public function makeCommande($output = false, $error = false)
+    {
+        $commande = $this->program;
+        $commandes = array();
+        foreach ($this->args as $arg) {
+            if (strlen($arg[0]) == 1) {
+                $commande .= ' -' . $arg[0];
+                if (null !== $arg[1]) {
+                    $commande .= ' ' . $arg[1];
+                }
+            } elseif (null === $arg[0]) {
+                $commande .= ' ' . $arg[1];
+            } else {
+                if (substr($arg[0], 0, 1) == '-') {
+                    $commande .= ' ' . $arg[0];
+                    if (null !== $arg[1]) {
+                        $commande .= ' ' . $arg[1];
+                    }
+                } else {
+                    $commande .= ' --' . $arg[0];
+                    if (null !== $arg[1]) {
+                        $commande .= $this->longArgSeparator . $arg[1];
+                    }
+                }
+            }
+        }
+
+        if (null !== $this->cd) {
+            $commandes[] = 'cd ' . $this->cd;
+        }
+        if (count($this->env) > 0) {
+            foreach ($this->env as $var => $val) {
+                if ($var == 'PATH') {
+                    $commandes[] = 'export ' . $var . '=$' . $var . ':' . $val;
+                } else {
+                    $commandes[] = 'export ' . $var . '=' . $val;
+                }
+            }
+        }
+
+        if ($this->nohup) {
+            $commande = 'nohup ' . $commande;
+        }
+
+        $commandes[] = $commande;
+
+        $this->commande = implode(';', $commandes);
+
+        if ($output) {
+            $this->commande .= ' > ' . $output;
+        }
+        if ($error) {
+            $this->commande .= ' 2>&1 ';
+        }
+        if ($this->nohup) {
+            $this->commande .= ' & echo $!';
+        }
+    }
+
+    public static function getArgs($argv)
+    {
+        $filename = array_shift($argv);
+
+        $i = 0;
+        $res = array();
+        $skip = false;
+        foreach ($argv as $j => $v) {
+            if ($skip) {
+                $skip = false;
+                continue;
+            }
+            if (substr($v, 0, 2) == '--') {
+                list($k, $value) = explode('=', $v);
+                $res[trim($k, '-')] = trim($value, ' "\'');
+            } elseif (substr($v, 0, 1) == '-') {
+                $res[trim($v, '-')] = trim($argv[$j + 1], ' \'"');
+                $skip = true;
+            } else {
+                $res[$i] = trim($v, "'\" ");
+            }
+            $i++;
+        }
+        return $res;
+    }
+
+    public static function getCommandPath($command)
+    {
+        $bootstrap = Bootstrap::getInstance();
+
+        $bin = $bootstrap->getOption('bin');
+        if (isset($bin[$command]) && $bin[$command]) {
+            return $bin[$command];
+        }
+        return false;
+    }
+
+    public function setSSH($host, $username, $password, $port = 22, $key = null)
+    {
+        $this->ssh = array('host' => $host, 'username' => $username, 'password' => $password, 'port' => $port, 'key' => $key);
+    }
+
+    public function debug()
+    {
+
+        $e = explode('/', $this->program);
+        $p = array_pop($e);
+        file_put_contents('/tmp/' . $p . '.' . microtime(true) . '.txt', $this->commande . "\n\n" . file_get_contents($this->output));
+
+    }
 
 }
index f9f1b5c6c2c1a7c127aff29bfbd3e9be4e797ace..ed4d8f6c51fead2d30f61916cf1424c4d6fba126 100644 (file)
@@ -52,7 +52,6 @@ class CubeIT_Controller_ErrorController extends CubeIT_Controller_PageController
 
         $action = 'e' . $this->view->code . 'Action';
         if (method_exists($this, $action)) {
-            ChromePhp::error($this->view->code . ' : ' . $this->view->message);
             $this->forward('e' . $this->view->code);
         }
 
index 76789be3b45dd2cf5a8dda179e1794fbc9af02e9..fe05d97319dc5b6f3936067696f70b5d890b728a 100644 (file)
@@ -32,7 +32,6 @@ class CubeIT_Db_Adapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Mysql {
                        // Then drop the test view
                        $this->dropView($view . '_test');
                } catch (Exception $e) {
-                       ChromePhp::error($e);
                        return;
                }
                $this->dropView($view);
diff --git a/framework/library/CubeIT/Firephp.php b/framework/library/CubeIT/Firephp.php
deleted file mode 100644 (file)
index 7be8a69..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-class CubeIT_Firephp {
-
-       public static function registerExceptionHandler() {
-               return set_exception_handler(array('CubeIT_Firephp', 'exceptionHandler'));
-       }
-
-       public static function exceptionHandler($e) {
-               if (headers_sent()) {
-                       print_r($e);
-                       return;
-               }
-               fb($e, FirePHP::EXCEPTION);
-       }
-
-       public static function registerErrorHandler() {
-               return set_error_handler(array('CubeIT_Firephp', 'errorHandler'), E_ALL | E_STRICT);
-       }
-
-       public static function disable() {
-               self::enable(false);
-       }
-
-       public static function enable($enable = true) {
-
-        if (class_exists('FirePHP', false)) {
-
-            $instance = FirePHP::getInstance();
-            $instance->setEnabled($enable);
-            $profiler = Bootstrap::getInstance()->getDb()->getProfiler();
-            if (!is_null($profiler)) {
-                $profiler->setEnabled($enable);
-            }
-
-        }
-       }
-
-       public static function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) {
-               if (!(error_reporting() & $errno)) {
-                       return;
-               }
-               if (headers_sent()) {
-                       return;
-               }
-               switch ($errno) {
-                       case E_ERROR:
-                       case E_PARSE:
-                       case E_CORE_ERROR:
-                       case E_COMPILE_ERROR:
-                       case E_USER_ERROR:
-                       case E_RECOVERABLE_ERROR:
-                               $type = FirePHP::ERROR;
-                               break;
-                       case E_WARNING:
-                       case E_CORE_WARNING:
-                       case E_COMPILE_WARNING:
-                       case E_USER_WARNING:
-                               $type = FirePHP::WARN;
-                               break;
-                       default:
-                               $type = FirePHP::INFO;
-                               break;
-               }
-
-               $str = $errfile . ' at line ' . $errline;
-               fb($str, $errstr, $type);
-
-               if ($errno == E_RECOVERABLE_ERROR) {
-                       return true;
-               }
-               return true;
-       }
-
-}
-
index ab129d927e994208ba1c216227aa111f62acfc53..1d4dc89060710de9c6dffc3576f42c4c9374faa8 100644 (file)
@@ -46,15 +46,6 @@ class CubeIT_Library {
                require_once LIBRARY_PATH . '/Compat/' . CubeIT_Text::ucfirst($library) . '.php';
        }
 
-       public static function ChromeLogger() {
-               if (isset(self::$_loaded['ChromeLogger'])) {
-                       return;
-               }
-               self::$_loaded['ChromeLogger'] = true;
-               require_once LIBRARY_PATH . '/ChromeLogger/ChromePhp.php';
-               require_once LIBRARY_PATH . '/ChromeLogger/fb.php';
-       }
-
        public static function Doctrine() {
                if (isset(self::$_loaded['Doctrine'])) {
                        return;
@@ -241,10 +232,6 @@ class CubeIT_Library {
                require_once 'Facebook/facebook.php';
        }
 
-       public static function firephp() {
-               return self::ChromeLogger();
-       }
-
        public static function autoloader() {
                if (!class_exists('Zend_Loader_StandardAutoloader')) {
                        require_once LIBRARY_PATH . '/Zend/Loader/StandardAutoloader.php';
diff --git a/framework/library/CubeIT/Log/Chrome.php b/framework/library/CubeIT/Log/Chrome.php
deleted file mode 100644 (file)
index bcd2ef8..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-
-CubeIT_Library::ChromeLogger();
-
-class CubeIT_Log_Chrome extends ChromePhp {
-
-       protected static $throwErrorExceptions;
-       protected static $inExceptionHandler;
-
-       /**
-        * gets instance of this class
-        *
-        * @return ChromePhp
-        */
-       public static function getInstance() {
-               if (static::$_instance === null) {
-                       static::$_instance = new static();
-               }
-               return static::$_instance;
-       }
-
-       /**
-        * Register FirePHP as your error handler
-        *
-        * Will throw exceptions for each php error.
-        *
-        * @return mixed Returns a string containing the previously defined error handler (if any)
-        */
-       public static function registerErrorHandler($throwErrorExceptions = false) {
-               //NOTE: The following errors will not be caught by this error handler:
-               //      E_ERROR, E_PARSE, E_CORE_ERROR,
-               //      E_CORE_WARNING, E_COMPILE_ERROR,
-               //      E_COMPILE_WARNING, E_STRICT
-
-               static::$throwErrorExceptions = $throwErrorExceptions;
-
-               return set_error_handler('CubeIT_Log_Chrome::errorHandler', E_ALL);
-       }
-
-       /**
-        * FirePHP's error handler
-        *
-        * Throws exception for each php error that will occur.
-        *
-        * @param int $errno
-        * @param string $errstr
-        * @param string $errfile
-        * @param int $errline
-        * @param array $errcontext
-        */
-       public static function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) {
-               // Don't throw exception if error reporting is switched off
-               if (error_reporting() == 0) {
-                       return;
-               }
-               // Only throw exceptions for errors we are asking for
-               if (error_reporting() & $errno) {
-
-                       $exception = new ErrorException($errstr, 0, $errno, $errfile, $errline);
-                       if (static::$throwErrorExceptions) {
-                               throw $exception;
-                       } else {
-                               static::error($exception);
-                       }
-               }
-               return false;
-       }
-
-       /**
-        * Register FirePHP as your exception handler
-        *
-        * @return mixed Returns the name of the previously defined exception handler,
-        *               or NULL on error.
-        *               If no previous handler was defined, NULL is also returned.
-        */
-       public static function registerExceptionHandler() {
-               return set_exception_handler('CubeIT_Log_Chrome::exceptionHandler');
-       }
-
-       /**
-        * FirePHP's exception handler
-        *
-        * Logs all exceptions to your firebug console and then stops the script.
-        *
-        * @param Exception $Exception
-        * @throws Exception
-        */
-       public static function exceptionHandler($Exception) {
-
-               static::$inExceptionHandler = true;
-
-               header('HTTP/1.1 500 Internal Server Error');
-
-               try {
-                       self::error($Exception);
-               } catch (Exception $e) {
-                       echo 'We had an exception: ' . $e;
-               }
-               self::$inExceptionHandler = false;
-       }
-}
\ No newline at end of file
index 40cc215ac00115c1a303855510d2564ec6dfa760..7913e76d2b5d97e127d62639d02ef0f982c41a8e 100644 (file)
@@ -336,7 +336,6 @@ class CubeIT_Services_Magento {
                                return $res;
                        }
                } catch (Exception $e) {
-                       fb($name . ' :: ' . $e->getMessage(), ChromePhp::ERROR);
                        //fb($e);
                        //fb($this->_client->__getLastRequest());
                        //fb($this->_client->__getLastResponse());
index dbbcc4351a1ebd81dfd63d9d391667dac3906e30..333b7b80cab85a9bf30bd7aa4d9b56a7640dcdec 100644 (file)
@@ -334,7 +334,6 @@ class CubeIT_Services_Magento_Cart {
                }
 
                //$this->resetIfIsOrder();
-               CubeIT_Log_Chrome::log($this->_datas, 'Shopping Cart Info');
                $authUser = Bootstrap::getInstance()->getAuthUser();
 
                if ($authUser instanceof CubeIT_Services_Magento_Model_User && $authUser->getMagento()) {
index af693f80b421b4608f7c56f1e242a0340ac605ae..68ce65f0769f003227974c1e8b542b7fcba160c6 100644 (file)
@@ -23,7 +23,6 @@ class CubeIT_View_Helper_StyleLess extends CubeIT_View_Helper_Abstract {
 
                                $cache->save($res, $cacheid, array('contents'));
                        } catch (Exception $e) {
-                               ChromePhp::error($e);
                        }
                }
 
diff --git a/framework/library/FirePHPCore/FirePHP.class.php b/framework/library/FirePHPCore/FirePHP.class.php
deleted file mode 100644 (file)
index bca6fac..0000000
+++ /dev/null
@@ -1,1784 +0,0 @@
-<?php
-/**
- * *** BEGIN LICENSE BLOCK *****
- *  
- * This file is part of FirePHP (http://www.firephp.org/).
- * 
- * Software License Agreement (New BSD License)
- * 
- * Copyright (c) 2006-2010, Christoph Dorn
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 
- *     * Redistributions of source code must retain the above copyright notice,
- *       this list of conditions and the following disclaimer.
- * 
- *     * Redistributions in binary form must reproduce the above copyright notice,
- *       this list of conditions and the following disclaimer in the documentation
- *       and/or other materials provided with the distribution.
- * 
- *     * Neither the name of Christoph Dorn nor the names of its
- *       contributors may be used to endorse or promote products derived from this
- *       software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
- * ***** END LICENSE BLOCK *****
- * 
- * @copyright       Copyright (C) 2007-2009 Christoph Dorn
- * @author          Christoph Dorn <christoph@christophdorn.com>
- * @license         http://www.opensource.org/licenses/bsd-license.php
- * @package         FirePHPCore
- */
-
-/**
- * @see http://code.google.com/p/firephp/issues/detail?id=112
- */
-if (!defined('E_STRICT')) {
-    define('E_STRICT', 2048);
-}
-if (!defined('E_RECOVERABLE_ERROR')) {
-    define('E_RECOVERABLE_ERROR', 4096);
-}
-if (!defined('E_DEPRECATED')) {
-    define('E_DEPRECATED', 8192);
-}
-if (!defined('E_USER_DEPRECATED')) {
-    define('E_USER_DEPRECATED', 16384);
-} 
-/**
- * Sends the given data to the FirePHP Firefox Extension.
- * The data can be displayed in the Firebug Console or in the
- * "Server" request tab.
- * 
- * For more information see: http://www.firephp.org/
- * 
- * @copyright       Copyright (C) 2007-2009 Christoph Dorn
- * @author          Christoph Dorn <christoph@christophdorn.com>
- * @license         http://www.opensource.org/licenses/bsd-license.php
- * @package         FirePHPCore
- */
-class FirePHP {
-
-    /**
-     * FirePHP version
-     *
-     * @var string
-     */
-    const VERSION = '0.3';    // @pinf replace '0.3' with '%%package.version%%'
-
-    /**
-     * Firebug LOG level
-     *
-     * Logs a message to firebug console.
-     * 
-     * @var string
-     */
-    const LOG = 'LOG';
-  
-    /**
-     * Firebug INFO level
-     *
-     * Logs a message to firebug console and displays an info icon before the message.
-     * 
-     * @var string
-     */
-    const INFO = 'INFO';
-    
-    /**
-     * Firebug WARN level
-     *
-     * Logs a message to firebug console, displays an warning icon before the message and colors the line turquoise.
-     * 
-     * @var string
-     */
-    const WARN = 'WARN';
-    
-    /**
-     * Firebug ERROR level
-     *
-     * Logs a message to firebug console, displays an error icon before the message and colors the line yellow. Also increments the firebug error count.
-     * 
-     * @var string
-     */
-    const ERROR = 'ERROR';
-    
-    /**
-     * Dumps a variable to firebug's server panel
-     *
-     * @var string
-     */
-    const DUMP = 'DUMP';
-    
-    /**
-     * Displays a stack trace in firebug console
-     *
-     * @var string
-     */
-    const TRACE = 'TRACE';
-    
-    /**
-     * Displays an exception in firebug console
-     * 
-     * Increments the firebug error count.
-     *
-     * @var string
-     */
-    const EXCEPTION = 'EXCEPTION';
-    
-    /**
-     * Displays an table in firebug console
-     *
-     * @var string
-     */
-    const TABLE = 'TABLE';
-    
-    /**
-     * Starts a group in firebug console
-     * 
-     * @var string
-     */
-    const GROUP_START = 'GROUP_START';
-    
-    /**
-     * Ends a group in firebug console
-     * 
-     * @var string
-     */
-    const GROUP_END = 'GROUP_END';
-    
-    /**
-     * Singleton instance of FirePHP
-     *
-     * @var FirePHP
-     */
-    protected static $instance = null;
-    
-    /**
-     * Flag whether we are logging from within the exception handler
-     * 
-     * @var boolean
-     */
-    protected $inExceptionHandler = false;
-    
-    /**
-     * Flag whether to throw PHP errors that have been converted to ErrorExceptions
-     * 
-     * @var boolean
-     */
-    protected $throwErrorExceptions = true;
-    
-    /**
-     * Flag whether to convert PHP assertion errors to Exceptions
-     * 
-     * @var boolean
-     */
-    protected $convertAssertionErrorsToExceptions = true;
-    
-    /**
-     * Flag whether to throw PHP assertion errors that have been converted to Exceptions
-     * 
-     * @var boolean
-     */
-    protected $throwAssertionExceptions = false;
-
-    /**
-     * Wildfire protocol message index
-     *
-     * @var int
-     */
-    protected $messageIndex = 1;
-    
-    /**
-     * Options for the library
-     * 
-     * @var array
-     */
-    protected $options = array('maxDepth' => 10,
-                               'maxObjectDepth' => 5,
-                               'maxArrayDepth' => 5,
-                               'useNativeJsonEncode' => true,
-                               'includeLineNumbers' => true);
-
-    /**
-     * Filters used to exclude object members when encoding
-     * 
-     * @var array
-     */
-    protected $objectFilters = array(
-        'firephp' => array('objectStack', 'instance', 'json_objectStack'),
-        'firephp_test_class' => array('objectStack', 'instance', 'json_objectStack')
-    );
-
-    /**
-     * A stack of objects used to detect recursion during object encoding
-     * 
-     * @var object
-     */
-    protected $objectStack = array();
-
-    /**
-     * Flag to enable/disable logging
-     * 
-     * @var boolean
-     */
-    protected $enabled = true;
-
-    /**
-     * The insight console to log to if applicable
-     * 
-     * @var object
-     */
-    protected $logToInsightConsole = null;
-
-    /**
-     * When the object gets serialized only include specific object members.
-     * 
-     * @return array
-     */  
-    public function __sleep()
-    {
-        return array('options','objectFilters','enabled');
-    }
-    
-    /**
-     * Gets singleton instance of FirePHP
-     *
-     * @param boolean $AutoCreate
-     * @return FirePHP
-     */
-    public static function getInstance($AutoCreate = false)
-    {
-        if ($AutoCreate===true && !self::$instance) {
-            self::init();
-        }
-        return self::$instance;
-    }
-    
-    /**
-     * Creates FirePHP object and stores it for singleton access
-     *
-     * @return FirePHP
-     */
-    public static function init()
-    {
-        return self::setInstance(new self());
-    }
-
-    /**
-     * Set the instance of the FirePHP singleton
-     * 
-     * @param FirePHP $instance The FirePHP object instance
-     * @return FirePHP
-     */
-    public static function setInstance($instance)
-    {
-        return self::$instance = $instance;
-    }
-
-    /**
-     * Set an Insight console to direct all logging calls to
-     * 
-     * @param object $console The console object to log to
-     * @return void
-     */
-    public function setLogToInsightConsole($console)
-    {
-        if(is_string($console)) {
-            if(get_class($this)!='FirePHP_Insight' && !is_subclass_of($this, 'FirePHP_Insight')) {
-                throw new Exception('FirePHP instance not an instance or subclass of FirePHP_Insight!');
-            }
-            $this->logToInsightConsole = $this->to('request')->console($console);
-        } else {
-            $this->logToInsightConsole = $console;
-        }
-    }
-
-    /**
-     * Enable and disable logging to Firebug
-     * 
-     * @param boolean $Enabled TRUE to enable, FALSE to disable
-     * @return void
-     */
-    public function setEnabled($Enabled)
-    {
-       $this->enabled = $Enabled;
-    }
-    
-    /**
-     * Check if logging is enabled
-     * 
-     * @return boolean TRUE if enabled
-     */
-    public function getEnabled()
-    {
-        return $this->enabled;
-    }
-    
-    /**
-     * Specify a filter to be used when encoding an object
-     * 
-     * Filters are used to exclude object members.
-     * 
-     * @param string $Class The class name of the object
-     * @param array $Filter An array of members to exclude
-     * @return void
-     */
-    public function setObjectFilter($Class, $Filter)
-    {
-        $this->objectFilters[strtolower($Class)] = $Filter;
-    }
-  
-    /**
-     * Set some options for the library
-     * 
-     * Options:
-     *  - maxDepth: The maximum depth to traverse (default: 10)
-     *  - maxObjectDepth: The maximum depth to traverse objects (default: 5)
-     *  - maxArrayDepth: The maximum depth to traverse arrays (default: 5)
-     *  - useNativeJsonEncode: If true will use json_encode() (default: true)
-     *  - includeLineNumbers: If true will include line numbers and filenames (default: true)
-     * 
-     * @param array $Options The options to be set
-     * @return void
-     */
-    public function setOptions($Options)
-    {
-        $this->options = array_merge($this->options,$Options);
-    }
-
-    /**
-     * Get options from the library
-     *
-     * @return array The currently set options
-     */
-    public function getOptions()
-    {
-        return $this->options;
-    }
-
-    /**
-     * Set an option for the library
-     * 
-     * @param string $Name
-     * @param mixed $Value
-     * @throws Exception
-     * @return void
-     */  
-    public function setOption($Name, $Value)
-    {
-        if (!isset($this->options[$Name])) {
-            throw $this->newException('Unknown option: ' . $Name);
-        }
-        $this->options[$Name] = $Value;
-    }
-
-    /**
-     * Get an option from the library
-     *
-     * @param string $Name
-     * @throws Exception
-     * @return mixed
-     */
-    public function getOption($Name)
-    {
-        if (!isset($this->options[$Name])) {
-            throw $this->newException('Unknown option: ' . $Name);
-        }
-        return $this->options[$Name];
-    }
-
-    /**
-     * Register FirePHP as your error handler
-     * 
-     * Will throw exceptions for each php error.
-     * 
-     * @return mixed Returns a string containing the previously defined error handler (if any)
-     */
-    public function registerErrorHandler($throwErrorExceptions = false)
-    {
-        //NOTE: The following errors will not be caught by this error handler:
-        //      E_ERROR, E_PARSE, E_CORE_ERROR,
-        //      E_CORE_WARNING, E_COMPILE_ERROR,
-        //      E_COMPILE_WARNING, E_STRICT
-    
-        $this->throwErrorExceptions = $throwErrorExceptions;
-    
-        return set_error_handler(array($this,'errorHandler'),E_ALL);     
-    }
-
-    /**
-     * FirePHP's error handler
-     * 
-     * Throws exception for each php error that will occur.
-     *
-     * @param int $errno
-     * @param string $errstr
-     * @param string $errfile
-     * @param int $errline
-     * @param array $errcontext
-     */
-    public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext)
-    {
-        // Don't throw exception if error reporting is switched off
-        if (error_reporting() == 0) {
-            return;
-        }
-        // Only throw exceptions for errors we are asking for
-        if (error_reporting() & $errno) {
-
-            $exception = new ErrorException($errstr, 0, $errno, $errfile, $errline);
-            if ($this->throwErrorExceptions) {
-                throw $exception;
-            } else {
-                $this->fb($exception);
-            }
-        }
-    }
-  
-    /**
-     * Register FirePHP as your exception handler
-     * 
-     * @return mixed Returns the name of the previously defined exception handler,
-     *               or NULL on error.
-     *               If no previous handler was defined, NULL is also returned.
-     */
-    public function registerExceptionHandler()
-    {
-        return set_exception_handler(array($this,'exceptionHandler'));     
-    }
-  
-    /**
-     * FirePHP's exception handler
-     * 
-     * Logs all exceptions to your firebug console and then stops the script.
-     *
-     * @param Exception $Exception
-     * @throws Exception
-     */
-    function exceptionHandler($Exception)
-    {
-    
-        $this->inExceptionHandler = true;
-    
-        header('HTTP/1.1 500 Internal Server Error');
-    
-        try {
-            $this->fb($Exception);
-        } catch (Exception $e) {
-            echo 'We had an exception: ' . $e;
-        }
-        $this->inExceptionHandler = false;
-    }
-  
-    /**
-     * Register FirePHP driver as your assert callback
-     * 
-     * @param boolean $convertAssertionErrorsToExceptions
-     * @param boolean $throwAssertionExceptions
-     * @return mixed Returns the original setting or FALSE on errors
-     */
-    public function registerAssertionHandler($convertAssertionErrorsToExceptions = true, $throwAssertionExceptions = false)
-    {
-        $this->convertAssertionErrorsToExceptions = $convertAssertionErrorsToExceptions;
-        $this->throwAssertionExceptions = $throwAssertionExceptions;
-        
-        if ($throwAssertionExceptions && !$convertAssertionErrorsToExceptions) {
-            throw $this->newException('Cannot throw assertion exceptions as assertion errors are not being converted to exceptions!');
-        }
-        
-        return assert_options(ASSERT_CALLBACK, array($this, 'assertionHandler'));
-    }
-  
-    /**
-     * FirePHP's assertion handler
-     *
-     * Logs all assertions to your firebug console and then stops the script.
-     *
-     * @param string $file File source of assertion
-     * @param int    $line Line source of assertion
-     * @param mixed  $code Assertion code
-     */
-    public function assertionHandler($file, $line, $code)
-    {
-        if ($this->convertAssertionErrorsToExceptions) {
-          
-          $exception = new ErrorException('Assertion Failed - Code[ '.$code.' ]', 0, null, $file, $line);
-    
-          if ($this->throwAssertionExceptions) {
-              throw $exception;
-          } else {
-              $this->fb($exception);
-          }
-        
-        } else {
-            $this->fb($code, 'Assertion Failed', FirePHP::ERROR, array('File'=>$file,'Line'=>$line));
-        }
-    }
-  
-    /**
-     * Start a group for following messages.
-     * 
-     * Options:
-     *   Collapsed: [true|false]
-     *   Color:     [#RRGGBB|ColorName]
-     *
-     * @param string $Name
-     * @param array $Options OPTIONAL Instructions on how to log the group
-     * @return true
-     * @throws Exception
-     */
-    public function group($Name, $Options = null)
-    {
-    
-        if (!$Name) {
-            throw $this->newException('You must specify a label for the group!');
-        }
-        
-        if ($Options) {
-            if (!is_array($Options)) {
-                throw $this->newException('Options must be defined as an array!');
-            }
-            if (array_key_exists('Collapsed', $Options)) {
-                $Options['Collapsed'] = ($Options['Collapsed'])?'true':'false';
-            }
-        }
-        
-        return $this->fb(null, $Name, FirePHP::GROUP_START, $Options);
-    }
-  
-    /**
-     * Ends a group you have started before
-     *
-     * @return true
-     * @throws Exception
-     */
-    public function groupEnd()
-    {
-        return $this->fb(null, null, FirePHP::GROUP_END);
-    }
-
-    /**
-     * Log object with label to firebug console
-     *
-     * @see FirePHP::LOG
-     * @param mixes $Object
-     * @param string $Label
-     * @return true
-     * @throws Exception
-     */
-    public function log($Object, $Label = null, $Options = array())
-    {
-        return $this->fb($Object, $Label, FirePHP::LOG, $Options);
-    } 
-
-    /**
-     * Log object with label to firebug console
-     *
-     * @see FirePHP::INFO
-     * @param mixes $Object
-     * @param string $Label
-     * @return true
-     * @throws Exception
-     */
-    public function info($Object, $Label = null, $Options = array())
-    {
-        return $this->fb($Object, $Label, FirePHP::INFO, $Options);
-    } 
-
-    /**
-     * Log object with label to firebug console
-     *
-     * @see FirePHP::WARN
-     * @param mixes $Object
-     * @param string $Label
-     * @return true
-     * @throws Exception
-     */
-    public function warn($Object, $Label = null, $Options = array())
-    {
-        return $this->fb($Object, $Label, FirePHP::WARN, $Options);
-    } 
-
-    /**
-     * Log object with label to firebug console
-     *
-     * @see FirePHP::ERROR
-     * @param mixes $Object
-     * @param string $Label
-     * @return true
-     * @throws Exception
-     */
-    public function error($Object, $Label = null, $Options = array())
-    {
-        return $this->fb($Object, $Label, FirePHP::ERROR, $Options);
-    } 
-
-    /**
-     * Dumps key and variable to firebug server panel
-     *
-     * @see FirePHP::DUMP
-     * @param string $Key
-     * @param mixed $Variable
-     * @return true
-     * @throws Exception
-     */
-    public function dump($Key, $Variable, $Options = array())
-    {
-        if (!is_string($Key)) {
-            throw $this->newException('Key passed to dump() is not a string');
-        }
-        if (strlen($Key)>100) {
-            throw $this->newException('Key passed to dump() is longer than 100 characters');
-        }
-        if (!preg_match_all('/^[a-zA-Z0-9-_\.:]*$/', $Key, $m)) {
-            throw $this->newException('Key passed to dump() contains invalid characters [a-zA-Z0-9-_\.:]');
-        }
-        return $this->fb($Variable, $Key, FirePHP::DUMP, $Options);
-    }
-  
-    /**
-     * Log a trace in the firebug console
-     *
-     * @see FirePHP::TRACE
-     * @param string $Label
-     * @return true
-     * @throws Exception
-     */
-    public function trace($Label)
-    {
-        return $this->fb($Label, FirePHP::TRACE);
-    } 
-
-    /**
-     * Log a table in the firebug console
-     *
-     * @see FirePHP::TABLE
-     * @param string $Label
-     * @param string $Table
-     * @return true
-     * @throws Exception
-     */
-    public function table($Label, $Table, $Options = array())
-    {
-        return $this->fb($Table, $Label, FirePHP::TABLE, $Options);
-    }
-
-    /**
-     * Insight API wrapper
-     * 
-     * @see Insight_Helper::to()
-     */
-    public static function to()
-    {
-        $instance = self::getInstance();
-        if (!method_exists($instance, "_to")) {
-            throw new Exception("FirePHP::to() implementation not loaded");
-        }
-        $args = func_get_args();
-        return call_user_func_array(array($instance, '_to'), $args);
-    }
-
-    /**
-     * Insight API wrapper
-     * 
-     * @see Insight_Helper::plugin()
-     */
-    public static function plugin()
-    {
-        $instance = self::getInstance();
-        if (!method_exists($instance, "_plugin")) {
-            throw new Exception("FirePHP::plugin() implementation not loaded");
-        }
-        $args = func_get_args();
-        return call_user_func_array(array($instance, '_plugin'), $args);
-    }
-
-    /**
-     * Check if FirePHP is installed on client
-     *
-     * @return boolean
-     */
-    public function detectClientExtension()
-    {
-        // Check if FirePHP is installed on client via User-Agent header
-        if (@preg_match_all('/\sFirePHP\/([\.\d]*)\s?/si',$this->getUserAgent(),$m) &&
-           version_compare($m[1][0],'0.0.6','>=')) {
-            return true;
-        } else
-        // Check if FirePHP is installed on client via X-FirePHP-Version header
-        if (@preg_match_all('/^([\.\d]*)$/si',$this->getRequestHeader("X-FirePHP-Version"),$m) &&
-           version_compare($m[1][0],'0.0.6','>=')) {
-            return true;
-        }
-        return false;
-    }
-    /**
-     * Log varible to Firebug
-     * 
-     * @see http://www.firephp.org/Wiki/Reference/Fb
-     * @param mixed $Object The variable to be logged
-     * @return true Return TRUE if message was added to headers, FALSE otherwise
-     * @throws Exception
-     */
-    public function fb($Object)
-    {
-        if($this instanceof FirePHP_Insight && method_exists($this, '_logUpgradeClientMessage')) {
-            if(!FirePHP_Insight::$upgradeClientMessageLogged) {    // avoid infinite recursion as _logUpgradeClientMessage() logs a message
-                $this->_logUpgradeClientMessage();
-            }
-        }
-
-        static $insightGroupStack = array();
-
-        if (!$this->getEnabled()) {
-            return false;
-        }
-
-        if ($this->headersSent($filename, $linenum)) {
-            // If we are logging from within the exception handler we cannot throw another exception
-            if ($this->inExceptionHandler) {
-                // Simply echo the error out to the page
-                echo '<div style="border: 2px solid red; font-family: Arial; font-size: 12px; background-color: lightgray; padding: 5px;"><span style="color: red; font-weight: bold;">FirePHP ERROR:</span> Headers already sent in <b>'.$filename.'</b> on line <b>'.$linenum.'</b>. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.</div>';
-            } else {
-                throw $this->newException('Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.');
-            }
-        }
-      
-        $Type = null;
-        $Label = null;
-        $Options = array();
-      
-        if (func_num_args()==1) {
-        } else
-        if (func_num_args()==2) {
-            switch(func_get_arg(1)) {
-                case self::LOG:
-                case self::INFO:
-                case self::WARN:
-                case self::ERROR:
-                case self::DUMP:
-                case self::TRACE:
-                case self::EXCEPTION:
-                case self::TABLE:
-                case self::GROUP_START:
-                case self::GROUP_END:
-                    $Type = func_get_arg(1);
-                    break;
-                default:
-                    $Label = func_get_arg(1);
-                    break;
-            }
-        } else
-        if (func_num_args()==3) {
-            $Type = func_get_arg(2);
-            $Label = func_get_arg(1);
-        } else
-        if (func_num_args()==4) {
-            $Type = func_get_arg(2);
-            $Label = func_get_arg(1);
-            $Options = func_get_arg(3);
-        } else {
-            throw $this->newException('Wrong number of arguments to fb() function!');
-        }
-
-        if($this->logToInsightConsole!==null && (get_class($this)=='FirePHP_Insight' || is_subclass_of($this, 'FirePHP_Insight'))) {
-            $msg = $this->logToInsightConsole;
-            if ($Object instanceof Exception) {
-                $Type = self::EXCEPTION;
-            }
-            if($Label && $Type!=self::TABLE && $Type!=self::GROUP_START) {
-                $msg = $msg->label($Label);
-            }
-            switch($Type) {
-                case self::DUMP:
-                case self::LOG:
-                    return $msg->log($Object);
-                case self::INFO:
-                    return $msg->info($Object);
-                case self::WARN:
-                    return $msg->warn($Object);
-                case self::ERROR:
-                    return $msg->error($Object);
-                case self::TRACE:
-                    return $msg->trace($Object);
-                case self::EXCEPTION:
-                       return $this->plugin('engine')->handleException($Object, $msg);
-                case self::TABLE:
-                    if (isset($Object[0]) && !is_string($Object[0]) && $Label) {
-                        $Object = array($Label, $Object);
-                    }
-                    return $msg->table($Object[0], array_slice($Object[1],1), $Object[1][0]);
-                case self::GROUP_START:
-                       $insightGroupStack[] = $msg->group(md5($Label))->open();
-                    return $msg->log($Label);
-                case self::GROUP_END:
-                       if(count($insightGroupStack)==0) {
-                           throw new Error('Too many groupEnd() as opposed to group() calls!');
-                       }
-                       $group = array_pop($insightGroupStack);
-                    return $group->close();
-                   default:
-                    return $msg->log($Object);
-            }
-        }
-
-        if (!$this->detectClientExtension()) {
-            return false;
-        }
-      
-        $meta = array();
-        $skipFinalObjectEncode = false;
-      
-        if ($Object instanceof Exception) {
-    
-            $meta['file'] = $this->_escapeTraceFile($Object->getFile());
-            $meta['line'] = $Object->getLine();
-          
-            $trace = $Object->getTrace();
-            if ($Object instanceof ErrorException
-               && isset($trace[0]['function'])
-               && $trace[0]['function']=='errorHandler'
-               && isset($trace[0]['class'])
-               && $trace[0]['class']=='FirePHP') {
-               
-                $severity = false;
-                switch($Object->getSeverity()) {
-                    case E_WARNING: $severity = 'E_WARNING'; break;
-                    case E_NOTICE: $severity = 'E_NOTICE'; break;
-                    case E_USER_ERROR: $severity = 'E_USER_ERROR'; break;
-                    case E_USER_WARNING: $severity = 'E_USER_WARNING'; break;
-                    case E_USER_NOTICE: $severity = 'E_USER_NOTICE'; break;
-                    case E_STRICT: $severity = 'E_STRICT'; break;
-                    case E_RECOVERABLE_ERROR: $severity = 'E_RECOVERABLE_ERROR'; break;
-                    case E_DEPRECATED: $severity = 'E_DEPRECATED'; break;
-                    case E_USER_DEPRECATED: $severity = 'E_USER_DEPRECATED'; break;
-                }
-                   
-                $Object = array('Class'=>get_class($Object),
-                                'Message'=>$severity.': '.$Object->getMessage(),
-                                'File'=>$this->_escapeTraceFile($Object->getFile()),
-                                'Line'=>$Object->getLine(),
-                                'Type'=>'trigger',
-                                'Trace'=>$this->_escapeTrace(array_splice($trace,2)));
-                $skipFinalObjectEncode = true;
-            } else {
-                $Object = array('Class'=>get_class($Object),
-                                'Message'=>$Object->getMessage(),
-                                'File'=>$this->_escapeTraceFile($Object->getFile()),
-                                'Line'=>$Object->getLine(),
-                                'Type'=>'throw',
-                                'Trace'=>$this->_escapeTrace($trace));
-                $skipFinalObjectEncode = true;
-            }
-            $Type = self::EXCEPTION;
-          
-        } else
-        if ($Type==self::TRACE) {
-          
-            $trace = debug_backtrace();
-            if (!$trace) return false;
-            for( $i=0 ; $i<sizeof($trace) ; $i++ ) {
-    
-                if (isset($trace[$i]['class'])
-                   && isset($trace[$i]['file'])
-                   && ($trace[$i]['class']=='FirePHP'
-                       || $trace[$i]['class']=='FB')
-                   && (substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php'
-                       || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) {
-                    /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
-                } else
-                if (isset($trace[$i]['class'])
-                   && isset($trace[$i+1]['file'])
-                   && $trace[$i]['class']=='FirePHP'
-                   && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') {
-                    /* Skip fb() */
-                } else
-                if ($trace[$i]['function']=='fb'
-                   || $trace[$i]['function']=='trace'
-                   || $trace[$i]['function']=='send') {
-
-                    $Object = array('Class'=>isset($trace[$i]['class'])?$trace[$i]['class']:'',
-                                    'Type'=>isset($trace[$i]['type'])?$trace[$i]['type']:'',
-                                    'Function'=>isset($trace[$i]['function'])?$trace[$i]['function']:'',
-                                    'Message'=>$trace[$i]['args'][0],
-                                    'File'=>isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'',
-                                    'Line'=>isset($trace[$i]['line'])?$trace[$i]['line']:'',
-                                    'Args'=>isset($trace[$i]['args'])?$this->encodeObject($trace[$i]['args']):'',
-                                    'Trace'=>$this->_escapeTrace(array_splice($trace,$i+1)));
-        
-                    $skipFinalObjectEncode = true;
-                    $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'';
-                    $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:'';
-                    break;
-                }
-            }
-    
-        } else
-        if ($Type==self::TABLE) {
-          
-            if (isset($Object[0]) && is_string($Object[0])) {
-                $Object[1] = $this->encodeTable($Object[1]);
-            } else {
-                $Object = $this->encodeTable($Object);
-            }
-    
-            $skipFinalObjectEncode = true;
-          
-        } else
-        if ($Type==self::GROUP_START) {
-          
-            if (!$Label) {
-                throw $this->newException('You must specify a label for the group!');
-            }
-          
-        } else {
-            if ($Type===null) {
-                $Type = self::LOG;
-            }
-        }
-        
-        if ($this->options['includeLineNumbers']) {
-            if (!isset($meta['file']) || !isset($meta['line'])) {
-    
-                $trace = debug_backtrace();
-                for( $i=0 ; $trace && $i<sizeof($trace) ; $i++ ) {
-          
-                    if (isset($trace[$i]['class'])
-                       && isset($trace[$i]['file'])
-                       && ($trace[$i]['class']=='FirePHP'
-                           || $trace[$i]['class']=='FB')
-                       && (substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php'
-                           || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) {
-                        /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
-                    } else
-                    if (isset($trace[$i]['class'])
-                       && isset($trace[$i+1]['file'])
-                       && $trace[$i]['class']=='FirePHP'
-                       && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') {
-                        /* Skip fb() */
-                    } else
-                    if (isset($trace[$i]['file'])
-                       && substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php') {
-                        /* Skip FB::fb() */
-                    } else {
-                        $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'';
-                        $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:'';
-                        break;
-                    }
-                }      
-            }
-        } else {
-            unset($meta['file']);
-            unset($meta['line']);
-        }
-
-        $this->setHeader('X-Wf-Protocol-1','http://meta.wildfirehq.org/Protocol/JsonStream/0.2');
-        $this->setHeader('X-Wf-1-Plugin-1','http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'.self::VERSION);
-     
-        $structure_index = 1;
-        if ($Type==self::DUMP) {
-            $structure_index = 2;
-            $this->setHeader('X-Wf-1-Structure-2','http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1');
-        } else {
-            $this->setHeader('X-Wf-1-Structure-1','http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1');
-        }
-      
-        if ($Type==self::DUMP) {
-            $msg = '{"'.$Label.'":'.$this->jsonEncode($Object, $skipFinalObjectEncode).'}';
-        } else {
-            $msg_meta = $Options;
-            $msg_meta['Type'] = $Type;
-            if ($Label!==null) {
-                $msg_meta['Label'] = $Label;
-            }
-            if (isset($meta['file']) && !isset($msg_meta['File'])) {
-                $msg_meta['File'] = $meta['file'];
-            }
-            if (isset($meta['line']) && !isset($msg_meta['Line'])) {
-                $msg_meta['Line'] = $meta['line'];
-            }
-            $msg = '['.$this->jsonEncode($msg_meta).','.$this->jsonEncode($Object, $skipFinalObjectEncode).']';
-        }
-        
-        $parts = explode("\n",chunk_split($msg, 5000, "\n"));
-    
-        for( $i=0 ; $i<count($parts) ; $i++) {
-            
-            $part = $parts[$i];
-            if ($part) {
-                
-                if (count($parts)>2) {
-                    // Message needs to be split into multiple parts
-                    $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex,
-                                     (($i==0)?strlen($msg):'')
-                                     . '|' . $part . '|'
-                                     . (($i<count($parts)-2)?'\\':''));
-                } else {
-                    $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex,
-                                     strlen($part) . '|' . $part . '|');
-                }
-                
-                $this->messageIndex++;
-                
-                if ($this->messageIndex > 99999) {
-                    throw $this->newException('Maximum number (99,999) of messages reached!');             
-                }
-            }
-        }
-    
-        $this->setHeader('X-Wf-1-Index',$this->messageIndex-1);
-    
-        return true;
-    }
-  
-    /**
-     * Standardizes path for windows systems.
-     *
-     * @param string $Path
-     * @return string
-     */
-    protected function _standardizePath($Path)
-    {
-        return preg_replace('/\\\\+/','/',$Path);    
-    }
-  
-    /**
-     * Escape trace path for windows systems
-     *
-     * @param array $Trace
-     * @return array
-     */
-    protected function _escapeTrace($Trace)
-    {
-        if (!$Trace) return $Trace;
-        for( $i=0 ; $i<sizeof($Trace) ; $i++ ) {
-            if (isset($Trace[$i]['file'])) {
-                $Trace[$i]['file'] = $this->_escapeTraceFile($Trace[$i]['file']);
-            }
-            if (isset($Trace[$i]['args'])) {
-                $Trace[$i]['args'] = $this->encodeObject($Trace[$i]['args']);
-            }
-        }
-        return $Trace;    
-    }
-  
-    /**
-     * Escape file information of trace for windows systems
-     *
-     * @param string $File
-     * @return string
-     */
-    protected function _escapeTraceFile($File)
-    {
-        /* Check if we have a windows filepath */
-        if (strpos($File,'\\')) {
-            /* First strip down to single \ */
-          
-            $file = preg_replace('/\\\\+/','\\',$File);
-          
-            return $file;
-        }
-        return $File;
-    }
-
-    /**
-     * Check if headers have already been sent
-     *
-     * @param string $Filename
-     * @param integer $Linenum
-     */
-    protected function headersSent(&$Filename, &$Linenum)
-    {
-        return headers_sent($Filename, $Linenum);
-    }
-
-    /**
-     * Send header
-     *
-     * @param string $Name
-     * @param string $Value
-     */
-    protected function setHeader($Name, $Value)
-    {
-        return header($Name.': '.$Value);
-    }
-
-    /**
-     * Get user agent
-     *
-     * @return string|false
-     */
-    protected function getUserAgent()
-    {
-        if (!isset($_SERVER['HTTP_USER_AGENT'])) return false;
-        return $_SERVER['HTTP_USER_AGENT'];
-    }
-
-    /**
-     * Get all request headers
-     * 
-     * @return array
-     */
-    public static function getAllRequestHeaders() {
-        static $_cached_headers = false;
-        if($_cached_headers!==false) {
-            return $_cached_headers;
-        }
-        $headers = array();
-        if(function_exists('getallheaders')) {
-            foreach( getallheaders() as $name => $value ) {
-                $headers[strtolower($name)] = $value;
-            }
-        } else {
-            foreach($_SERVER as $name => $value) {
-                if(substr($name, 0, 5) == 'HTTP_') {
-                    $headers[strtolower(str_replace(' ', '-', str_replace('_', ' ', substr($name, 5))))] = $value;
-                }
-            }
-        }
-        return $_cached_headers = $headers;
-    }
-
-    /**
-     * Get a request header
-     *
-     * @return string|false
-     */
-    protected function getRequestHeader($Name)
-    {
-        $headers = self::getAllRequestHeaders();
-        if (isset($headers[strtolower($Name)])) {
-            return $headers[strtolower($Name)];
-        }
-        return false;
-    }
-
-    /**
-     * Returns a new exception
-     *
-     * @param string $Message
-     * @return Exception
-     */
-    protected function newException($Message)
-    {
-        return new Exception($Message);
-    }
-  
-    /**
-     * Encode an object into a JSON string
-     * 
-     * Uses PHP's jeson_encode() if available
-     * 
-     * @param object $Object The object to be encoded
-     * @return string The JSON string
-     */
-    public function jsonEncode($Object, $skipObjectEncode = false)
-    {
-        if (!$skipObjectEncode) {
-            $Object = $this->encodeObject($Object);
-        }
-        
-        if (function_exists('json_encode')
-           && $this->options['useNativeJsonEncode']!=false) {
-    
-            return json_encode($Object);
-        } else {
-            return $this->json_encode($Object);
-        }
-    }
-
-    /**
-     * Encodes a table by encoding each row and column with encodeObject()
-     * 
-     * @param array $Table The table to be encoded
-     * @return array
-     */  
-    protected function encodeTable($Table)
-    {
-    
-        if (!$Table) return $Table;
-        
-        $new_table = array();
-        foreach($Table as $row) {
-      
-            if (is_array($row)) {
-                $new_row = array();
-            
-                foreach($row as $item) {
-                    $new_row[] = $this->encodeObject($item);
-                }
-            
-                $new_table[] = $new_row;
-            }
-        }
-        
-        return $new_table;
-    }
-
-    /**
-     * Encodes an object including members with
-     * protected and private visibility
-     * 
-     * @param Object $Object The object to be encoded
-     * @param int $Depth The current traversal depth
-     * @return array All members of the object
-     */
-    protected function encodeObject($Object, $ObjectDepth = 1, $ArrayDepth = 1, $MaxDepth = 1)
-    {
-        if ($MaxDepth > $this->options['maxDepth']) {
-            return '** Max Depth ('.$this->options['maxDepth'].') **';
-        }
-
-        $return = array();
-    
-        if (is_resource($Object)) {
-    
-            return '** '.(string)$Object.' **';
-    
-        } else    
-        if (is_object($Object)) {
-    
-            if ($ObjectDepth > $this->options['maxObjectDepth']) {
-                return '** Max Object Depth ('.$this->options['maxObjectDepth'].') **';
-            }
-            
-            foreach ($this->objectStack as $refVal) {
-                if ($refVal === $Object) {
-                    return '** Recursion ('.get_class($Object).') **';
-                }
-            }
-            array_push($this->objectStack, $Object);
-                    
-            $return['__className'] = $class = get_class($Object);
-            $class_lower = strtolower($class);
-    
-            $reflectionClass = new ReflectionClass($class);  
-            $properties = array();
-            foreach( $reflectionClass->getProperties() as $property) {
-                $properties[$property->getName()] = $property;
-            }
-                
-            $members = (array)$Object;
-    
-            foreach( $properties as $plain_name => $property ) {
-    
-                $name = $raw_name = $plain_name;
-                if ($property->isStatic()) {
-                    $name = 'static:'.$name;
-                }
-                if ($property->isPublic()) {
-                    $name = 'public:'.$name;
-                } else
-                if ($property->isPrivate()) {
-                    $name = 'private:'.$name;
-                    $raw_name = "\0".$class."\0".$raw_name;
-                } else
-                if ($property->isProtected()) {
-                    $name = 'protected:'.$name;
-                    $raw_name = "\0".'*'."\0".$raw_name;
-                }
-    
-                if (!(isset($this->objectFilters[$class_lower])
-                     && is_array($this->objectFilters[$class_lower])
-                     && in_array($plain_name,$this->objectFilters[$class_lower]))) {
-    
-                    if (array_key_exists($raw_name,$members)
-                       && !$property->isStatic()) {
-                  
-                        $return[$name] = $this->encodeObject($members[$raw_name], $ObjectDepth + 1, 1, $MaxDepth + 1);      
-                
-                    } else {
-                        if (method_exists($property,'setAccessible')) {
-                            $property->setAccessible(true);
-                            $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1, $MaxDepth + 1);
-                        } else
-                        if ($property->isPublic()) {
-                            $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1, $MaxDepth + 1);
-                        } else {
-                            $return[$name] = '** Need PHP 5.3 to get value **';
-                        }
-                    }
-                } else {
-                    $return[$name] = '** Excluded by Filter **';
-                }
-            }
-            
-            // Include all members that are not defined in the class
-            // but exist in the object
-            foreach( $members as $raw_name => $value ) {
-    
-                $name = $raw_name;
-              
-                if ($name{0} == "\0") {
-                    $parts = explode("\0", $name);
-                    $name = $parts[2];
-                }
-              
-                $plain_name = $name;
-    
-                if (!isset($properties[$name])) {
-                    $name = 'undeclared:'.$name;
-    
-                    if (!(isset($this->objectFilters[$class_lower])
-                         && is_array($this->objectFilters[$class_lower])
-                         && in_array($plain_name,$this->objectFilters[$class_lower]))) {
-    
-                        $return[$name] = $this->encodeObject($value, $ObjectDepth + 1, 1, $MaxDepth + 1);
-                    } else {
-                        $return[$name] = '** Excluded by Filter **';
-                    }
-                }
-            }
-            
-            array_pop($this->objectStack);
-            
-        } elseif (is_array($Object)) {
-    
-            if ($ArrayDepth > $this->options['maxArrayDepth']) {
-                return '** Max Array Depth ('.$this->options['maxArrayDepth'].') **';
-            }
-          
-            foreach ($Object as $key => $val) {
-              
-                // Encoding the $GLOBALS PHP array causes an infinite loop
-                // if the recursion is not reset here as it contains
-                // a reference to itself. This is the only way I have come up
-                // with to stop infinite recursion in this case.
-                if ($key=='GLOBALS'
-                   && is_array($val)
-                   && array_key_exists('GLOBALS',$val)) {
-                    $val['GLOBALS'] = '** Recursion (GLOBALS) **';
-                }
-              
-                $return[$key] = $this->encodeObject($val, 1, $ArrayDepth + 1, $MaxDepth + 1);
-            }
-        } else {
-            if (self::is_utf8($Object)) {
-                return $Object;
-            } else {
-                return utf8_encode($Object);
-            }
-        }
-        return $return;
-    }
-
-    /**
-     * Returns true if $string is valid UTF-8 and false otherwise.
-     *
-     * @param mixed $str String to be tested
-     * @return boolean
-     */
-    protected static function is_utf8($str)
-    {
-        if(function_exists('mb_detect_encoding')) {
-            return (mb_detect_encoding($str) == 'UTF-8');
-        }
-        $c=0; $b=0;
-        $bits=0;
-        $len=strlen($str);
-        for($i=0; $i<$len; $i++){
-            $c=ord($str[$i]);
-            if ($c > 128){
-                if (($c >= 254)) return false;
-                elseif ($c >= 252) $bits=6;
-                elseif ($c >= 248) $bits=5;
-                elseif ($c >= 240) $bits=4;
-                elseif ($c >= 224) $bits=3;
-                elseif ($c >= 192) $bits=2;
-                else return false;
-                if (($i+$bits) > $len) return false;
-                while($bits > 1){
-                    $i++;
-                    $b=ord($str[$i]);
-                    if ($b < 128 || $b > 191) return false;
-                    $bits--;
-                }
-            }
-        }
-        return true;
-    } 
-
-    /**
-     * Converts to and from JSON format.
-     *
-     * JSON (JavaScript Object Notation) is a lightweight data-interchange
-     * format. It is easy for humans to read and write. It is easy for machines
-     * to parse and generate. It is based on a subset of the JavaScript
-     * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
-     * This feature can also be found in  Python. JSON is a text format that is
-     * completely language independent but uses conventions that are familiar
-     * to programmers of the C-family of languages, including C, C++, C#, Java,
-     * JavaScript, Perl, TCL, and many others. These properties make JSON an
-     * ideal data-interchange language.
-     *
-     * This package provides a simple encoder and decoder for JSON notation. It
-     * is intended for use with client-side Javascript applications that make
-     * use of HTTPRequest to perform server communication functions - data can
-     * be encoded into JSON notation for use in a client-side javascript, or
-     * decoded from incoming Javascript requests. JSON format is native to
-     * Javascript, and can be directly eval()'ed with no further parsing
-     * overhead
-     *
-     * All strings should be in ASCII or UTF-8 format!
-     *
-     * LICENSE: Redistribution and use in source and binary forms, with or
-     * without modification, are permitted provided that the following
-     * conditions are met: Redistributions of source code must retain the
-     * above copyright notice, this list of conditions and the following
-     * disclaimer. Redistributions in binary form must reproduce the above
-     * copyright notice, this list of conditions and the following disclaimer
-     * in the documentation and/or other materials provided with the
-     * distribution.
-     *
-     * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-     * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-     * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-     * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-     * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-     * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-     * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-     * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
-     * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-     * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-     * DAMAGE.
-     *
-     * @category
-     * @package     Services_JSON
-     * @author      Michal Migurski <mike-json@teczno.com>
-     * @author      Matt Knapp <mdknapp[at]gmail[dot]com>
-     * @author      Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
-     * @author      Christoph Dorn <christoph@christophdorn.com>
-     * @copyright   2005 Michal Migurski
-     * @version     CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
-     * @license     http://www.opensource.org/licenses/bsd-license.php
-     * @link        http://pear.php.net/pepr/pepr-proposal-show.php?id=198
-     */
-   
-     
-    /**
-     * Keep a list of objects as we descend into the array so we can detect recursion.
-     */
-    private $json_objectStack = array();
-
-
-   /**
-    * convert a string from one UTF-8 char to one UTF-16 char
-    *
-    * Normally should be handled by mb_convert_encoding, but
-    * provides a slower PHP-only method for installations
-    * that lack the multibye string extension.
-    *
-    * @param    string  $utf8   UTF-8 character
-    * @return   string  UTF-16 character
-    * @access   private
-    */
-    private function json_utf82utf16($utf8)
-    {
-        // oh please oh please oh please oh please oh please
-        if (function_exists('mb_convert_encoding')) {
-            return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
-        }
-
-        switch(strlen($utf8)) {
-            case 1:
-                // this case should never be reached, because we are in ASCII range
-                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-                return $utf8;
-
-            case 2:
-                // return a UTF-16 character from a 2-byte UTF-8 char
-                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-                return chr(0x07 & (ord($utf8{0}) >> 2))
-                       . chr((0xC0 & (ord($utf8{0}) << 6))
-                       | (0x3F & ord($utf8{1})));
-
-            case 3:
-                // return a UTF-16 character from a 3-byte UTF-8 char
-                // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-                return chr((0xF0 & (ord($utf8{0}) << 4))
-                       | (0x0F & (ord($utf8{1}) >> 2)))
-                       . chr((0xC0 & (ord($utf8{1}) << 6))
-                       | (0x7F & ord($utf8{2})));
-        }
-
-        // ignoring UTF-32 for now, sorry
-        return '';
-    }
-
-   /**
-    * encodes an arbitrary variable into JSON format
-    *
-    * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.
-    *                           see argument 1 to Services_JSON() above for array-parsing behavior.
-    *                           if var is a strng, note that encode() always expects it
-    *                           to be in ASCII or UTF-8 format!
-    *
-    * @return   mixed   JSON string representation of input var or an error if a problem occurs
-    * @access   public
-    */
-    private function json_encode($var)
-    {
-    
-        if (is_object($var)) {
-            if (in_array($var,$this->json_objectStack)) {
-                return '"** Recursion **"';
-            }
-        }
-          
-        switch (gettype($var)) {
-            case 'boolean':
-                return $var ? 'true' : 'false';
-
-            case 'NULL':
-                return 'null';
-
-            case 'integer':
-                return (int) $var;
-
-            case 'double':
-            case 'float':
-                return (float) $var;
-
-            case 'string':
-                // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
-                $ascii = '';
-                $strlen_var = strlen($var);
-
-               /*
-                * Iterate over every character in the string,
-                * escaping with a slash or encoding to UTF-8 where necessary
-                */
-                for ($c = 0; $c < $strlen_var; ++$c) {
-
-                    $ord_var_c = ord($var{$c});
-
-                    switch (true) {
-                        case $ord_var_c == 0x08:
-                            $ascii .= '\b';
-                            break;
-                        case $ord_var_c == 0x09:
-                            $ascii .= '\t';
-                            break;
-                        case $ord_var_c == 0x0A:
-                            $ascii .= '\n';
-                            break;
-                        case $ord_var_c == 0x0C:
-                            $ascii .= '\f';
-                            break;
-                        case $ord_var_c == 0x0D:
-                            $ascii .= '\r';
-                            break;
-
-                        case $ord_var_c == 0x22:
-                        case $ord_var_c == 0x2F:
-                        case $ord_var_c == 0x5C:
-                            // double quote, slash, slosh
-                            $ascii .= '\\'.$var{$c};
-                            break;
-
-                        case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
-                            // characters U-00000000 - U-0000007F (same as ASCII)
-                            $ascii .= $var{$c};
-                            break;
-
-                        case (($ord_var_c & 0xE0) == 0xC0):
-                            // characters U-00000080 - U-000007FF, mask 110XXXXX
-                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-                            $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
-                            $c += 1;
-                            $utf16 = $this->json_utf82utf16($char);
-                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
-                            break;
-
-                        case (($ord_var_c & 0xF0) == 0xE0):
-                            // characters U-00000800 - U-0000FFFF, mask 1110XXXX
-                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-                            $char = pack('C*', $ord_var_c,
-                                         ord($var{$c + 1}),
-                                         ord($var{$c + 2}));
-                            $c += 2;
-                            $utf16 = $this->json_utf82utf16($char);
-                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
-                            break;
-
-                        case (($ord_var_c & 0xF8) == 0xF0):
-                            // characters U-00010000 - U-001FFFFF, mask 11110XXX
-                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-                            $char = pack('C*', $ord_var_c,
-                                         ord($var{$c + 1}),
-                                         ord($var{$c + 2}),
-                                         ord($var{$c + 3}));
-                            $c += 3;
-                            $utf16 = $this->json_utf82utf16($char);
-                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
-                            break;
-
-                        case (($ord_var_c & 0xFC) == 0xF8):
-                            // characters U-00200000 - U-03FFFFFF, mask 111110XX
-                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-                            $char = pack('C*', $ord_var_c,
-                                         ord($var{$c + 1}),
-                                         ord($var{$c + 2}),
-                                         ord($var{$c + 3}),
-                                         ord($var{$c + 4}));
-                            $c += 4;
-                            $utf16 = $this->json_utf82utf16($char);
-                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
-                            break;
-
-                        case (($ord_var_c & 0xFE) == 0xFC):
-                            // characters U-04000000 - U-7FFFFFFF, mask 1111110X
-                            // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
-                            $char = pack('C*', $ord_var_c,
-                                         ord($var{$c + 1}),
-                                         ord($var{$c + 2}),
-                                         ord($var{$c + 3}),
-                                         ord($var{$c + 4}),
-                                         ord($var{$c + 5}));
-                            $c += 5;
-                            $utf16 = $this->json_utf82utf16($char);
-                            $ascii .= sprintf('\u%04s', bin2hex($utf16));
-                            break;
-                    }
-                }
-
-                return '"'.$ascii.'"';
-
-            case 'array':
-                /*
-                 * As per JSON spec if any array key is not an integer
-                 * we must treat the the whole array as an object. We
-                 * also try to catch a sparsely populated associative
-                 * array with numeric keys here because some JS engines
-                 * will create an array with empty indexes up to
-                 * max_index which can cause memory issues and because
-                 * the keys, which may be relevant, will be remapped
-                 * otherwise.
-                 *
-                 * As per the ECMA and JSON specification an object may
-                 * have any string as a property. Unfortunately due to
-                 * a hole in the ECMA specification if the key is a
-                 * ECMA reserved word or starts with a digit the
-                 * parameter is only accessible using ECMAScript's
-                 * bracket notation.
-                 */
-
-                // treat as a JSON object
-                if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
-                  
-                    $this->json_objectStack[] = $var;
-
-                    $properties = array_map(array($this, 'json_name_value'),
-                                            array_keys($var),
-                                            array_values($var));
-
-                    array_pop($this->json_objectStack);
-
-                    foreach($properties as $property) {
-                        if ($property instanceof Exception) {
-                            return $property;
-                        }
-                    }
-
-                    return '{' . join(',', $properties) . '}';
-                }
-
-                $this->json_objectStack[] = $var;
-
-                // treat it like a regular array
-                $elements = array_map(array($this, 'json_encode'), $var);
-
-                array_pop($this->json_objectStack);
-
-                foreach($elements as $element) {
-                    if ($element instanceof Exception) {
-                        return $element;
-                    }
-                }
-
-                return '[' . join(',', $elements) . ']';
-
-            case 'object':
-                $vars = self::encodeObject($var);
-
-                $this->json_objectStack[] = $var;
-
-                $properties = array_map(array($this, 'json_name_value'),
-                                        array_keys($vars),
-                                        array_values($vars));
-
-                array_pop($this->json_objectStack);
-              
-                foreach($properties as $property) {
-                    if ($property instanceof Exception) {
-                        return $property;
-                    }
-                }
-                     
-                return '{' . join(',', $properties) . '}';
-
-            default:
-                return null;
-        }
-    }
-
-   /**
-    * array-walking function for use in generating JSON-formatted name-value pairs
-    *
-    * @param    string  $name   name of key to use
-    * @param    mixed   $value  reference to an array element to be encoded
-    *
-    * @return   string  JSON-formatted name-value pair, like '"name":value'
-    * @access   private
-    */
-    private function json_name_value($name, $value)
-    {
-        // Encoding the $GLOBALS PHP array causes an infinite loop
-        // if the recursion is not reset here as it contains
-        // a reference to itself. This is the only way I have come up
-        // with to stop infinite recursion in this case.
-        if ($name=='GLOBALS'
-           && is_array($value)
-           && array_key_exists('GLOBALS',$value)) {
-            $value['GLOBALS'] = '** Recursion **';
-        }
-    
-        $encoded_value = $this->json_encode($value);
-
-        if ($encoded_value instanceof Exception) {
-            return $encoded_value;
-        }
-
-        return $this->json_encode(strval($name)) . ':' . $encoded_value;
-    }
-
-    /**
-     * @deprecated
-     */    
-    public function setProcessorUrl($URL)
-    {
-        trigger_error("The FirePHP::setProcessorUrl() method is no longer supported", E_USER_DEPRECATED);
-    }
-
-    /**
-     * @deprecated
-     */
-    public function setRendererUrl($URL)
-    {
-        trigger_error("The FirePHP::setRendererUrl() method is no longer supported", E_USER_DEPRECATED);
-    }  
-}
diff --git a/framework/library/FirePHPCore/fb.php b/framework/library/FirePHPCore/fb.php
deleted file mode 100644 (file)
index 9ed9c42..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-<?php
-
-/* ***** BEGIN LICENSE BLOCK *****
- *  
- * This file is part of FirePHP (http://www.firephp.org/).
- * 
- * Software License Agreement (New BSD License)
- * 
- * Copyright (c) 2006-2010, Christoph Dorn
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 
- *     * Redistributions of source code must retain the above copyright notice,
- *       this list of conditions and the following disclaimer.
- * 
- *     * Redistributions in binary form must reproduce the above copyright notice,
- *       this list of conditions and the following disclaimer in the documentation
- *       and/or other materials provided with the distribution.
- * 
- *     * Neither the name of Christoph Dorn nor the names of its
- *       contributors may be used to endorse or promote products derived from this
- *       software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
- * ***** END LICENSE BLOCK *****
- * 
- * @copyright   Copyright (C) 2007-2009 Christoph Dorn
- * @author      Christoph Dorn <christoph@christophdorn.com>
- * @license     http://www.opensource.org/licenses/bsd-license.php
- * @package     FirePHPCore
- */
-
-if(!class_exists('FirePHP')) {
-    require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'FirePHP.class.php';
-}
-
-/**
- * Sends the given data to the FirePHP Firefox Extension.
- * The data can be displayed in the Firebug Console or in the
- * "Server" request tab.
- * 
- * @see http://www.firephp.org/Wiki/Reference/Fb
- * @param mixed $Object
- * @return true
- * @throws Exception
- */
-function fb()
-{
-    $instance = FirePHP::getInstance(true);
-  
-    $args = func_get_args();
-    return call_user_func_array(array($instance,'fb'),$args);
-}
-
-
-class FB
-{
-    /**
-     * Enable and disable logging to Firebug
-     * 
-     * @see FirePHP->setEnabled()
-     * @param boolean $Enabled TRUE to enable, FALSE to disable
-     * @return void
-     */
-    public static function setEnabled($Enabled)
-    {
-        $instance = FirePHP::getInstance(true);
-        $instance->setEnabled($Enabled);
-    }
-  
-    /**
-     * Check if logging is enabled
-     * 
-     * @see FirePHP->getEnabled()
-     * @return boolean TRUE if enabled
-     */
-    public static function getEnabled()
-    {
-        $instance = FirePHP::getInstance(true);
-        return $instance->getEnabled();
-    }  
-  
-    /**
-     * Specify a filter to be used when encoding an object
-     * 
-     * Filters are used to exclude object members.
-     * 
-     * @see FirePHP->setObjectFilter()
-     * @param string $Class The class name of the object
-     * @param array $Filter An array or members to exclude
-     * @return void
-     */
-    public static function setObjectFilter($Class, $Filter)
-    {
-      $instance = FirePHP::getInstance(true);
-      $instance->setObjectFilter($Class, $Filter);
-    }
-  
-    /**
-     * Set some options for the library
-     * 
-     * @see FirePHP->setOptions()
-     * @param array $Options The options to be set
-     * @return void
-     */
-    public static function setOptions($Options)
-    {
-        $instance = FirePHP::getInstance(true);
-        $instance->setOptions($Options);
-    }
-
-    /**
-     * Get options for the library
-     * 
-     * @see FirePHP->getOptions()
-     * @return array The options
-     */
-    public static function getOptions()
-    {
-        $instance = FirePHP::getInstance(true);
-        return $instance->getOptions();
-    }
-
-    /**
-     * Log object to firebug
-     * 
-     * @see http://www.firephp.org/Wiki/Reference/Fb
-     * @param mixed $Object
-     * @return true
-     * @throws Exception
-     */
-    public static function send()
-    {
-        $instance = FirePHP::getInstance(true);
-        $args = func_get_args();
-        return call_user_func_array(array($instance,'fb'),$args);
-    }
-
-    /**
-     * Start a group for following messages
-     * 
-     * Options:
-     *   Collapsed: [true|false]
-     *   Color:     [#RRGGBB|ColorName]
-     *
-     * @param string $Name
-     * @param array $Options OPTIONAL Instructions on how to log the group
-     * @return true
-     */
-    public static function group($Name, $Options=null)
-    {
-        $instance = FirePHP::getInstance(true);
-        return $instance->group($Name, $Options);
-    }
-
-    /**
-     * Ends a group you have started before
-     *
-     * @return true
-     * @throws Exception
-     */
-    public static function groupEnd()
-    {
-        return self::send(null, null, FirePHP::GROUP_END);
-    }
-
-    /**
-     * Log object with label to firebug console
-     *
-     * @see FirePHP::LOG
-     * @param mixes $Object
-     * @param string $Label
-     * @return true
-     * @throws Exception
-     */
-    public static function log($Object, $Label=null)
-    {
-        return self::send($Object, $Label, FirePHP::LOG);
-    } 
-
-    /**
-     * Log object with label to firebug console
-     *
-     * @see FirePHP::INFO
-     * @param mixes $Object
-     * @param string $Label
-     * @return true
-     * @throws Exception
-     */
-    public static function info($Object, $Label=null)
-    {
-        return self::send($Object, $Label, FirePHP::INFO);
-    } 
-
-    /**
-     * Log object with label to firebug console
-     *
-     * @see FirePHP::WARN
-     * @param mixes $Object
-     * @param string $Label
-     * @return true
-     * @throws Exception
-     */
-    public static function warn($Object, $Label=null)
-    {
-        return self::send($Object, $Label, FirePHP::WARN);
-    } 
-
-    /**
-     * Log object with label to firebug console
-     *
-     * @see FirePHP::ERROR
-     * @param mixes $Object
-     * @param string $Label
-     * @return true
-     * @throws Exception
-     */
-    public static function error($Object, $Label=null)
-    {
-        return self::send($Object, $Label, FirePHP::ERROR);
-    } 
-
-    /**
-     * Dumps key and variable to firebug server panel
-     *
-     * @see FirePHP::DUMP
-     * @param string $Key
-     * @param mixed $Variable
-     * @return true
-     * @throws Exception
-     */
-    public static function dump($Key, $Variable)
-    {
-        return self::send($Variable, $Key, FirePHP::DUMP);
-    } 
-
-    /**
-     * Log a trace in the firebug console
-     *
-     * @see FirePHP::TRACE
-     * @param string $Label
-     * @return true
-     * @throws Exception
-     */
-    public static function trace($Label)
-    {
-        return self::send($Label, FirePHP::TRACE);
-    } 
-
-    /**
-     * Log a table in the firebug console
-     *
-     * @see FirePHP::TABLE
-     * @param string $Label
-     * @param string $Table
-     * @return true
-     * @throws Exception
-     */
-    public static function table($Label, $Table)
-    {
-        return self::send($Table, $Label, FirePHP::TABLE);
-    } 
-
-}
index dc82bc943d0a0c8feb8dde3e5631acf4a19be34b..aa9da2e15ebfce2fc488e26f876ca0c3760dbda4 100644 (file)
--- a/index.php
+++ b/index.php
@@ -11,5 +11,4 @@ if ($_SERVER['HTTP_HOST'] == 'bloomsburie.dev2.cubedesigners.com') {
     define('APPLICATION_ENV', 'production');
 }
 
-
 include dirname(__FILE__) . '/CubeIT/common.php';
diff --git a/info.php b/info.php
new file mode 100644 (file)
index 0000000..c4837a3
--- /dev/null
+++ b/info.php
@@ -0,0 +1 @@
+<?php phpinfo();