From 1213016d5e1d535237b28935ae1a859abb6bf307 Mon Sep 17 00:00:00 2001 From: Carlos Sosa Date: Thu, 19 Mar 2020 15:09:32 -0700 Subject: Add platicas and talks assets --- talks/blueprint/ie.css | 35 + talks/blueprint/plugins/buttons/icons/cross.png | Bin 0 -> 655 bytes talks/blueprint/plugins/buttons/icons/key.png | Bin 0 -> 455 bytes talks/blueprint/plugins/buttons/icons/tick.png | Bin 0 -> 537 bytes talks/blueprint/plugins/buttons/readme.txt | 32 + talks/blueprint/plugins/buttons/screen.css | 97 + talks/blueprint/plugins/fancy-type/readme.txt | 14 + talks/blueprint/plugins/fancy-type/screen.css | 71 + talks/blueprint/plugins/link-icons/icons/doc.png | Bin 0 -> 777 bytes talks/blueprint/plugins/link-icons/icons/email.png | Bin 0 -> 641 bytes .../plugins/link-icons/icons/external.png | Bin 0 -> 46848 bytes talks/blueprint/plugins/link-icons/icons/feed.png | Bin 0 -> 691 bytes talks/blueprint/plugins/link-icons/icons/im.png | Bin 0 -> 741 bytes talks/blueprint/plugins/link-icons/icons/pdf.png | Bin 0 -> 591 bytes .../blueprint/plugins/link-icons/icons/visited.png | Bin 0 -> 46990 bytes talks/blueprint/plugins/link-icons/icons/xls.png | Bin 0 -> 663 bytes talks/blueprint/plugins/link-icons/readme.txt | 18 + talks/blueprint/plugins/link-icons/screen.css | 40 + talks/blueprint/plugins/rtl/readme.txt | 10 + talks/blueprint/plugins/rtl/screen.css | 110 + talks/blueprint/print.css | 29 + talks/blueprint/screen.css | 265 ++ talks/blueprint/src/forms.css | 65 + talks/blueprint/src/grid.css | 280 ++ talks/blueprint/src/grid.png | Bin 0 -> 195 bytes talks/blueprint/src/ie.css | 76 + talks/blueprint/src/print.css | 85 + talks/blueprint/src/reset.css | 45 + talks/blueprint/src/typography.css | 106 + talks/index.html | 37 + talks/workshop-vim-hackmeet/img/Bill_joy.jpg | Bin 0 -> 37403 bytes talks/workshop-vim-hackmeet/img/Bram_Moo.jpg | Bin 0 -> 38287 bytes talks/workshop-vim-hackmeet/img/bonsai.jpg | Bin 0 -> 46754 bytes talks/workshop-vim-hackmeet/img/chibibonsa.jpg | Bin 0 -> 3595 bytes talks/workshop-vim-hackmeet/img/grafica.jpg | Bin 0 -> 33348 bytes talks/workshop-vim-hackmeet/img/grafica2.jpg | Bin 0 -> 78293 bytes talks/workshop-vim-hackmeet/img/iching.png | Bin 0 -> 6807 bytes talks/workshop-vim-hackmeet/img/me.jpg | Bin 0 -> 86280 bytes talks/workshop-vim-hackmeet/img/monje.jpg | Bin 0 -> 27452 bytes talks/workshop-vim-hackmeet/img/screen.jpg | Bin 0 -> 63017 bytes .../workshop-vim-hackmeet/img/vim-editor_logo.png | Bin 0 -> 35765 bytes talks/workshop-vim-hackmeet/img/vim-fire.gif | Bin 0 -> 6884 bytes .../workshop-vim-hackmeet/img/vim-screenshot1.png | Bin 0 -> 154662 bytes talks/workshop-vim-hackmeet/img/zen2.gif | Bin 0 -> 14096 bytes talks/workshop-vim-hackmeet/index.html | 807 ++++++ talks/workshop-vim-hackmeet/slidy.css | 400 +++ talks/workshop-vim-hackmeet/slidy.js | 2881 ++++++++++++++++++++ talks/workshop-vim-hackmeet/w3c-black.css | 497 ++++ 48 files changed, 6000 insertions(+) create mode 100644 talks/blueprint/ie.css create mode 100755 talks/blueprint/plugins/buttons/icons/cross.png create mode 100755 talks/blueprint/plugins/buttons/icons/key.png create mode 100755 talks/blueprint/plugins/buttons/icons/tick.png create mode 100644 talks/blueprint/plugins/buttons/readme.txt create mode 100644 talks/blueprint/plugins/buttons/screen.css create mode 100644 talks/blueprint/plugins/fancy-type/readme.txt create mode 100644 talks/blueprint/plugins/fancy-type/screen.css create mode 100644 talks/blueprint/plugins/link-icons/icons/doc.png create mode 100644 talks/blueprint/plugins/link-icons/icons/email.png create mode 100644 talks/blueprint/plugins/link-icons/icons/external.png create mode 100644 talks/blueprint/plugins/link-icons/icons/feed.png create mode 100644 talks/blueprint/plugins/link-icons/icons/im.png create mode 100644 talks/blueprint/plugins/link-icons/icons/pdf.png create mode 100644 talks/blueprint/plugins/link-icons/icons/visited.png create mode 100644 talks/blueprint/plugins/link-icons/icons/xls.png create mode 100644 talks/blueprint/plugins/link-icons/readme.txt create mode 100644 talks/blueprint/plugins/link-icons/screen.css create mode 100644 talks/blueprint/plugins/rtl/readme.txt create mode 100644 talks/blueprint/plugins/rtl/screen.css create mode 100644 talks/blueprint/print.css create mode 100644 talks/blueprint/screen.css create mode 100644 talks/blueprint/src/forms.css create mode 100755 talks/blueprint/src/grid.css create mode 100644 talks/blueprint/src/grid.png create mode 100644 talks/blueprint/src/ie.css create mode 100755 talks/blueprint/src/print.css create mode 100755 talks/blueprint/src/reset.css create mode 100644 talks/blueprint/src/typography.css create mode 100644 talks/index.html create mode 100755 talks/workshop-vim-hackmeet/img/Bill_joy.jpg create mode 100755 talks/workshop-vim-hackmeet/img/Bram_Moo.jpg create mode 100755 talks/workshop-vim-hackmeet/img/bonsai.jpg create mode 100755 talks/workshop-vim-hackmeet/img/chibibonsa.jpg create mode 100755 talks/workshop-vim-hackmeet/img/grafica.jpg create mode 100755 talks/workshop-vim-hackmeet/img/grafica2.jpg create mode 100755 talks/workshop-vim-hackmeet/img/iching.png create mode 100755 talks/workshop-vim-hackmeet/img/me.jpg create mode 100755 talks/workshop-vim-hackmeet/img/monje.jpg create mode 100755 talks/workshop-vim-hackmeet/img/screen.jpg create mode 100755 talks/workshop-vim-hackmeet/img/vim-editor_logo.png create mode 100755 talks/workshop-vim-hackmeet/img/vim-fire.gif create mode 100755 talks/workshop-vim-hackmeet/img/vim-screenshot1.png create mode 100755 talks/workshop-vim-hackmeet/img/zen2.gif create mode 100644 talks/workshop-vim-hackmeet/index.html create mode 100644 talks/workshop-vim-hackmeet/slidy.css create mode 100644 talks/workshop-vim-hackmeet/slidy.js create mode 100644 talks/workshop-vim-hackmeet/w3c-black.css (limited to 'talks') diff --git a/talks/blueprint/ie.css b/talks/blueprint/ie.css new file mode 100644 index 0000000..3dddda9 --- /dev/null +++ b/talks/blueprint/ie.css @@ -0,0 +1,35 @@ +/* ----------------------------------------------------------------------- + + + Blueprint CSS Framework 0.9 + http://blueprintcss.org + + * Copyright (c) 2007-Present. See LICENSE for more info. + * See README for instructions on how to use Blueprint. + * For credits and origins, see AUTHORS. + * This is a compressed file. See the sources in the 'src' directory. + +----------------------------------------------------------------------- */ + +/* ie.css */ +body {text-align:center;} +.container {text-align:left;} +* html .column, * html .span-1, * html .span-2, * html .span-3, * html .span-4, * html .span-5, * html .span-6, * html .span-7, * html .span-8, * html .span-9, * html .span-10, * html .span-11, * html .span-12, * html .span-13, * html .span-14, * html .span-15, * html .span-16, * html .span-17, * html .span-18, * html .span-19, * html .span-20, * html .span-21, * html .span-22, * html .span-23, * html .span-24 {display:inline;overflow-x:hidden;} +* html legend {margin:0px -8px 16px 0;padding:0;} +sup {vertical-align:text-top;} +sub {vertical-align:text-bottom;} +html>body p code {*white-space:normal;} +hr {margin:-8px auto 11px;} +img {-ms-interpolation-mode:bicubic;} +.clearfix, .container {display:inline-block;} +* html .clearfix, * html .container {height:1%;} +fieldset {padding-top:0;} +textarea {overflow:auto;} +input.text, input.title, textarea {background-color:#fff;border:1px solid #bbb;} +input.text:focus, input.title:focus {border-color:#666;} +input.text, input.title, textarea, select {margin:0.5em 0;} +input.checkbox, input.radio {position:relative;top:.25em;} +form.inline div, form.inline p {vertical-align:middle;} +form.inline label {position:relative;top:-0.25em;} +form.inline input.checkbox, form.inline input.radio, form.inline input.button, form.inline button {margin:0.5em 0;} +button, input.button {position:relative;top:0.25em;} \ No newline at end of file diff --git a/talks/blueprint/plugins/buttons/icons/cross.png b/talks/blueprint/plugins/buttons/icons/cross.png new file mode 100755 index 0000000..1514d51 Binary files /dev/null and b/talks/blueprint/plugins/buttons/icons/cross.png differ diff --git a/talks/blueprint/plugins/buttons/icons/key.png b/talks/blueprint/plugins/buttons/icons/key.png new file mode 100755 index 0000000..a9d5e4f Binary files /dev/null and b/talks/blueprint/plugins/buttons/icons/key.png differ diff --git a/talks/blueprint/plugins/buttons/icons/tick.png b/talks/blueprint/plugins/buttons/icons/tick.png new file mode 100755 index 0000000..a9925a0 Binary files /dev/null and b/talks/blueprint/plugins/buttons/icons/tick.png differ diff --git a/talks/blueprint/plugins/buttons/readme.txt b/talks/blueprint/plugins/buttons/readme.txt new file mode 100644 index 0000000..aa9fe26 --- /dev/null +++ b/talks/blueprint/plugins/buttons/readme.txt @@ -0,0 +1,32 @@ +Buttons + +* Gives you great looking CSS buttons, for both and + + + Change Password + + + + Cancel + diff --git a/talks/blueprint/plugins/buttons/screen.css b/talks/blueprint/plugins/buttons/screen.css new file mode 100644 index 0000000..bb66b21 --- /dev/null +++ b/talks/blueprint/plugins/buttons/screen.css @@ -0,0 +1,97 @@ +/* -------------------------------------------------------------- + + buttons.css + * Gives you some great CSS-only buttons. + + Created by Kevin Hale [particletree.com] + * particletree.com/features/rediscovering-the-button-element + + See Readme.txt in this folder for instructions. + +-------------------------------------------------------------- */ + +a.button, button { + display:block; + float:left; + margin: 0.7em 0.5em 0.7em 0; + padding:5px 10px 5px 7px; /* Links */ + + border:1px solid #dedede; + border-top:1px solid #eee; + border-left:1px solid #eee; + + background-color:#f5f5f5; + font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; + font-size:100%; + line-height:130%; + text-decoration:none; + font-weight:bold; + color:#565656; + cursor:pointer; +} +button { + width:auto; + overflow:visible; + padding:4px 10px 3px 7px; /* IE6 */ +} +button[type] { + padding:4px 10px 4px 7px; /* Firefox */ + line-height:17px; /* Safari */ +} +*:first-child+html button[type] { + padding:4px 10px 3px 7px; /* IE7 */ +} +button img, a.button img{ + margin:0 3px -3px 0 !important; + padding:0; + border:none; + width:16px; + height:16px; + float:none; +} + + +/* Button colors +-------------------------------------------------------------- */ + +/* Standard */ +button:hover, a.button:hover{ + background-color:#dff4ff; + border:1px solid #c2e1ef; + color:#336699; +} +a.button:active{ + background-color:#6299c5; + border:1px solid #6299c5; + color:#fff; +} + +/* Positive */ +body .positive { + color:#529214; +} +a.positive:hover, button.positive:hover { + background-color:#E6EFC2; + border:1px solid #C6D880; + color:#529214; +} +a.positive:active { + background-color:#529214; + border:1px solid #529214; + color:#fff; +} + +/* Negative */ +body .negative { + color:#d12f19; +} +a.negative:hover, button.negative:hover { + background-color:#fbe3e4; + border:1px solid #fbc2c4; + color:#d12f19; +} +a.negative:active { + background-color:#d12f19; + border:1px solid #d12f19; + color:#fff; +} diff --git a/talks/blueprint/plugins/fancy-type/readme.txt b/talks/blueprint/plugins/fancy-type/readme.txt new file mode 100644 index 0000000..85f2491 --- /dev/null +++ b/talks/blueprint/plugins/fancy-type/readme.txt @@ -0,0 +1,14 @@ +Fancy Type + +* Gives you classes to use if you'd like some + extra fancy typography. + +Credits and instructions are specified above each class +in the fancy-type.css file in this directory. + + +Usage +---------------------------------------------------------------- + +1) Add this plugin to lib/settings.yml. + See compress.rb for instructions. diff --git a/talks/blueprint/plugins/fancy-type/screen.css b/talks/blueprint/plugins/fancy-type/screen.css new file mode 100644 index 0000000..127cf25 --- /dev/null +++ b/talks/blueprint/plugins/fancy-type/screen.css @@ -0,0 +1,71 @@ +/* -------------------------------------------------------------- + + fancy-type.css + * Lots of pretty advanced classes for manipulating text. + + See the Readme file in this folder for additional instructions. + +-------------------------------------------------------------- */ + +/* Indentation instead of line shifts for sibling paragraphs. */ + p + p { text-indent:2em; margin-top:-1.5em; } + form p + p { text-indent: 0; } /* Don't want this in forms. */ + + +/* For great looking type, use this code instead of asdf: + asdf + Best used on prepositions and ampersands. */ + +.alt { + color: #666; + font-family: "Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua", Georgia, serif; + font-style: italic; + font-weight: normal; +} + + +/* For great looking quote marks in titles, replace "asdf" with: + asdf” + (That is, when the title starts with a quote mark). + (You may have to change this value depending on your font size). */ + +.dquo { margin-left: -.5em; } + + +/* Reduced size type with incremental leading + (http://www.markboulton.co.uk/journal/comments/incremental_leading/) + + This could be used for side notes. For smaller type, you don't necessarily want to + follow the 1.5x vertical rhythm -- the line-height is too much. + + Using this class, it reduces your font size and line-height so that for + every four lines of normal sized type, there is five lines of the sidenote. eg: + + New type size in em's: + 10px (wanted side note size) / 12px (existing base size) = 0.8333 (new type size in ems) + + New line-height value: + 12px x 1.5 = 18px (old line-height) + 18px x 4 = 72px + 72px / 5 = 14.4px (new line height) + 14.4px / 10px = 1.44 (new line height in em's) */ + +p.incr, .incr p { + font-size: 10px; + line-height: 1.44em; + margin-bottom: 1.5em; +} + + +/* Surround uppercase words and abbreviations with this class. + Based on work by Jørgen Arnor Gårdsø Lom [http://twistedintellect.com/] */ + +.caps { + font-variant: small-caps; + letter-spacing: 1px; + text-transform: lowercase; + font-size:1.2em; + line-height:1%; + font-weight:bold; + padding:0 2px; +} diff --git a/talks/blueprint/plugins/link-icons/icons/doc.png b/talks/blueprint/plugins/link-icons/icons/doc.png new file mode 100644 index 0000000..834cdfa Binary files /dev/null and b/talks/blueprint/plugins/link-icons/icons/doc.png differ diff --git a/talks/blueprint/plugins/link-icons/icons/email.png b/talks/blueprint/plugins/link-icons/icons/email.png new file mode 100644 index 0000000..7348aed Binary files /dev/null and b/talks/blueprint/plugins/link-icons/icons/email.png differ diff --git a/talks/blueprint/plugins/link-icons/icons/external.png b/talks/blueprint/plugins/link-icons/icons/external.png new file mode 100644 index 0000000..cf1cfb4 Binary files /dev/null and b/talks/blueprint/plugins/link-icons/icons/external.png differ diff --git a/talks/blueprint/plugins/link-icons/icons/feed.png b/talks/blueprint/plugins/link-icons/icons/feed.png new file mode 100644 index 0000000..315c4f4 Binary files /dev/null and b/talks/blueprint/plugins/link-icons/icons/feed.png differ diff --git a/talks/blueprint/plugins/link-icons/icons/im.png b/talks/blueprint/plugins/link-icons/icons/im.png new file mode 100644 index 0000000..79f35cc Binary files /dev/null and b/talks/blueprint/plugins/link-icons/icons/im.png differ diff --git a/talks/blueprint/plugins/link-icons/icons/pdf.png b/talks/blueprint/plugins/link-icons/icons/pdf.png new file mode 100644 index 0000000..8f8095e Binary files /dev/null and b/talks/blueprint/plugins/link-icons/icons/pdf.png differ diff --git a/talks/blueprint/plugins/link-icons/icons/visited.png b/talks/blueprint/plugins/link-icons/icons/visited.png new file mode 100644 index 0000000..ebf206d Binary files /dev/null and b/talks/blueprint/plugins/link-icons/icons/visited.png differ diff --git a/talks/blueprint/plugins/link-icons/icons/xls.png b/talks/blueprint/plugins/link-icons/icons/xls.png new file mode 100644 index 0000000..b977d7e Binary files /dev/null and b/talks/blueprint/plugins/link-icons/icons/xls.png differ diff --git a/talks/blueprint/plugins/link-icons/readme.txt b/talks/blueprint/plugins/link-icons/readme.txt new file mode 100644 index 0000000..fc4dc64 --- /dev/null +++ b/talks/blueprint/plugins/link-icons/readme.txt @@ -0,0 +1,18 @@ +Link Icons +* Icons for links based on protocol or file type. + +This is not supported in IE versions < 7. + + +Credits +---------------------------------------------------------------- + +* Marc Morgan +* Olav Bjorkoy [bjorkoy.com] + + +Usage +---------------------------------------------------------------- + +1) Add this line to your HTML: + diff --git a/talks/blueprint/plugins/link-icons/screen.css b/talks/blueprint/plugins/link-icons/screen.css new file mode 100644 index 0000000..7b4bef9 --- /dev/null +++ b/talks/blueprint/plugins/link-icons/screen.css @@ -0,0 +1,40 @@ +/* -------------------------------------------------------------- + + link-icons.css + * Icons for links based on protocol or file type. + + See the Readme file in this folder for additional instructions. + +-------------------------------------------------------------- */ + +/* Use this class if a link gets an icon when it shouldn't. */ +body a.noicon { + background:transparent none !important; + padding:0 !important; + margin:0 !important; +} + +/* Make sure the icons are not cut */ +a[href^="http:"], a[href^="mailto:"], a[href^="http:"]:visited, +a[href$=".pdf"], a[href$=".doc"], a[href$=".xls"], a[href$=".rss"], +a[href$=".rdf"], a[href^="aim:"] { + padding:2px 22px 2px 0; + margin:-2px 0; + background-repeat: no-repeat; + background-position: right center; +} + +/* External links */ +a[href^="http:"] { background-image: url(icons/external.png); } +a[href^="mailto:"] { background-image: url(icons/email.png); } +a[href^="http:"]:visited { background-image: url(icons/visited.png); } + +/* Files */ +a[href$=".pdf"] { background-image: url(icons/pdf.png); } +a[href$=".doc"] { background-image: url(icons/doc.png); } +a[href$=".xls"] { background-image: url(icons/xls.png); } + +/* Misc */ +a[href$=".rss"], +a[href$=".rdf"] { background-image: url(icons/feed.png); } +a[href^="aim:"] { background-image: url(icons/im.png); } diff --git a/talks/blueprint/plugins/rtl/readme.txt b/talks/blueprint/plugins/rtl/readme.txt new file mode 100644 index 0000000..5564c40 --- /dev/null +++ b/talks/blueprint/plugins/rtl/readme.txt @@ -0,0 +1,10 @@ +RTL +* Mirrors Blueprint, so it can be used with Right-to-Left languages. + +By Ran Yaniv Hartstein, ranh.co.il + +Usage +---------------------------------------------------------------- + +1) Add this line to your HTML: + diff --git a/talks/blueprint/plugins/rtl/screen.css b/talks/blueprint/plugins/rtl/screen.css new file mode 100644 index 0000000..7db7eb5 --- /dev/null +++ b/talks/blueprint/plugins/rtl/screen.css @@ -0,0 +1,110 @@ +/* -------------------------------------------------------------- + + rtl.css + * Mirrors Blueprint for left-to-right languages + + By Ran Yaniv Hartstein [ranh.co.il] + +-------------------------------------------------------------- */ + +body .container { direction: rtl; } +body .column, body .span-1, body .span-2, body .span-3, body .span-4, body .span-5, body .span-6, body .span-7, body .span-8, body .span-9, body .span-10, body .span-11, body .span-12, body .span-13, body .span-14, body .span-15, body .span-16, body .span-17, body .span-18, body .span-19, body .span-20, body .span-21, body .span-22, body .span-23, body .span-24 { + float: right; + margin-right: 0; + margin-left: 10px; + text-align:right; +} + +body div.last { margin-left: 0; } +body table .last { padding-left: 0; } + +body .append-1 { padding-right: 0; padding-left: 40px; } +body .append-2 { padding-right: 0; padding-left: 80px; } +body .append-3 { padding-right: 0; padding-left: 120px; } +body .append-4 { padding-right: 0; padding-left: 160px; } +body .append-5 { padding-right: 0; padding-left: 200px; } +body .append-6 { padding-right: 0; padding-left: 240px; } +body .append-7 { padding-right: 0; padding-left: 280px; } +body .append-8 { padding-right: 0; padding-left: 320px; } +body .append-9 { padding-right: 0; padding-left: 360px; } +body .append-10 { padding-right: 0; padding-left: 400px; } +body .append-11 { padding-right: 0; padding-left: 440px; } +body .append-12 { padding-right: 0; padding-left: 480px; } +body .append-13 { padding-right: 0; padding-left: 520px; } +body .append-14 { padding-right: 0; padding-left: 560px; } +body .append-15 { padding-right: 0; padding-left: 600px; } +body .append-16 { padding-right: 0; padding-left: 640px; } +body .append-17 { padding-right: 0; padding-left: 680px; } +body .append-18 { padding-right: 0; padding-left: 720px; } +body .append-19 { padding-right: 0; padding-left: 760px; } +body .append-20 { padding-right: 0; padding-left: 800px; } +body .append-21 { padding-right: 0; padding-left: 840px; } +body .append-22 { padding-right: 0; padding-left: 880px; } +body .append-23 { padding-right: 0; padding-left: 920px; } + +body .prepend-1 { padding-left: 0; padding-right: 40px; } +body .prepend-2 { padding-left: 0; padding-right: 80px; } +body .prepend-3 { padding-left: 0; padding-right: 120px; } +body .prepend-4 { padding-left: 0; padding-right: 160px; } +body .prepend-5 { padding-left: 0; padding-right: 200px; } +body .prepend-6 { padding-left: 0; padding-right: 240px; } +body .prepend-7 { padding-left: 0; padding-right: 280px; } +body .prepend-8 { padding-left: 0; padding-right: 320px; } +body .prepend-9 { padding-left: 0; padding-right: 360px; } +body .prepend-10 { padding-left: 0; padding-right: 400px; } +body .prepend-11 { padding-left: 0; padding-right: 440px; } +body .prepend-12 { padding-left: 0; padding-right: 480px; } +body .prepend-13 { padding-left: 0; padding-right: 520px; } +body .prepend-14 { padding-left: 0; padding-right: 560px; } +body .prepend-15 { padding-left: 0; padding-right: 600px; } +body .prepend-16 { padding-left: 0; padding-right: 640px; } +body .prepend-17 { padding-left: 0; padding-right: 680px; } +body .prepend-18 { padding-left: 0; padding-right: 720px; } +body .prepend-19 { padding-left: 0; padding-right: 760px; } +body .prepend-20 { padding-left: 0; padding-right: 800px; } +body .prepend-21 { padding-left: 0; padding-right: 840px; } +body .prepend-22 { padding-left: 0; padding-right: 880px; } +body .prepend-23 { padding-left: 0; padding-right: 920px; } + +body .border { + padding-right: 0; + padding-left: 4px; + margin-right: 0; + margin-left: 5px; + border-right: none; + border-left: 1px solid #eee; +} + +body .colborder { + padding-right: 0; + padding-left: 24px; + margin-right: 0; + margin-left: 25px; + border-right: none; + border-left: 1px solid #eee; +} + +body .pull-1 { margin-left: 0; margin-right: -40px; } +body .pull-2 { margin-left: 0; margin-right: -80px; } +body .pull-3 { margin-left: 0; margin-right: -120px; } +body .pull-4 { margin-left: 0; margin-right: -160px; } + +body .push-0 { margin: 0 18px 0 0; } +body .push-1 { margin: 0 18px 0 -40px; } +body .push-2 { margin: 0 18px 0 -80px; } +body .push-3 { margin: 0 18px 0 -120px; } +body .push-4 { margin: 0 18px 0 -160px; } +body .push-0, body .push-1, body .push-2, +body .push-3, body .push-4 { float: left; } + + +/* Typography with RTL support */ +body h1,body h2,body h3, +body h4,body h5,body h6 { font-family: Arial, sans-serif; } +html body { font-family: Arial, sans-serif; } +body pre,body code,body tt { font-family: monospace; } + +/* Mirror floats and margins on typographic elements */ +body p img { float: right; margin: 1.5em 0 1.5em 1.5em; } +body dd, body ul, body ol { margin-left: 0; margin-right: 1.5em;} +body td, body th { text-align:right; } diff --git a/talks/blueprint/print.css b/talks/blueprint/print.css new file mode 100644 index 0000000..fdb8220 --- /dev/null +++ b/talks/blueprint/print.css @@ -0,0 +1,29 @@ +/* ----------------------------------------------------------------------- + + + Blueprint CSS Framework 0.9 + http://blueprintcss.org + + * Copyright (c) 2007-Present. See LICENSE for more info. + * See README for instructions on how to use Blueprint. + * For credits and origins, see AUTHORS. + * This is a compressed file. See the sources in the 'src' directory. + +----------------------------------------------------------------------- */ + +/* print.css */ +body {line-height:1.5;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;color:#000;background:none;font-size:10pt;} +.container {background:none;} +hr {background:#ccc;color:#ccc;width:100%;height:2px;margin:2em 0;padding:0;border:none;} +hr.space {background:#fff;color:#fff;visibility:hidden;} +h1, h2, h3, h4, h5, h6 {font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif;} +code {font:.9em "Courier New", Monaco, Courier, monospace;} +a img {border:none;} +p img.top {margin-top:0;} +blockquote {margin:1.5em;padding:1em;font-style:italic;font-size:.9em;} +.small {font-size:.9em;} +.large {font-size:1.1em;} +.quiet {color:#999;} +.hide {display:none;} +a:link, a:visited {background:transparent;font-weight:700;text-decoration:underline;} +a:link:after, a:visited:after {content:" (" attr(href) ")";font-size:90%;} \ No newline at end of file diff --git a/talks/blueprint/screen.css b/talks/blueprint/screen.css new file mode 100644 index 0000000..0dad240 --- /dev/null +++ b/talks/blueprint/screen.css @@ -0,0 +1,265 @@ +/* ----------------------------------------------------------------------- + + + Blueprint CSS Framework 0.9 + http://blueprintcss.org + + * Copyright (c) 2007-Present. See LICENSE for more info. + * See README for instructions on how to use Blueprint. + * For credits and origins, see AUTHORS. + * This is a compressed file. See the sources in the 'src' directory. + +----------------------------------------------------------------------- */ + +/* reset.css */ +html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section {margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;} +article, aside, dialog, figure, footer, header, hgroup, nav, section {display:block;} +body {line-height:1.5;} +table {border-collapse:separate;border-spacing:0;} +caption, th, td {text-align:left;font-weight:normal;} +table, td, th {vertical-align:middle;} +blockquote:before, blockquote:after, q:before, q:after {content:"";} +blockquote, q {quotes:"" "";} +a img {border:none;} + +/* typography.css */ +html {font-size:100.01%;} +body {font-size:75%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;} +h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;} +h1 {font-size:3em;line-height:1;margin-bottom:0.5em; color: #999999;} +h2 {font-size:2em;margin-bottom:0.75em;} +h3 {font-size:1.5em;line-height:1;margin-bottom:1em; } +h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;} +h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;} +h6 {font-size:1em;font-weight:bold;} +h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;} +p {margin:0 0 1.5em;} +p img.left {float:left;margin:1.5em 1.5em 1.5em 0;padding:0;} +p img.right {float:right;margin:1.5em 0 1.5em 1.5em;} +a:focus, a:hover {color:#000;} +a {color:#009;text-decoration:underline;} +blockquote {margin:1.5em;color:#666;font-style:italic;} +strong {font-weight:bold;} +em, dfn {font-style:italic;} +dfn {font-weight:bold;} +sup, sub {line-height:0;} +abbr, acronym {border-bottom:1px dotted #666;} +address {margin:0 0 1.5em;font-style:italic;} +del {color:#666;} +pre {margin:1.5em 0;white-space:pre;} +pre, code, tt {font:1em 'andale mono', 'lucida console', monospace;line-height:1.5;} +li ul, li ol {margin:0;} +ul, ol {margin:0 1.5em 1.5em 0;padding-left:3.333em;} +ul {list-style-type:disc;} +ol {list-style-type:decimal;} +dl {margin:0 0 1.5em 0;} +dl dt {font-weight:bold;} +dd {margin-left:1.5em;} +table {margin-bottom:1.4em;width:100%;} +th {font-weight:bold;} +thead th {background:#c3d9ff;} +th, td, caption {padding:4px 10px 4px 5px;} +tr.even td {background:#e5ecf9;} +tfoot {font-style:italic;} +caption {background:#eee;} +.small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;} +.large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;} +.hide {display:none;} +.quiet {color:#666;} +.loud {color:#000;} +.highlight {background:#ff0;} +.added {background:#060;color:#fff;} +.removed {background:#900;color:#fff;} +.first {margin-left:0;padding-left:0;} +.last {margin-right:0;padding-right:0;} +.top {margin-top:0;padding-top:0;} +.bottom {margin-bottom:0;padding-bottom:0;} + +/* forms.css */ +label {font-weight:bold;} +fieldset {padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;} +legend {font-weight:bold;font-size:1.2em;} +input[type=text], input[type=password], input.text, input.title, textarea, select {background-color:#fff;border:1px solid #bbb;} +input[type=text]:focus, input[type=password]:focus, input.text:focus, input.title:focus, textarea:focus, select:focus {border-color:#666;} +input[type=text], input[type=password], input.text, input.title, textarea, select {margin:0.5em 0;} +input.text, input.title {width:300px;padding:5px;} +input.title {font-size:1.5em;} +textarea {width:390px;height:250px;padding:5px;} +input[type=checkbox], input[type=radio], input.checkbox, input.radio {position:relative;top:.25em;} +form.inline {line-height:3;} +form.inline p {margin-bottom:0;} +.error, .notice, .success {padding:.8em;margin-bottom:1em;border:2px solid #ddd;} +.error {background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;} +.notice {background:#FFF6BF;color:#514721;border-color:#FFD324;} +.success {background:#E6EFC2;color:#264409;border-color:#C6D880;} +.error a {color:#8a1f11;} +.notice a {color:#514721;} +.success a {color:#264409;} + +/* grid.css */ +.container {width:950px;margin:0 auto;} +.showgrid {background:url(src/grid.png);} +.column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, .span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 {float:left;margin-right:10px;} +.last {margin-right:0;} +.span-1 {width:30px;} +.span-2 {width:70px;} +.span-3 {width:110px;} +.span-4 {width:150px;} +.span-5 {width:190px;} +.span-6 {width:230px;} +.span-7 {width:270px;} +.span-8 {width:310px;} +.span-9 {width:350px;} +.span-10 {width:390px;} +.span-11 {width:430px;} +.span-12 {width:470px;} +.span-13 {width:510px;} +.span-14 {width:550px;} +.span-15 {width:590px;} +.span-16 {width:630px;} +.span-17 {width:670px;} +.span-18 {width:710px;} +.span-19 {width:750px;} +.span-20 {width:790px;} +.span-21 {width:830px;} +.span-22 {width:870px;} +.span-23 {width:910px;} +.span-24 {width:950px;margin-right:0;} +input.span-1, textarea.span-1, input.span-2, textarea.span-2, input.span-3, textarea.span-3, input.span-4, textarea.span-4, input.span-5, textarea.span-5, input.span-6, textarea.span-6, input.span-7, textarea.span-7, input.span-8, textarea.span-8, input.span-9, textarea.span-9, input.span-10, textarea.span-10, input.span-11, textarea.span-11, input.span-12, textarea.span-12, input.span-13, textarea.span-13, input.span-14, textarea.span-14, input.span-15, textarea.span-15, input.span-16, textarea.span-16, input.span-17, textarea.span-17, input.span-18, textarea.span-18, input.span-19, textarea.span-19, input.span-20, textarea.span-20, input.span-21, textarea.span-21, input.span-22, textarea.span-22, input.span-23, textarea.span-23, input.span-24, textarea.span-24 {border-left-width:1px!important;border-right-width:1px!important;padding-left:5px!important;padding-right:5px!important;} +input.span-1, textarea.span-1 {width:18px!important;} +input.span-2, textarea.span-2 {width:58px!important;} +input.span-3, textarea.span-3 {width:98px!important;} +input.span-4, textarea.span-4 {width:138px!important;} +input.span-5, textarea.span-5 {width:178px!important;} +input.span-6, textarea.span-6 {width:218px!important;} +input.span-7, textarea.span-7 {width:258px!important;} +input.span-8, textarea.span-8 {width:298px!important;} +input.span-9, textarea.span-9 {width:338px!important;} +input.span-10, textarea.span-10 {width:378px!important;} +input.span-11, textarea.span-11 {width:418px!important;} +input.span-12, textarea.span-12 {width:458px!important;} +input.span-13, textarea.span-13 {width:498px!important;} +input.span-14, textarea.span-14 {width:538px!important;} +input.span-15, textarea.span-15 {width:578px!important;} +input.span-16, textarea.span-16 {width:618px!important;} +input.span-17, textarea.span-17 {width:658px!important;} +input.span-18, textarea.span-18 {width:698px!important;} +input.span-19, textarea.span-19 {width:738px!important;} +input.span-20, textarea.span-20 {width:778px!important;} +input.span-21, textarea.span-21 {width:818px!important;} +input.span-22, textarea.span-22 {width:858px!important;} +input.span-23, textarea.span-23 {width:898px!important;} +input.span-24, textarea.span-24 {width:938px!important;} +.append-1 {padding-right:40px;} +.append-2 {padding-right:80px;} +.append-3 {padding-right:120px;} +.append-4 {padding-right:160px;} +.append-5 {padding-right:200px;} +.append-6 {padding-right:240px;} +.append-7 {padding-right:280px;} +.append-8 {padding-right:320px;} +.append-9 {padding-right:360px;} +.append-10 {padding-right:400px;} +.append-11 {padding-right:440px;} +.append-12 {padding-right:480px;} +.append-13 {padding-right:520px;} +.append-14 {padding-right:560px;} +.append-15 {padding-right:600px;} +.append-16 {padding-right:640px;} +.append-17 {padding-right:680px;} +.append-18 {padding-right:720px;} +.append-19 {padding-right:760px;} +.append-20 {padding-right:800px;} +.append-21 {padding-right:840px;} +.append-22 {padding-right:880px;} +.append-23 {padding-right:920px;} +.prepend-1 {padding-left:40px;} +.prepend-2 {padding-left:80px;} +.prepend-3 {padding-left:120px;} +.prepend-4 {padding-left:160px;} +.prepend-5 {padding-left:200px;} +.prepend-6 {padding-left:240px;} +.prepend-7 {padding-left:280px;} +.prepend-8 {padding-left:320px;} +.prepend-9 {padding-left:360px;} +.prepend-10 {padding-left:400px;} +.prepend-11 {padding-left:440px;} +.prepend-12 {padding-left:480px;} +.prepend-13 {padding-left:520px;} +.prepend-14 {padding-left:560px;} +.prepend-15 {padding-left:600px;} +.prepend-16 {padding-left:640px;} +.prepend-17 {padding-left:680px;} +.prepend-18 {padding-left:720px;} +.prepend-19 {padding-left:760px;} +.prepend-20 {padding-left:800px;} +.prepend-21 {padding-left:840px;} +.prepend-22 {padding-left:880px;} +.prepend-23 {padding-left:920px;} +.border {padding-right:4px;margin-right:5px;border-right:1px solid #eee;} +.colborder {padding-right:24px;margin-right:25px;border-right:1px solid #eee;} +.pull-1 {margin-left:-40px;} +.pull-2 {margin-left:-80px;} +.pull-3 {margin-left:-120px;} +.pull-4 {margin-left:-160px;} +.pull-5 {margin-left:-200px;} +.pull-6 {margin-left:-240px;} +.pull-7 {margin-left:-280px;} +.pull-8 {margin-left:-320px;} +.pull-9 {margin-left:-360px;} +.pull-10 {margin-left:-400px;} +.pull-11 {margin-left:-440px;} +.pull-12 {margin-left:-480px;} +.pull-13 {margin-left:-520px;} +.pull-14 {margin-left:-560px;} +.pull-15 {margin-left:-600px;} +.pull-16 {margin-left:-640px;} +.pull-17 {margin-left:-680px;} +.pull-18 {margin-left:-720px;} +.pull-19 {margin-left:-760px;} +.pull-20 {margin-left:-800px;} +.pull-21 {margin-left:-840px;} +.pull-22 {margin-left:-880px;} +.pull-23 {margin-left:-920px;} +.pull-24 {margin-left:-960px;} +.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 {float:left;position:relative;} +.push-1 {margin:0 -40px 1.5em 40px;} +.push-2 {margin:0 -80px 1.5em 80px;} +.push-3 {margin:0 -120px 1.5em 120px;} +.push-4 {margin:0 -160px 1.5em 160px;} +.push-5 {margin:0 -200px 1.5em 200px;} +.push-6 {margin:0 -240px 1.5em 240px;} +.push-7 {margin:0 -280px 1.5em 280px;} +.push-8 {margin:0 -320px 1.5em 320px;} +.push-9 {margin:0 -360px 1.5em 360px;} +.push-10 {margin:0 -400px 1.5em 400px;} +.push-11 {margin:0 -440px 1.5em 440px;} +.push-12 {margin:0 -480px 1.5em 480px;} +.push-13 {margin:0 -520px 1.5em 520px;} +.push-14 {margin:0 -560px 1.5em 560px;} +.push-15 {margin:0 -600px 1.5em 600px;} +.push-16 {margin:0 -640px 1.5em 640px;} +.push-17 {margin:0 -680px 1.5em 680px;} +.push-18 {margin:0 -720px 1.5em 720px;} +.push-19 {margin:0 -760px 1.5em 760px;} +.push-20 {margin:0 -800px 1.5em 800px;} +.push-21 {margin:0 -840px 1.5em 840px;} +.push-22 {margin:0 -880px 1.5em 880px;} +.push-23 {margin:0 -920px 1.5em 920px;} +.push-24 {margin:0 -960px 1.5em 960px;} +.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 {float:right;position:relative;} +.prepend-top {margin-top:1.5em;} +.append-bottom {margin-bottom:1.5em;} +.box {padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;} +hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;} +hr.space {background:#fff;color:#fff;visibility:hidden;} +.clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;} +.clearfix, .container {display:block;} +.clear {clear:both;} +.twitter { list-style-image: url(../twitter.png);} +.mail { list-style-image: url(../email-black.jpg);} +.linkedin { list-style-image: url(../linkedin.png);} +.irc { list-style-image: url(../irc.png);} +h5 a { + text-decoration:none; +} diff --git a/talks/blueprint/src/forms.css b/talks/blueprint/src/forms.css new file mode 100644 index 0000000..b491134 --- /dev/null +++ b/talks/blueprint/src/forms.css @@ -0,0 +1,65 @@ +/* -------------------------------------------------------------- + + forms.css + * Sets up some default styling for forms + * Gives you classes to enhance your forms + + Usage: + * For text fields, use class .title or .text + * For inline forms, use .inline (even when using columns) + +-------------------------------------------------------------- */ + +label { font-weight: bold; } +fieldset { padding:1.4em; margin: 0 0 1.5em 0; border: 1px solid #ccc; } +legend { font-weight: bold; font-size:1.2em; } + + +/* Form fields +-------------------------------------------------------------- */ + +input[type=text], input[type=password], +input.text, input.title, +textarea, select { + background-color:#fff; + border:1px solid #bbb; +} +input[type=text]:focus, input[type=password]:focus, +input.text:focus, input.title:focus, +textarea:focus, select:focus { + border-color:#666; +} + +input[type=text], input[type=password], +input.text, input.title, +textarea, select { + margin:0.5em 0; +} + +input.text, +input.title { width: 300px; padding:5px; } +input.title { font-size:1.5em; } +textarea { width: 390px; height: 250px; padding:5px; } + +input[type=checkbox], input[type=radio], +input.checkbox, input.radio { + position:relative; top:.25em; +} + +form.inline { line-height:3; } +form.inline p { margin-bottom:0; } + + +/* Success, notice and error boxes +-------------------------------------------------------------- */ + +.error, +.notice, +.success { padding: .8em; margin-bottom: 1em; border: 2px solid #ddd; } + +.error { background: #FBE3E4; color: #8a1f11; border-color: #FBC2C4; } +.notice { background: #FFF6BF; color: #514721; border-color: #FFD324; } +.success { background: #E6EFC2; color: #264409; border-color: #C6D880; } +.error a { color: #8a1f11; } +.notice a { color: #514721; } +.success a { color: #264409; } diff --git a/talks/blueprint/src/grid.css b/talks/blueprint/src/grid.css new file mode 100755 index 0000000..eb07356 --- /dev/null +++ b/talks/blueprint/src/grid.css @@ -0,0 +1,280 @@ +/* -------------------------------------------------------------- + + grid.css + * Sets up an easy-to-use grid of 24 columns. + + By default, the grid is 950px wide, with 24 columns + spanning 30px, and a 10px margin between columns. + + If you need fewer or more columns, namespaces or semantic + element names, use the compressor script (lib/compress.rb) + +-------------------------------------------------------------- */ + +/* A container should group all your columns. */ +.container { + width: 950px; + margin: 0 auto; +} + +/* Use this class on any .span / container to see the grid. */ +.showgrid { + background: url(src/grid.png); +} + + +/* Columns +-------------------------------------------------------------- */ + +/* Sets up basic grid floating and margin. */ +.column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, .span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 { + float: left; + margin-right: 10px; +} + +/* The last column in a row needs this class. */ +.last { margin-right: 0; } + +/* Use these classes to set the width of a column. */ +.span-1 {width: 30px;} + +.span-2 {width: 70px;} +.span-3 {width: 110px;} +.span-4 {width: 150px;} +.span-5 {width: 190px;} +.span-6 {width: 230px;} +.span-7 {width: 270px;} +.span-8 {width: 310px;} +.span-9 {width: 350px;} +.span-10 {width: 390px;} +.span-11 {width: 430px;} +.span-12 {width: 470px;} +.span-13 {width: 510px;} +.span-14 {width: 550px;} +.span-15 {width: 590px;} +.span-16 {width: 630px;} +.span-17 {width: 670px;} +.span-18 {width: 710px;} +.span-19 {width: 750px;} +.span-20 {width: 790px;} +.span-21 {width: 830px;} +.span-22 {width: 870px;} +.span-23 {width: 910px;} +.span-24 {width:950px; margin-right:0;} + +/* Use these classes to set the width of an input. */ +input.span-1, textarea.span-1, input.span-2, textarea.span-2, input.span-3, textarea.span-3, input.span-4, textarea.span-4, input.span-5, textarea.span-5, input.span-6, textarea.span-6, input.span-7, textarea.span-7, input.span-8, textarea.span-8, input.span-9, textarea.span-9, input.span-10, textarea.span-10, input.span-11, textarea.span-11, input.span-12, textarea.span-12, input.span-13, textarea.span-13, input.span-14, textarea.span-14, input.span-15, textarea.span-15, input.span-16, textarea.span-16, input.span-17, textarea.span-17, input.span-18, textarea.span-18, input.span-19, textarea.span-19, input.span-20, textarea.span-20, input.span-21, textarea.span-21, input.span-22, textarea.span-22, input.span-23, textarea.span-23, input.span-24, textarea.span-24 { + border-left-width: 1px!important; + border-right-width: 1px!important; + padding-left: 5px!important; + padding-right: 5px!important; +} + +input.span-1, textarea.span-1 { width: 18px!important; } +input.span-2, textarea.span-2 { width: 58px!important; } +input.span-3, textarea.span-3 { width: 98px!important; } +input.span-4, textarea.span-4 { width: 138px!important; } +input.span-5, textarea.span-5 { width: 178px!important; } +input.span-6, textarea.span-6 { width: 218px!important; } +input.span-7, textarea.span-7 { width: 258px!important; } +input.span-8, textarea.span-8 { width: 298px!important; } +input.span-9, textarea.span-9 { width: 338px!important; } +input.span-10, textarea.span-10 { width: 378px!important; } +input.span-11, textarea.span-11 { width: 418px!important; } +input.span-12, textarea.span-12 { width: 458px!important; } +input.span-13, textarea.span-13 { width: 498px!important; } +input.span-14, textarea.span-14 { width: 538px!important; } +input.span-15, textarea.span-15 { width: 578px!important; } +input.span-16, textarea.span-16 { width: 618px!important; } +input.span-17, textarea.span-17 { width: 658px!important; } +input.span-18, textarea.span-18 { width: 698px!important; } +input.span-19, textarea.span-19 { width: 738px!important; } +input.span-20, textarea.span-20 { width: 778px!important; } +input.span-21, textarea.span-21 { width: 818px!important; } +input.span-22, textarea.span-22 { width: 858px!important; } +input.span-23, textarea.span-23 { width: 898px!important; } +input.span-24, textarea.span-24 { width: 938px!important; } + +/* Add these to a column to append empty cols. */ + +.append-1 { padding-right: 40px;} +.append-2 { padding-right: 80px;} +.append-3 { padding-right: 120px;} +.append-4 { padding-right: 160px;} +.append-5 { padding-right: 200px;} +.append-6 { padding-right: 240px;} +.append-7 { padding-right: 280px;} +.append-8 { padding-right: 320px;} +.append-9 { padding-right: 360px;} +.append-10 { padding-right: 400px;} +.append-11 { padding-right: 440px;} +.append-12 { padding-right: 480px;} +.append-13 { padding-right: 520px;} +.append-14 { padding-right: 560px;} +.append-15 { padding-right: 600px;} +.append-16 { padding-right: 640px;} +.append-17 { padding-right: 680px;} +.append-18 { padding-right: 720px;} +.append-19 { padding-right: 760px;} +.append-20 { padding-right: 800px;} +.append-21 { padding-right: 840px;} +.append-22 { padding-right: 880px;} +.append-23 { padding-right: 920px;} + +/* Add these to a column to prepend empty cols. */ + +.prepend-1 { padding-left: 40px;} +.prepend-2 { padding-left: 80px;} +.prepend-3 { padding-left: 120px;} +.prepend-4 { padding-left: 160px;} +.prepend-5 { padding-left: 200px;} +.prepend-6 { padding-left: 240px;} +.prepend-7 { padding-left: 280px;} +.prepend-8 { padding-left: 320px;} +.prepend-9 { padding-left: 360px;} +.prepend-10 { padding-left: 400px;} +.prepend-11 { padding-left: 440px;} +.prepend-12 { padding-left: 480px;} +.prepend-13 { padding-left: 520px;} +.prepend-14 { padding-left: 560px;} +.prepend-15 { padding-left: 600px;} +.prepend-16 { padding-left: 640px;} +.prepend-17 { padding-left: 680px;} +.prepend-18 { padding-left: 720px;} +.prepend-19 { padding-left: 760px;} +.prepend-20 { padding-left: 800px;} +.prepend-21 { padding-left: 840px;} +.prepend-22 { padding-left: 880px;} +.prepend-23 { padding-left: 920px;} + + +/* Border on right hand side of a column. */ +.border { + padding-right: 4px; + margin-right: 5px; + border-right: 1px solid #eee; +} + +/* Border with more whitespace, spans one column. */ +.colborder { + padding-right: 24px; + margin-right: 25px; + border-right: 1px solid #eee; +} + + +/* Use these classes on an element to push it into the +next column, or to pull it into the previous column. */ + + +.pull-1 { margin-left: -40px; } +.pull-2 { margin-left: -80px; } +.pull-3 { margin-left: -120px; } +.pull-4 { margin-left: -160px; } +.pull-5 { margin-left: -200px; } +.pull-6 { margin-left: -240px; } +.pull-7 { margin-left: -280px; } +.pull-8 { margin-left: -320px; } +.pull-9 { margin-left: -360px; } +.pull-10 { margin-left: -400px; } +.pull-11 { margin-left: -440px; } +.pull-12 { margin-left: -480px; } +.pull-13 { margin-left: -520px; } +.pull-14 { margin-left: -560px; } +.pull-15 { margin-left: -600px; } +.pull-16 { margin-left: -640px; } +.pull-17 { margin-left: -680px; } +.pull-18 { margin-left: -720px; } +.pull-19 { margin-left: -760px; } +.pull-20 { margin-left: -800px; } +.pull-21 { margin-left: -840px; } +.pull-22 { margin-left: -880px; } +.pull-23 { margin-left: -920px; } +.pull-24 { margin-left: -960px; } + +.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 {float: left; position:relative;} + + +.push-1 { margin: 0 -40px 1.5em 40px; } +.push-2 { margin: 0 -80px 1.5em 80px; } +.push-3 { margin: 0 -120px 1.5em 120px; } +.push-4 { margin: 0 -160px 1.5em 160px; } +.push-5 { margin: 0 -200px 1.5em 200px; } +.push-6 { margin: 0 -240px 1.5em 240px; } +.push-7 { margin: 0 -280px 1.5em 280px; } +.push-8 { margin: 0 -320px 1.5em 320px; } +.push-9 { margin: 0 -360px 1.5em 360px; } +.push-10 { margin: 0 -400px 1.5em 400px; } +.push-11 { margin: 0 -440px 1.5em 440px; } +.push-12 { margin: 0 -480px 1.5em 480px; } +.push-13 { margin: 0 -520px 1.5em 520px; } +.push-14 { margin: 0 -560px 1.5em 560px; } +.push-15 { margin: 0 -600px 1.5em 600px; } +.push-16 { margin: 0 -640px 1.5em 640px; } +.push-17 { margin: 0 -680px 1.5em 680px; } +.push-18 { margin: 0 -720px 1.5em 720px; } +.push-19 { margin: 0 -760px 1.5em 760px; } +.push-20 { margin: 0 -800px 1.5em 800px; } +.push-21 { margin: 0 -840px 1.5em 840px; } +.push-22 { margin: 0 -880px 1.5em 880px; } +.push-23 { margin: 0 -920px 1.5em 920px; } +.push-24 { margin: 0 -960px 1.5em 960px; } + +.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 {float: right; position:relative;} + + +/* Misc classes and elements +-------------------------------------------------------------- */ + +/* In case you need to add a gutter above/below an element */ +.prepend-top { + margin-top:1.5em; +} +.append-bottom { + margin-bottom:1.5em; +} + +/* Use a .box to create a padded box inside a column. */ +.box { + padding: 1.5em; + margin-bottom: 1.5em; + background: #E5ECF9; +} + +/* Use this to create a horizontal ruler across a column. */ +hr { + background: #ddd; + color: #ddd; + clear: both; + float: none; + width: 100%; + height: .1em; + margin: 0 0 1.45em; + border: none; +} + +hr.space { + background: #fff; + color: #fff; + visibility: hidden; +} + + +/* Clearing floats without extra markup + Based on How To Clear Floats Without Structural Markup by PiE + [http://www.positioniseverything.net/easyclearing.html] */ + +.clearfix:after, .container:after { + content: "\0020"; + display: block; + height: 0; + clear: both; + visibility: hidden; + overflow:hidden; +} +.clearfix, .container {display: block;} + +/* Regular clearing + apply to column that should drop below previous ones. */ + +.clear { clear:both; } diff --git a/talks/blueprint/src/grid.png b/talks/blueprint/src/grid.png new file mode 100644 index 0000000..d42a6c3 Binary files /dev/null and b/talks/blueprint/src/grid.png differ diff --git a/talks/blueprint/src/ie.css b/talks/blueprint/src/ie.css new file mode 100644 index 0000000..0f458e6 --- /dev/null +++ b/talks/blueprint/src/ie.css @@ -0,0 +1,76 @@ +/* -------------------------------------------------------------- + + ie.css + + Contains every hack for Internet Explorer, + so that our core files stay sweet and nimble. + +-------------------------------------------------------------- */ + +/* Make sure the layout is centered in IE5 */ +body { text-align: center; } +.container { text-align: left; } + +/* Fixes IE margin bugs */ +* html .column, * html .span-1, * html .span-2, +* html .span-3, * html .span-4, * html .span-5, +* html .span-6, * html .span-7, * html .span-8, +* html .span-9, * html .span-10, * html .span-11, +* html .span-12, * html .span-13, * html .span-14, +* html .span-15, * html .span-16, * html .span-17, +* html .span-18, * html .span-19, * html .span-20, +* html .span-21, * html .span-22, * html .span-23, +* html .span-24 { display:inline; overflow-x: hidden; } + + +/* Elements +-------------------------------------------------------------- */ + +/* Fixes incorrect styling of legend in IE6. */ +* html legend { margin:0px -8px 16px 0; padding:0; } + +/* Fixes wrong line-height on sup/sub in IE. */ +sup { vertical-align:text-top; } +sub { vertical-align:text-bottom; } + +/* Fixes IE7 missing wrapping of code elements. */ +html>body p code { *white-space: normal; } + +/* IE 6&7 has problems with setting proper
margins. */ +hr { margin:-8px auto 11px; } + +/* Explicitly set interpolation, allowing dynamically resized images to not look horrible */ +img { -ms-interpolation-mode:bicubic; } + +/* Clearing +-------------------------------------------------------------- */ + +/* Makes clearfix actually work in IE */ +.clearfix, .container { display:inline-block; } +* html .clearfix, +* html .container { height:1%; } + + +/* Forms +-------------------------------------------------------------- */ + +/* Fixes padding on fieldset */ +fieldset { padding-top:0; } + +/* Makes classic textareas in IE 6 resemble other browsers */ +textarea { overflow:auto; } + +/* Fixes rule that IE 6 ignores */ +input.text, input.title, textarea { background-color:#fff; border:1px solid #bbb; } +input.text:focus, input.title:focus { border-color:#666; } +input.text, input.title, textarea, select { margin:0.5em 0; } +input.checkbox, input.radio { position:relative; top:.25em; } + +/* Fixes alignment of inline form elements */ +form.inline div, form.inline p { vertical-align:middle; } +form.inline label { position:relative;top:-0.25em; } +form.inline input.checkbox, form.inline input.radio, +form.inline input.button, form.inline button { + margin:0.5em 0; +} +button, input.button { position:relative;top:0.25em; } diff --git a/talks/blueprint/src/print.css b/talks/blueprint/src/print.css new file mode 100755 index 0000000..bbc7948 --- /dev/null +++ b/talks/blueprint/src/print.css @@ -0,0 +1,85 @@ +/* -------------------------------------------------------------- + + print.css + * Gives you some sensible styles for printing pages. + * See Readme file in this directory for further instructions. + + Some additions you'll want to make, customized to your markup: + #header, #footer, #navigation { display:none; } + +-------------------------------------------------------------- */ + +body { + line-height: 1.5; + font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; + color:#000; + background: none; + font-size: 10pt; +} + + +/* Layout +-------------------------------------------------------------- */ + +.container { + background: none; +} + +hr { + background:#ccc; + color:#ccc; + width:100%; + height:2px; + margin:2em 0; + padding:0; + border:none; +} +hr.space { + background: #fff; + color: #fff; + visibility: hidden; +} + + +/* Text +-------------------------------------------------------------- */ + +h1,h2,h3,h4,h5,h6 { font-family: "Helvetica Neue", Arial, "Lucida Grande", sans-serif; } +code { font:.9em "Courier New", Monaco, Courier, monospace; } + +a img { border:none; } +p img.top { margin-top: 0; } + +blockquote { + margin:1.5em; + padding:1em; + font-style:italic; + font-size:.9em; +} + +.small { font-size: .9em; } +.large { font-size: 1.1em; } +.quiet { color: #999; } +.hide { display:none; } + + +/* Links +-------------------------------------------------------------- */ + +a:link, a:visited { + background: transparent; + font-weight:700; + text-decoration: underline; +} + +a:link:after, a:visited:after { + content: " (" attr(href) ")"; + font-size: 90%; +} + +/* If you're having trouble printing relative links, uncomment and customize this: + (note: This is valid CSS3, but it still won't go through the W3C CSS Validator) */ + +/* a[href^="/"]:after { + content: " (http://www.yourdomain.com" attr(href) ") "; +} */ diff --git a/talks/blueprint/src/reset.css b/talks/blueprint/src/reset.css new file mode 100755 index 0000000..09d9131 --- /dev/null +++ b/talks/blueprint/src/reset.css @@ -0,0 +1,45 @@ +/* -------------------------------------------------------------- + + reset.css + * Resets default browser CSS. + +-------------------------------------------------------------- */ + +html, body, div, span, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, code, +del, dfn, em, img, q, dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, dialog, figure, footer, header, +hgroup, nav, section { + margin: 0; + padding: 0; + border: 0; + font-weight: inherit; + font-style: inherit; + font-size: 100%; + font-family: inherit; + vertical-align: baseline; +} + +article, aside, dialog, figure, footer, header, +hgroup, nav, section { + display:block; +} + +body { + line-height: 1.5; +} + +/* Tables still need 'cellspacing="0"' in the markup. */ +table { border-collapse: separate; border-spacing: 0; } +caption, th, td { text-align: left; font-weight: normal; } +table, td, th { vertical-align: middle; } + +/* Remove possible quote marks (") from ,
. */ +blockquote:before, blockquote:after, q:before, q:after { content: ""; } +blockquote, q { quotes: "" ""; } + +/* Remove annoying border on linked images. */ +a img { border: none; } diff --git a/talks/blueprint/src/typography.css b/talks/blueprint/src/typography.css new file mode 100644 index 0000000..a1cfe27 --- /dev/null +++ b/talks/blueprint/src/typography.css @@ -0,0 +1,106 @@ +/* -------------------------------------------------------------- + + typography.css + * Sets up some sensible default typography. + +-------------------------------------------------------------- */ + +/* Default font settings. + The font-size percentage is of 16px. (0.75 * 16px = 12px) */ +html { font-size:100.01%; } +body { + font-size: 75%; + color: #222; + background: #fff; + font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; +} + + +/* Headings +-------------------------------------------------------------- */ + +h1,h2,h3,h4,h5,h6 { font-weight: normal; color: #111; } + +h1 { font-size: 3em; line-height: 1; margin-bottom: 0.5em; } +h2 { font-size: 2em; margin-bottom: 0.75em; } +h3 { font-size: 1.5em; line-height: 1; margin-bottom: 1em; } +h4 { font-size: 1.2em; line-height: 1.25; margin-bottom: 1.25em; } +h5 { font-size: 1em; font-weight: bold; margin-bottom: 1.5em; } +h6 { font-size: 1em; font-weight: bold; } + +h1 img, h2 img, h3 img, +h4 img, h5 img, h6 img { + margin: 0; +} + + +/* Text elements +-------------------------------------------------------------- */ + +p { margin: 0 0 1.5em; } +p img.left { float: left; margin: 1.5em 1.5em 1.5em 0; padding: 0; } +p img.right { float: right; margin: 1.5em 0 1.5em 1.5em; } + +a:focus, +a:hover { color: #000; } +a { color: #009; text-decoration: underline; } + +blockquote { margin: 1.5em; color: #666; font-style: italic; } +strong { font-weight: bold; } +em,dfn { font-style: italic; } +dfn { font-weight: bold; } +sup, sub { line-height: 0; } + +abbr, +acronym { border-bottom: 1px dotted #666; } +address { margin: 0 0 1.5em; font-style: italic; } +del { color:#666; } + +pre { margin: 1.5em 0; white-space: pre; } +pre,code,tt { font: 1em 'andale mono', 'lucida console', monospace; line-height: 1.5; } + + +/* Lists +-------------------------------------------------------------- */ + +li ul, +li ol { margin: 0; } +ul, ol { margin: 0 1.5em 1.5em 0; padding-left: 3.333em; } + +ul { list-style-type: disc; } +ol { list-style-type: decimal; } + +dl { margin: 0 0 1.5em 0; } +dl dt { font-weight: bold; } +dd { margin-left: 1.5em;} + + +/* Tables +-------------------------------------------------------------- */ + +table { margin-bottom: 1.4em; width:100%; } +th { font-weight: bold; } +thead th { background: #c3d9ff; } +th,td,caption { padding: 4px 10px 4px 5px; } +tr.even td { background: #e5ecf9; } +tfoot { font-style: italic; } +caption { background: #eee; } + + +/* Misc classes +-------------------------------------------------------------- */ + +.small { font-size: .8em; margin-bottom: 1.875em; line-height: 1.875em; } +.large { font-size: 1.2em; line-height: 2.5em; margin-bottom: 1.25em; } +.hide { display: none; } + +.quiet { color: #666; } +.loud { color: #000; } +.highlight { background:#ff0; } +.added { background:#060; color: #fff; } +.removed { background:#900; color: #fff; } + +.first { margin-left:0; padding-left:0; } +.last { margin-right:0; padding-right:0; } +.top { margin-top:0; padding-top:0; } +.bottom { margin-bottom:0; padding-bottom:0; } diff --git a/talks/index.html b/talks/index.html new file mode 100644 index 0000000..ad8400e --- /dev/null +++ b/talks/index.html @@ -0,0 +1,37 @@ + + + + gnusosa - Carlos Ivan Sosa + + + + + + + +
+
+
+
+

+ gnusosa +

+
+

+ Talks and Workshops +

+

This is a recollection of talks and workshops I've given in the past.

+

Make better use of Vim - This talk was presented at Hackmeet 2012. +
+ Basic use of Vim, How to effectively edit a file, and its Philosophy. +

+
+
+
+
+
+
+
+ + diff --git a/talks/workshop-vim-hackmeet/img/Bill_joy.jpg b/talks/workshop-vim-hackmeet/img/Bill_joy.jpg new file mode 100755 index 0000000..f854085 Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/Bill_joy.jpg differ diff --git a/talks/workshop-vim-hackmeet/img/Bram_Moo.jpg b/talks/workshop-vim-hackmeet/img/Bram_Moo.jpg new file mode 100755 index 0000000..f400779 Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/Bram_Moo.jpg differ diff --git a/talks/workshop-vim-hackmeet/img/bonsai.jpg b/talks/workshop-vim-hackmeet/img/bonsai.jpg new file mode 100755 index 0000000..fa26f18 Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/bonsai.jpg differ diff --git a/talks/workshop-vim-hackmeet/img/chibibonsa.jpg b/talks/workshop-vim-hackmeet/img/chibibonsa.jpg new file mode 100755 index 0000000..bd5595a Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/chibibonsa.jpg differ diff --git a/talks/workshop-vim-hackmeet/img/grafica.jpg b/talks/workshop-vim-hackmeet/img/grafica.jpg new file mode 100755 index 0000000..c8c0c49 Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/grafica.jpg differ diff --git a/talks/workshop-vim-hackmeet/img/grafica2.jpg b/talks/workshop-vim-hackmeet/img/grafica2.jpg new file mode 100755 index 0000000..33db640 Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/grafica2.jpg differ diff --git a/talks/workshop-vim-hackmeet/img/iching.png b/talks/workshop-vim-hackmeet/img/iching.png new file mode 100755 index 0000000..3cfcacf Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/iching.png differ diff --git a/talks/workshop-vim-hackmeet/img/me.jpg b/talks/workshop-vim-hackmeet/img/me.jpg new file mode 100755 index 0000000..ca4bd88 Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/me.jpg differ diff --git a/talks/workshop-vim-hackmeet/img/monje.jpg b/talks/workshop-vim-hackmeet/img/monje.jpg new file mode 100755 index 0000000..70937e2 Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/monje.jpg differ diff --git a/talks/workshop-vim-hackmeet/img/screen.jpg b/talks/workshop-vim-hackmeet/img/screen.jpg new file mode 100755 index 0000000..7b2b31f Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/screen.jpg differ diff --git a/talks/workshop-vim-hackmeet/img/vim-editor_logo.png b/talks/workshop-vim-hackmeet/img/vim-editor_logo.png new file mode 100755 index 0000000..6dc29b3 Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/vim-editor_logo.png differ diff --git a/talks/workshop-vim-hackmeet/img/vim-fire.gif b/talks/workshop-vim-hackmeet/img/vim-fire.gif new file mode 100755 index 0000000..ab04a01 Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/vim-fire.gif differ diff --git a/talks/workshop-vim-hackmeet/img/vim-screenshot1.png b/talks/workshop-vim-hackmeet/img/vim-screenshot1.png new file mode 100755 index 0000000..6eb814b Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/vim-screenshot1.png differ diff --git a/talks/workshop-vim-hackmeet/img/zen2.gif b/talks/workshop-vim-hackmeet/img/zen2.gif new file mode 100755 index 0000000..8c5a83d Binary files /dev/null and b/talks/workshop-vim-hackmeet/img/zen2.gif differ diff --git a/talks/workshop-vim-hackmeet/index.html b/talks/workshop-vim-hackmeet/index.html new file mode 100644 index 0000000..b693e44 --- /dev/null +++ b/talks/workshop-vim-hackmeet/index.html @@ -0,0 +1,807 @@ + + + Make use of Vim + + + + + + + + +
+head-icon +

Make use of Vim

+
+
+vim-fuego +

Make use of Vim

+
+
+
+

Make use of Vim

+ +

Carlos Sosa
+gnusosa@gnusosa.net

+
+
+

Index

+
+
+
bonsai
+
    + +
  • Introduction +
      +
    • What is Vim?
    • +
    • Vim is not.
    • +
    • History.
    • +
    • Vim ne Vi
    • +
    • How do you use it? (How do you eat it?)
    • +
    • Modular = Modes
    • +
    +
  • +
+
+
+
+

Index

+
+
+
monje
+
    + +
  • Philosophy +
      +
    • KISS.
    • +
    • Programmer Virtues.
    • +
    • Edit, Don't type.
    • +
    • Seven habits of effective text editing.
    • +
    +
  • +
+
+
+
+

Index

+
+
+
zen2
+
    + +
  • The Zen of Vim +
      +
    • Control your energy. (Command line)
    • +
    • Don't waste your energy moving. (Command Mode)
    • +
    • Don't run through the valley, jump it. (Advance Command Mode)
    • +
    • Recycle, Reduce, Reuse. (Visual Mode)
    • +
    • Only record the essential. (Insertion Mode)
    • +
    • The one that repeats itself, loses. (dot and macros)
    • +
    • Beauty is essence. (Editing code)
    • +
    +
  • +
+
+
+
+

Index

+
+
+
img/iching.png
+
    + +
  • Seven habits of effective text editing. +
      +
    • Move around quickly.
    • +
    • Don't type it twice.
    • +
    • Fix it when it's wrong.
    • +
    • A file seldom comes alone.
    • +
    • Let's work together.
    • +
    • Text is structured.
    • +
    • Make it a habit (sharpen the saw).
    • +
    +
  • +
+
+
+
+
+

OH HAI!

+
+ Me +
+

Vim is mah editor.
+ I can't work without Vim (sadly). KTHX. BAI

+
+
+
+

Work

+
+ Escritorio +
+

Life is suffering.

+
+
+
+

I < Graphs

+
+ grafica +
+

PAYS RENT
+ SUPER BORING COMPARED TO A WEB APP.

+
+
+
+

I < Graphs

+
+ grafica +
+

PAYS RENT
+ SUPER BORING COMPARED TO A WEB APP.

+
+
+

Introduction

+
+
+ +
vim-screenshot
+

What is Vim?

+
    + +
  • Vim is a modular text editor.
    A clone of the infamous editor vi.

    Main Features: +
      +
    • Spell check integrated.
    • +
    • Auto complete of text and tokens.
    • +
    • Redo and Undo.
    • +
    • Tabs and buffer.
    • +
    • Multiple Window Area.
    • +
    • Syntax Highlighting and Tags.
    • +
    • Scripting language to create your own extensions.
    • +
    +
  • +
+
+
+
+

Introduction

+
+
+ +
vim-screen
+

Vim is not:

+
    + +
  • Vim is a text editor, NOT an IDE. +
      +
    • Not graphical. Sorry, terminal or gvim.
    • +
    • Not a text formatter.
    • +
    • Not WYSIWYG.
    • +
    • Not for everyone.
    • +
    • Vim script works only with text.
    • +
    • Not Emacs.
    • +
    +
  • +
+
+
+
+
+

BUT...

+
+

You can make use of Vim like the latter.

+
+

Vim Script enables developers to create plugins.
+ But don't abuse plugins, make use of what really is essential.

+
+
+

Introduction

+
+
+
BramMoo-vim
+

History

+
    + +
  • Bram Moolenaar. In 1991, he published the first version of Vim. +
      +
    • Vim was first written for the Amiga.
    • +
    • Vim exists since the times of USENET.
    • +
    • Vim started with a strong community.
    • +
    +
  • +
+
+
+
+

Introduction

+
+
+
Billjoy-vi
+

History

+
    + +
  • Bill Joy. He wrote Vi inspired by the union of ed and ex. +
      +
    • Learn to read when he was 3 years old.
    • +
    • Prodigy alumni of UC Berkeley.
    • +
    • One of the main contributors and designers of BSD.
    • +
    • One of the core devs of the foundation of SunOS, now Solaris.
    • +
    • Sun Microsystems engineer.
    • +
    +
  • +
+
+
+
+
+ +
+

Vim ne Vi

+

ne eq "not equal"
+ eq === "equal"

+
+
+
+

Introduction

+
+
+

How do you use it?

+
    + +
  • How do you eat it? +
      +
    • Vim is modular.
    • +
    • Depending on the mode it is, it will be its interpretation.
    • +
    • Each key is a command or an action.
    • +
    • Vim is never wrong, Vim never makes mistakes, We make mistakes.
    • +
    • Vim handles texts, not files.
    • +
    +
  • +
+
+
+
+

Philosophy

+
+
+

KISS.

+
    + +
  • Keep It Simple Stupid +
      +
    • Minimalism is beauty.
    • +
    • Write software that only manages text.
    • +
    • Choose portability over efficiency.
    • +
    • Every file should be a text file.
    • +
    +
  • +
+
+
+
+

Philosophy

+
+
+

Programmer Virtues.

+
    + +
  • 1. Laziness +
      +
    • Repetitive tasks must be automated.
    • +
    • Put your focus and attention in complex and interesting problems.
    • +
    • Let the computer work for you, after all, it is the computer!
    • +
    • Computer = Computing.
    • +
    +
  • +
+
+
+
+

Philosophy

+
+
+

Programmer Virtues.

+
    + +
  • 2. Impatience +
      +
    • Solve the task or problem as soon as possible.
    • +
    • Don't leave an unsolved problem for tomorrow.
    • +
    • Solve today, to relax tomorrow. :D
    • +
    +
  • +
+
+
+
+

Philosophy

+
+
+

Programmer Virtues

+
    + +
  • 3. Hubris +
      +
    • Try to make a good implementation.
    • +
    • A short code that solves a hard task, will always be acclaimed.
    • +
    • Good code has its consequences: Respect, opportunities and good future.
    • +
    +
  • +
+
+
+
+

Philosophy

+
+
+

Don't type, edit

+
    + +
  • Not typing is good. (Laziness)
  • +
  • Living in Insert Mode is the biggest sin. (Laziness)
  • +
+
+
+
+

The Zen of Vim

+
+
+

Control your energy.

+
    + +
  • Command line. Press ' : ' +
      +
    • :e file - edit file.(open)
    • +
    • :q - quit. +
    • :w - write.(save)
    • +
    • :r - read.(insert another file)
    • +
    • !date - call an external application an pipe it to Vim.
    • +
    +
  • +
+
+
+
+

The Zen of Vim

+
+
+

Don't waste your energy moving.

+
    + +
  • Command Mode. +
      +
    • Use h,j,k,l.
    • +
    • left,down,up,right.
    • +
    +
  • +
+
+
+
+

The Zen of Vim

+
+
+

Don't waste your energy moving.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fxforward - Moves the cursor to the next character defined by x
txMoves the cursor to the next character after x
FxInverse action of fx.
wMoves the cursor to the first word infront of it.
bInverse action of w.
0Moves the cursor to the beginning of the current line.
^Moves the cursor to the first character of the current line.
$Moves the cursor to the last character of the current line.
+
+
+
+
+

The Zen of Vim

+
+
+

Don't run through the valley, jump it.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
)Moves the cursor to the next sentence.
(Inverse action of ).
<C-F>Moves the cursor through a whole window block.
<C-B>Inverse action of C-F.
ggMoves the cursor to the beginning of the file.
GMoves the cursor to the end of the file.
numGMoves the cursor to the line num.
+
+
+
+
+

The Zen of Vim

+
+
+

Don't run through the valley, jump it.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HMoves the cursor to the top of the window.
MMoves the cursor to the half of the window.
LInverse action of H.
*Selects the word under cursor, and seeks forward for the next occurrence.
#Inverse action of *.
/palabraSeeks the word after '/', and moves the cursor.
?palabraInverse action of '/'.
+
+
+
+
+

The Zen of Vim

+
+
+

Don't run through the valley, jump it.

+
+ + + + + + + + + + + + + + +
maCreates a Mark in current position
`aMoves the cursor to the mark 'a' in the file.
`.Go to the last modification made.
+
+
+
+
+

The Zen of Vim

+
+

Recycle, Reduce, Reuse

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
vSelection per character.
VSelection per lines.
<C-V>Underlines blocks of characters.
d{acción}delete. Erase(cuts) the text, and sends it to the clipboard.
ddErase(cut) the entire line under the cursor, and sends it to the clipboard.
yyank. (Copy). Similar action as d, but this only sends to the clipboard.
ccut. Similar action as d, but this ones activates insert mode.
ppaste. Paste what is in current clipboard.
+
+
+
+
+

The Zen of Vim

+
+
+

Only record the essential.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
iEnters Insert Mode.
IEnters Insert Mode, and places the cursor at the beginning of the current line.
aInverse action of i.
AInverse action of I.
oCreates a new line below current position of the cursor,
and enters Insert mode.
OInverse action of o.
+
+
+
+
+

The Zen of Vim

+
+
+

The one that repeats itself, loses

+
+ + + + + + + + + + + + + + + + + + +
qkeywordStarts recording of a macro under the name keyword.
qEnds the recording of the macro.
@registroActivates the macro keyword.
.Dot. Repeats the last action made.
+
+
+
+
+

The Zen of Vim

+
+
+

Beauty is essence.

+
+ + + + + + + + + + + + + + + + + + +
]pPre-formats the text that will be paste.
%If the cursor is placed at {,[,(, seeks for the related closing cursor.
>>Formats a block of text.
<<Inverse action of <<.
+
+
+
+
+

Siete hábitos para editar
texto efectivamente.

+
+
+

Move around quickly

+
    + +
  • Navigating a text file is a common habit.
    + Learn to browse while you jump text, without typing repeatedly. +
      +
    • Use /pattern to search and move to a keyword.
    • +
    • Use % to move between logic blocks and loops.
    • +
    • For repeating functions, words, and variables, use *.
    • +
    • Use ngg where n is the number of a line.
    • +
    +
  • +
+
+
+ +
+
+

Don't type it twice

+

Three simple steps:

+
+
    +
  • 1. While editing a text file, notice how many times you repeat the same keystrokes or movements.
  • +
  • 2. Lookup for a command, action, or a plugin, so that editor works around the repetition.
  • +
  • 3. Practice that command or action until it's part of your muscle memory
  • +
+
+
+
+

Seven habits of effective text editing.

+
+

Don't type it twice

+
    + +
  • Typing the same thing in insert mode, is like reinventing the wheel.
    +
      +
    • Use :s to automagically substitute a keyword in the entire file.
    • +
    • Use . to insert the last word written.
    • +
    • For inserting functions, variables, and words, that repeat a lot in the entire file, use C-N.
    • +
    • To insert files, directories, and paths, use C-X + C-F.
    • +
    +
  • +
+
+
+
+

Seven habits of effective text editing.

+
+

Fix it when it's wrong

+
    + +
  • If you keep typing a wrong word or it repeats, it must be corrected.
    +
      +
    • Use :abbr Lunix Linux to fix a keyword in the entire file.
    • +
    +
  • +
+
+
+
+

Seven habits of effective text editing

+
+

A file seldom comes alone.

+
    + +
  • Every text file has another text file in common.
    + Edit with various windows, tabs, and buffers. Divide and conquer. +
      +
    • Use C-w + s to divide the window area horizontally.
    • +
    • Use C-w + v to divide the window area vertically.
    • +
    +
  • +
+
+
+
+

Seven habits of effective text editing

+
+

Unity makes strength

+
    + +
  • Vim was made around Unix philosophy,
    + make use of that text stream . +
      +
    • Use :r file to insert a entire content of a file to the current window.
    • +
    • Use :r ! grep 192.168.1.102 log to insert text from the stream of another application.
    • +
    +
  • +
+
+
+
+

Seven habits of effective text editing

+
+

Text is structured

+
    + +
  • In code and formal texts,
    + the format and the order, matter more than the content of a file. +
      +
    • To format a text to the default setting, use =G.
    • +
    • To structure a text line or block, utiliza >>.
    • +
    • Inverse action of >>, use <<.
    • +
    +
  • +
+
+
+
+

Seven habits of effective text editing

+
+

Make it a habit (sharpen the saw)

+ + +

More than practice, mastery comes from analyzing your actions. + Every time you take the time to analyze and study your moves, you can slowly grow to a zero point. +

Every IDE, text editor has its learning curve, ride it.

+

Like in any other Zen practice and philosophy, you have to think first, and then act.

+ +
+
+
+
+

Making use of Vim

+
+

Thanks for your time.
Don't use Emacs.
No, I kid ^_^! use whatever you want.
But please, please don't use nano, Por favor.

+Carlos Ivan Sosa

gnusosa

+

github

+

log.gnusosa.net

+
+
+ + + diff --git a/talks/workshop-vim-hackmeet/slidy.css b/talks/workshop-vim-hackmeet/slidy.css new file mode 100644 index 0000000..9cb2fab --- /dev/null +++ b/talks/workshop-vim-hackmeet/slidy.css @@ -0,0 +1,400 @@ +/* slidy.css + + Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved. + W3C liability, trademark, document use and software licensing + rules apply, see: + + http://www.w3.org/Consortium/Legal/copyright-documents + http://www.w3.org/Consortium/Legal/copyright-software +*/ +body +{ + margin: 0 0 0 0; + padding: 0 0 0 0; + width: 100%; + height: 100%; + color: black; + background-color: white; + font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif; + font-size: 14pt; +} + +div.toolbar { + position: fixed; z-index: 200; + top: auto; bottom: 0; left: 0; right: 0; + height: 1.2em; text-align: right; + padding-left: 1em; + padding-right: 1em; + font-size: 60%; + color: red; + background-color: rgb(240,240,240); + border-top: solid 1px rgb(180,180,180); +} + +div.toolbar span.copyright { + color: black; + margin-left: 0.5em; +} + +div.initial_prompt { + position: absolute; + z-index: 1000; + bottom: 1.2em; + width: 100%; + background-color: rgb(200,200,200); + opacity: 0.35; + background-color: rgb(200,200,200, 0.35); + cursor: pointer; +} + +div.initial_prompt p.help { + text-align: center; +} + +div.initial_prompt p.close { + text-align: right; + font-style: italic; +} + +div.slidy_toc { + position: absolute; + z-index: 300; + width: 60%; + max-width: 30em; + height: 30em; + overflow: auto; + top: auto; + right: auto; + left: 4em; + bottom: 4em; + padding: 1em; + background: rgb(240,240,240); + border-style: solid; + border-width: 2px; + font-size: 60%; +} + +div.slidy_toc .toc_heading { + text-align: center; + width: 100%; + margin: 0; + margin-bottom: 1em; + border-bottom-style: solid; + border-bottom-color: rgb(180,180,180); + border-bottom-width: 1px; +} + +div.slide { + z-index: 20; + margin: 0 0 0 0; + padding-top: 0; + padding-bottom: 0; + padding-left: 20px; + padding-right: 20px; + border-width: 0; + clear: both; + top: 0; + bottom: 0; + left: 0; + right: 0; + line-height: 120%; + background-color: transparent; +} + +div.background { + display: none; +} + +div.handout { + margin-left: 20px; + margin-right: 20px; +} + +div.slide.titlepage { + text-align: center; +} + +div.slide.titlepage.h1 { + padding-top: 10%; +} + +div.slide h1 { + padding-left: 0; + padding-right: 20pt; + padding-top: 4pt; + padding-bottom: 4pt; + margin-top: 0; + margin-left: 0; + margin-right: 60pt; + margin-bottom: 0.5em; + display: block; + font-size: 160%; + line-height: 1.2em; + background: transparent; +} + +div.toc { + position: absolute; + top: auto; + bottom: 4em; + left: 4em; + right: auto; + width: 60%; + max-width: 30em; + height: 30em; + border: solid thin black; + padding: 1em; + background: rgb(240,240,240); + color: black; + z-index: 300; + overflow: auto; + display: block; + visibility: visible; +} + +div.toc-heading { + width: 100%; + border-bottom: solid 1px rgb(180,180,180); + margin-bottom: 1em; + text-align: center; +} + +pre { + font-size: 80%; + font-weight: bold; + line-height: 120%; + padding-top: 0.2em; + padding-bottom: 0.2em; + padding-left: 1em; + padding-right: 1em; + border-style: solid; + border-left-width: 1em; + border-top-width: thin; + border-right-width: thin; + border-bottom-width: thin; + border-color: #95ABD0; + color: #00428C; + background-color: #E4E5E7; +} + +li pre { margin-left: 0; } + +blockquote { font-style: italic } + +img { background-color: transparent } + +p.copyright { font-size: smaller } + +.center { text-align: center } +.footnote { font-size: smaller; margin-left: 2em; } + +a img { border-width: 0; border-style: none } + +a:visited { color: navy } +a:link { color: navy } +a:hover { color: red; text-decoration: underline } +a:active { color: red; text-decoration: underline } + +a {text-decoration: none} +.navbar a:link {color: white} +.navbar a:visited {color: yellow} +.navbar a:active {color: red} +.navbar a:hover {color: red} + +ul { list-style-type: square; } +ul ul { list-style-type: disc; } +ul ul ul { list-style-type: circle; } +ul ul ul ul { list-style-type: disc; } +li { margin-left: 0.5em; margin-top: 0.5em; } +li li { font-size: 85%; font-style: italic } +li li li { font-size: 85%; font-style: normal } + +div dt +{ + margin-left: 0; + margin-top: 1em; + margin-bottom: 0.5em; + font-weight: bold; +} +div dd +{ + margin-left: 2em; + margin-bottom: 0.5em; +} + + +p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table { + margin-left: 1em; + margin-right: 1em; +} + +p.subhead { font-weight: bold; margin-top: 2em; } + +.smaller { font-size: smaller } +.bigger { font-size: 130% } + +td,th { padding: 0.2em } + +ul { + margin: 0.5em 1.5em 0.5em 1.5em; + padding: 0; +} + +ol { + margin: 0.5em 1.5em 0.5em 1.5em; + padding: 0; +} + +ul { list-style-type: square; } +ul ul { list-style-type: disc; } +ul ul ul { list-style-type: circle; } +ul ul ul ul { list-style-type: disc; } + +ul li { + list-style: square; + margin: 0.1em 0em 0.6em 0; + padding: 0 0 0 0; + line-height: 140%; +} + +ol li { + margin: 0.1em 0em 0.6em 1.5em; + padding: 0 0 0 0px; + line-height: 140%; + list-style-type: decimal; +} + +li ul li { + font-size: 85%; + font-style: italic; + list-style-type: disc; + background: transparent; + padding: 0 0 0 0; +} +li li ul li { + font-size: 85%; + font-style: normal; + list-style-type: circle; + background: transparent; + padding: 0 0 0 0; +} +li li li ul li { + list-style-type: disc; + background: transparent; + padding: 0 0 0 0; +} + +li ol li { + list-style-type: decimal; +} + + +li li ol li { + list-style-type: decimal; +} + +/* + setting class="outline on ol or ul makes it behave as an + ouline list where blocklevel content in li elements is + hidden by default and can be expanded or collapsed with + mouse click. Set class="expand" on li to override default +*/ + +ol.outline li:hover { cursor: pointer } +ol.outline li.nofold:hover { cursor: default } + +ul.outline li:hover { cursor: pointer } +ul.outline li.nofold:hover { cursor: default } + +ol.outline { list-style:decimal; } +ol.outline ol { list-style-type:lower-alpha } + +ol.outline li.nofold { + padding: 0 0 0 20px; + background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em; +} +ol.outline li.unfolded { + padding: 0 0 0 20px; + background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em; +} +ol.outline li.folded { + padding: 0 0 0 20px; + background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em; +} +ol.outline li.unfolded:hover { + padding: 0 0 0 20px; + background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em; +} +ol.outline li.folded:hover { + padding: 0 0 0 20px; + background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em; +} + +ul.outline li.nofold { + padding: 0 0 0 20px; + background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em; +} +ul.outline li.unfolded { + padding: 0 0 0 20px; + background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em; +} +ul.outline li.folded { + padding: 0 0 0 20px; + background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em; +} +ul.outline li.unfolded:hover { + padding: 0 0 0 20px; + background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em; +} +ul.outline li.folded:hover { + padding: 0 0 0 20px; + background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em; +} + +/* for slides with class "title" in table of contents */ +a.titleslide { font-weight: bold; font-style: italic } + +/* + hide images for work around for save as bug + where browsers fail to save images used by CSS +*/ +img.hidden { display: none; visibility: hidden } +div.initial_prompt { display: none; visibility: hidden } + + div.slide { + visibility: visible; + position: inherit; + } + div.handout { + border-top-style: solid; + border-top-width: thin; + border-top-color: black; + } + +@media screen { + .hidden { display: none; visibility: visible } + + div.slide.hidden { display: block; visibility: visible } + div.handout.hidden { display: block; visibility: visible } + div.background { display: none; visibility: hidden } + body.single_slide div.initial_prompt { display: block; visibility: visible } + body.single_slide div.background { display: block; visibility: visible } + body.single_slide div.background.hidden { display: none; visibility: hidden } + body.single_slide .invisible { visibility: hidden } + body.single_slide .hidden { display: none; visibility: hidden } + body.single_slide div.slide { position: absolute } + body.single_slide div.handout { display: none; visibility: hidden } +} + +@media print { + .hidden { display: block; visibility: visible } + + div.slide pre { font-size: 60%; padding-left: 0.5em; } + div.toolbar { display: none; visibility: hidden; } + div.slidy_toc { display: none; visibility: hidden; } + div.background { display: none; visibility: hidden; } + div.slide { page-break-before: always } + /* :first-child isn't reliable for print media */ + div.slide.first-slide { page-break-before: avoid } +} + diff --git a/talks/workshop-vim-hackmeet/slidy.js b/talks/workshop-vim-hackmeet/slidy.js new file mode 100644 index 0000000..c4e346d --- /dev/null +++ b/talks/workshop-vim-hackmeet/slidy.js @@ -0,0 +1,2881 @@ +/* slidy.js + + Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved. + W3C liability, trademark, document use and software licensing + rules apply, see: + + http://www.w3.org/Consortium/Legal/copyright-documents + http://www.w3.org/Consortium/Legal/copyright-software + + Defines single name "w3c_slidy" in global namespace + Adds event handlers without trampling on any others +*/ + +// the slidy object implementation +var w3c_slidy = { + // classify which kind of browser we're running under + ns_pos: (typeof window.pageYOffset!='undefined'), + khtml: ((navigator.userAgent).indexOf("KHTML") >= 0 ? true : false), + opera: ((navigator.userAgent).indexOf("Opera") >= 0 ? true : false), + ipad: ((navigator.userAgent).indexOf("iPad") >= 0 ? true : false), + iphone: ((navigator.userAgent).indexOf("iPhone") >= 0 ? true : false), + ie: (typeof document.all != "undefined" && !this.opera), + ie6: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 6") != -1), + ie7: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 7") != -1), + ie8: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 8") != -1), + ie9: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 9") != -1), + keyboardless: (this.ipad || this.iphone), + + // are we running as XHTML? (doesn't work on Opera) + is_xhtml: /xml/.test(document.contentType), + + slide_number: 0, // integer slide count: 0, 1, 2, ... + slide_number_element: null, // element containing slide number + slides: [], // set to array of slide div's + notes: [], // set to array of handout div's + backgrounds: [], // set to array of background div's + toolbar: null, // element containing toolbar + title: null, // document title + last_shown: null, // last incrementally shown item + eos: null, // span element for end of slide indicator + toc: null, // table of contents + outline: null, // outline element with the focus + selected_text_len: 0, // length of drag selection on document + view_all: 0, // 1 to view all slides + handouts + want_toolbar: true, // user preference to show/hide toolbar + mouse_click_enabled: true, // enables left click for next slide + scroll_hack: 0, // IE work around for position: fixed + disable_slide_click: false, // used by clicked anchors + + lang: "en", // updated to language specified by html file + + help_anchor: null, // used for keyboard focus hack in showToolbar() + help_page: "http://www.w3.org/Talks/Tools/Slidy2/help/help.html", + help_text: "Navigate with mouse click, space bar, Cursor Left/Right, " + + "or Pg Up and Pg Dn. Use S and B to change font size.", + + size_index: 0, + size_adjustment: 0, + sizes: new Array("10pt", "12pt", "14pt", "16pt", "18pt", "20pt", + "22pt", "24pt", "26pt", "28pt", "30pt", "32pt"), + + // needed for efficient resizing + last_width: 0, + last_height: 0, + + + // Needed for cross browser support for relative width/height on + // object elements. The work around is to save width/height attributes + // and then to recompute absolute width/height dimensions on resizing + objects: [], + + // attach initialiation event handlers + set_up: function () { + var init = function() { w3c_slidy.init(); }; + if (typeof window.addEventListener != "undefined") + window.addEventListener("load", init, false); + else + window.attachEvent("onload", init); + }, + + hide_slides: function () { + if (document.body && !w3c_slidy.initialized) + document.body.style.visibility = "hidden"; + else + setTimeout(w3c_slidy.hide_slides, 50); + }, + + // hack to persuade IE to compute correct document height + // as needed for simulating fixed positioning of toolbar + ie_hack: function () { + window.resizeBy(0,-1); + window.resizeBy(0, 1); + }, + + init: function () { + //alert("slidy starting test 10"); + document.body.style.visibility = "visible"; + this.init_localization(); + this.add_toolbar(); + this.wrap_implicit_slides(); + this.collect_slides(); + this.collect_notes(); + this.collect_backgrounds(); + this.objects = document.body.getElementsByTagName("object"); + this.patch_anchors(); + this.slide_number = this.find_slide_number(location.href); + window.offscreenbuffering = true; + this.size_adjustment = this.find_size_adjust(); + this.time_left = this.find_duration(); + this.hide_image_toolbar(); // suppress IE image toolbar popup + this.init_outliner(); // activate fold/unfold support + this.title = document.title; + + // work around for opera bug + this.is_xhtml = (document.body.tagName == "BODY" ? false : true); + + if (this.slides.length > 0) + { + var slide = this.slides[this.slide_number]; + + if (this.slide_number > 0) + { + this.set_visibility_all_incremental("visible"); + this.last_shown = this.previous_incremental_item(null); + this.set_eos_status(true); + } + else + { + this.last_shown = null; + this.set_visibility_all_incremental("hidden"); + this.set_eos_status(!this.next_incremental_item(this.last_shown)); + } + + this.set_location(); + this.add_class(this.slides[0], "first-slide"); + w3c_slidy.show_slide(slide); + } + + this.toc = this.table_of_contents(); + + this.add_initial_prompt(); + + // bind event handlers without interfering with custom page scripts + // Tap events behave too weirdly to support clicks reliably on + // iPhone and iPad, so exclude these from click handler + + if (!this.keyboardless) + this.add_listener(document.body, "click", this.mouse_button_click); + + this.add_listener(document, "keydown", this.key_down); + this.add_listener(document, "keypress", this.key_press); + this.add_listener(window, "resize", this.resized); + this.add_listener(window, "scroll", this.scrolled); + this.add_listener(window, "unload", this.unloaded); + + // this seems to be a debugging hack + //if (!document.body.onclick) + // document.body.onclick = function () { }; + + this.single_slide_view(); + + //this.set_location(); + + this.resized(); + + if (this.ie7) + setTimeout(w3c_slidy.ie_hack, 100); + + this.show_toolbar(); + + // for back button detection + setInterval(function () { w3c_slidy.check_location(); }, 200); + w3c_slidy.initialized = true; + }, + + // create div element with links to each slide + table_of_contents: function () { + var toc = this.create_element("div"); + this.add_class(toc, "slidy_toc hidden"); + //toc.setAttribute("tabindex", "0"); + + var heading = this.create_element("div"); + this.add_class(heading, "toc-heading"); + heading.innerHTML = this.localize("Table of Contents"); + + toc.appendChild(heading); + var previous = null; + + for (var i = 0; i < this.slides.length; ++i) + { + var title = this.has_class(this.slides[i], "title"); + var num = document.createTextNode((i + 1) + ". "); + + toc.appendChild(num); + + var a = this.create_element("a"); + a.setAttribute("href", "#(" + (i+1) + ")"); + + if (title) + this.add_class(a, "titleslide"); + + var name = document.createTextNode(this.slide_name(i)); + a.appendChild(name); + a.onclick = w3c_slidy.toc_click; + a.onkeydown = w3c_slidy.toc_key_down; + a.previous = previous; + + if (previous) + previous.next = a; + + toc.appendChild(a); + + if (i == 0) + toc.first = a; + + if (i < this.slides.length - 1) + { + var br = this.create_element("br"); + toc.appendChild(br); + } + + previous = a; + } + + toc.focus = function () { + if (this.first) + this.first.focus(); + } + + toc.onmouseup = w3c_slidy.mouse_button_up; + + toc.onclick = function (e) { + e||(e=window.event); + + if (w3c_slidy.selected_text_len <= 0) + w3c_slidy.hide_table_of_contents(true); + + w3c_slidy.stop_propagation(e); + + if (e.cancel != undefined) + e.cancel = true; + + if (e.returnValue != undefined) + e.returnValue = false; + + return false; + }; + + document.body.insertBefore(toc, document.body.firstChild); + return toc; + }, + + is_shown_toc: function () { + return !w3c_slidy.has_class(w3c_slidy.toc, "hidden"); + }, + + show_table_of_contents: function () { + w3c_slidy.remove_class(w3c_slidy.toc, "hidden"); + var toc = w3c_slidy.toc; + toc.focus(); + + if (w3c_slidy.ie7 && w3c_slidy.slide_number == 0) + setTimeout(w3c_slidy.ie_hack, 100); + }, + + hide_table_of_contents: function (focus) { + w3c_slidy.add_class(w3c_slidy.toc, "hidden"); + + if (focus && !w3c_slidy.opera) + w3c_slidy.help_anchor.focus(); + }, + + toggle_table_of_contents: function () { + if (w3c_slidy.is_shown_toc()) + w3c_slidy.hide_table_of_contents(true); + else + w3c_slidy.show_table_of_contents(); + }, + + // called on clicking toc entry + toc_click: function (e) { + if (!e) + e = window.event; + + var target = w3c_slidy.get_target(e); + + if (target && target.nodeType == 1) + { + var uri = target.getAttribute("href"); + + if (uri) + { + //alert("going to " + uri); + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri); + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.last_shown = null; + w3c_slidy.set_location(); + w3c_slidy.set_visibility_all_incremental("hidden"); + w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown)); + w3c_slidy.show_slide(slide); + //target.focus(); + + try + { + if (!w3c_slidy.opera) + w3c_slidy.help_anchor.focus(); + } + catch (e) + { + } + } + } + + w3c_slidy.hide_table_of_contents(true); + if (w3c_slidy.ie7) w3c_slidy.ie_hack(); + w3c_slidy.stop_propagation(e); + return w3c_slidy.cancel(e); + }, + + // called onkeydown for toc entry + toc_key_down: function (event) { + var key; + + if (!event) + var event = window.event; + + // kludge around NS/IE differences + if (window.event) + key = window.event.keyCode; + else if (event.which) + key = event.which; + else + return true; // Yikes! unknown browser + + // ignore event if key value is zero + // as for alt on Opera and Konqueror + if (!key) + return true; + + // check for concurrent control/command/alt key + // but are these only present on mouse events? + + if (event.ctrlKey || event.altKey) + return true; + + if (key == 13) + { + var uri = this.getAttribute("href"); + + if (uri) + { + //alert("going to " + uri); + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri); + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.last_shown = null; + w3c_slidy.set_location(); + w3c_slidy.set_visibility_all_incremental("hidden"); + w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown)); + w3c_slidy.show_slide(slide); + //target.focus(); + + try + { + if (!w3c_slidy.opera) + w3c_slidy.help_anchor.focus(); + } + catch (e) + { + } + } + + w3c_slidy.hide_table_of_contents(true); + + if (self.ie7) + w3c_slidy.ie_hack(); + + return w3c_slidy.cancel(event); + } + + if (key == 40 && this.next) + { + this.next.focus(); + return w3c_slidy.cancel(event); + } + + if (key == 38 && this.previous) + { + this.previous.focus(); + return w3c_slidy.cancel(event); + } + + return true; + }, + + + // ### OBSOLETE ### + before_print: function () { + this.show_all_slides(); + this.hide_toolbar(); + alert("before print"); + }, + + // ### OBSOLETE ### + after_print: function () { + if (!this.view_all) + { + this.single_slide_view(); + this.show_toolbar(); + } + alert("after print"); + }, + + // ### OBSOLETE ### + print_slides: function () { + this.before_print(); + window.print(); + this.after_print(); + }, + + // ### OBSOLETE ?? ### + toggle_view: function () { + if (this.view_all) + { + this.single_slide_view(); + this.show_toolbar(); + this.view_all = 0; + } + else + { + this.show_all_slides(); + this.hide_toolbar(); + this.view_all = 1; + } + }, + + // prepare for printing ### OBSOLETE ### + show_all_slides: function () { + this.remove_class(document.body, "single_slide"); + this.set_visibility_all_incremental("visible"); + }, + + // restore after printing ### OBSOLETE ### + single_slide_view: function () { + this.add_class(document.body, "single_slide"); + this.set_visibility_all_incremental("visible"); + this.last_shown = this.previous_incremental_item(null); + }, + + // suppress IE's image toolbar pop up + hide_image_toolbar: function () { + if (!this.ns_pos) + { + var images = document.getElementsByTagName("IMG"); + + for (var i = 0; i < images.length; ++i) + images[i].setAttribute("galleryimg", "no"); + } + }, + + unloaded: function (e) { + //alert("unloaded"); + }, + + // Safari and Konqueror don't yet support getComputedStyle() + // and they always reload page when location.href is updated + is_KHTML: function () { + var agent = navigator.userAgent; + return (agent.indexOf("KHTML") >= 0 ? true : false); + }, + + // find slide name from first h1 element + // default to document title + slide number + slide_name: function (index) { + var name = null; + var slide = this.slides[index]; + + var heading = this.find_heading(slide); + + if (heading) + name = this.extract_text(heading); + + if (!name) + name = this.title + "(" + (index + 1) + ")"; + + name.replace(/\&/g, "&"); + name.replace(/\/g, ">"); + + return name; + }, + + // find first h1 element in DOM tree + find_heading: function (node) { + if (!node || node.nodeType != 1) + return null; + + if (node.nodeName == "H1" || node.nodeName == "h1") + return node; + + var child = node.firstChild; + + while (child) + { + node = this.find_heading(child); + + if (node) + return node; + + child = child.nextSibling; + } + + return null; + }, + + // recursively extract text from DOM tree + extract_text: function (node) { + if (!node) + return ""; + + // text nodes + if (node.nodeType == 3) + return node.nodeValue; + + // elements + if (node.nodeType == 1) + { + node = node.firstChild; + var text = ""; + + while (node) + { + text = text + this.extract_text(node); + node = node.nextSibling; + } + + return text; + } + + return ""; + }, + + // find copyright text from meta element + find_copyright: function () { + var name, content; + var meta = document.getElementsByTagName("meta"); + + for (var i = 0; i < meta.length; ++i) + { + name = meta[i].getAttribute("name"); + content = meta[i].getAttribute("content"); + + if (name == "copyright") + return content; + } + + return null; + }, + + find_size_adjust: function () { + var name, content, offset; + var meta = document.getElementsByTagName("meta"); + + for (var i = 0; i < meta.length; ++i) + { + name = meta[i].getAttribute("name"); + content = meta[i].getAttribute("content"); + + if (name == "font-size-adjustment") + return 1 * content; + } + + return 1; + }, + + // for 20 minutes + find_duration: function () { + var name, content, offset; + var meta = document.getElementsByTagName("meta"); + + for (var i = 0; i < meta.length; ++i) + { + name = meta[i].getAttribute("name"); + content = meta[i].getAttribute("content"); + + if (name == "duration") + return 60000 * content; + } + + return null; + }, + + replace_by_non_breaking_space: function (str) { + for (var i = 0; i < str.length; ++i) + str[i] = 160; + }, + + // ### CHECK ME ### is use of "li" okay for text/html? + // for XHTML do we also need to specify namespace? + init_outliner: function () { + var items = document.getElementsByTagName("li"); + + for (var i = 0; i < items.length; ++i) + { + var target = items[i]; + + if (!this.has_class(target.parentNode, "outline")) + continue; + + target.onclick = this.outline_click; +/* ### more work needed for IE6 + if (!this.ns_pos) + { + target.onmouseover = this.hover_outline; + target.onmouseout = this.unhover_outline; + } +*/ + if (this.foldable(target)) + { + target.foldable = true; + target.onfocus = function () {w3c_slidy.outline = this;}; + target.onblur = function () {w3c_slidy.outline = null;}; + + if (!target.getAttribute("tabindex")) + target.setAttribute("tabindex", "0"); + + if (this.has_class(target, "expand")) + this.unfold(target); + else + this.fold(target); + } + else + { + this.add_class(target, "nofold"); + target.visible = true; + target.foldable = false; + } + } + }, + + foldable: function (item) { + if (!item || item.nodeType != 1) + return false; + + var node = item.firstChild; + + while (node) + { + if (node.nodeType == 1 && this.is_block(node)) + return true; + + node = node.nextSibling; + } + + return false; + }, + + // ### CHECK ME ### switch to add/remove "hidden" class + fold: function (item) { + if (item) + { + this.remove_class(item, "unfolded"); + this.add_class(item, "folded"); + } + + var node = item ? item.firstChild : null; + + while (node) + { + if (node.nodeType == 1 && this.is_block(node)) // element + { + w3c_slidy.add_class(node, "hidden"); + } + + node = node.nextSibling; + } + + item.visible = false; + }, + + // ### CHECK ME ### switch to add/remove "hidden" class + unfold: function (item) { + if (item) + { + this.add_class(item, "unfolded"); + this.remove_class(item, "folded"); + } + + var node = item ? item.firstChild : null; + + while (node) + { + if (node.nodeType == 1 && this.is_block(node)) // element + { + w3c_slidy.remove_class(node, "hidden"); + } + + node = node.nextSibling; + } + + item.visible = true; + }, + + outline_click: function (e) { + if (!e) + e = window.event; + + var rightclick = false; + var target = w3c_slidy.get_target(e); + + while (target && target.visible == undefined) + target = target.parentNode; + + if (!target) + return true; + + if (e.which) + rightclick = (e.which == 3); + else if (e.button) + rightclick = (e.button == 2); + + if (!rightclick && target.visible != undefined) + { + if (target.foldable) + { + if (target.visible) + w3c_slidy.fold(target); + else + w3c_slidy.unfold(target); + } + + w3c_slidy.stop_propagation(e); + e.cancel = true; + e.returnValue = false; + } + + return false; + }, + + add_initial_prompt: function () { + var prompt = this.create_element("div"); + prompt.setAttribute("class", "initial_prompt"); + + var p1 = this.create_element("p"); + prompt.appendChild(p1); + p1.setAttribute("class", "help"); + + if (this.keyboardless) + p1.innerHTML = "Tap footer to move to next slide"; + else + p1.innerHTML = "Space or Right Arrow to move to next " + + "slide, click help below for more details"; + + this.add_listener(prompt, "click", function (e) { + document.body.removeChild(prompt); + w3c_slidy.stop_propagation(e); + + if (e.cancel != undefined) + e.cancel = true; + + if (e.returnValue != undefined) + e.returnValue = false; + + return false; + }); + + document.body.appendChild(prompt); + this.initial_prompt = prompt; + setTimeout(function() {document.body.removeChild(prompt);}, 5000); + }, + + add_toolbar: function () { + var counter, page; + + this.toolbar = this.create_element("div"); + this.toolbar.setAttribute("class", "toolbar"); + + // a reasonably behaved browser + if (this.ns_pos || !this.ie6) + { + var right = this.create_element("div"); + right.setAttribute("style", "float: right; text-align: right"); + + counter = this.create_element("span") + counter.innerHTML = this.localize("slide") + " n/m"; + right.appendChild(counter); + this.toolbar.appendChild(right); + + var left = this.create_element("div"); + left.setAttribute("style", "text-align: left"); + + // global end of slide indicator + this.eos = this.create_element("span"); + this.eos.innerHTML = "* "; + left.appendChild(this.eos); + + var help = this.create_element("a"); + help.setAttribute("href", this.help_page); + help.setAttribute("title", this.localize(this.help_text)); + help.innerHTML = this.localize("help?"); + left.appendChild(help); + this.help_anchor = help; // save for focus hack + + var gap1 = document.createTextNode(" "); + left.appendChild(gap1); + + var contents = this.create_element("a"); + contents.setAttribute("href", "javascript:w3c_slidy.toggle_table_of_contents()"); + contents.setAttribute("title", this.localize("table of contents")); + contents.innerHTML = this.localize("contents?"); + left.appendChild(contents); + + var gap2 = document.createTextNode(" "); + left.appendChild(gap2); + + var copyright = this.find_copyright(); + + if (copyright) + { + var span = this.create_element("span"); + span.className = "copyright"; + span.innerHTML = copyright; + left.appendChild(span); + } + + this.toolbar.setAttribute("tabindex", "0"); + this.toolbar.appendChild(left); + } + else // IE6 so need to work around its poor CSS support + { + this.toolbar.style.position = (this.ie7 ? "fixed" : "absolute"); + this.toolbar.style.zIndex = "200"; + this.toolbar.style.width = "99.9%"; + this.toolbar.style.height = "1.2em"; + this.toolbar.style.top = "auto"; + this.toolbar.style.bottom = "0"; + this.toolbar.style.left = "0"; + this.toolbar.style.right = "0"; + this.toolbar.style.textAlign = "left"; + this.toolbar.style.fontSize = "60%"; + this.toolbar.style.color = "red"; + this.toolbar.borderWidth = 0; + this.toolbar.className = "toolbar"; + this.toolbar.style.background = "rgb(240,240,240)"; + + // would like to have help text left aligned + // and page counter right aligned, floating + // div's don't work, so instead use nested + // absolutely positioned div's. + + var sp = this.create_element("span"); + sp.innerHTML = "  * "; + this.toolbar.appendChild(sp); + this.eos = sp; // end of slide indicator + + var help = this.create_element("a"); + help.setAttribute("href", this.help_page); + help.setAttribute("title", this.localize(this.help_text)); + help.innerHTML = this.localize("help?"); + this.toolbar.appendChild(help); + this.help_anchor = help; // save for focus hack + + var gap1 = document.createTextNode(" "); + this.toolbar.appendChild(gap1); + + var contents = this.create_element("a"); + contents.setAttribute("href", "javascript:toggleTableOfContents()"); + contents.setAttribute("title", this.localize("table of contents".localize)); + contents.innerHTML = this.localize("contents?"); + this.toolbar.appendChild(contents); + + var gap2 = document.createTextNode(" "); + this.toolbar.appendChild(gap2); + + var copyright = this.find_copyright(); + + if (copyright) + { + var span = this.create_element("span"); + span.innerHTML = copyright; + span.style.color = "black"; + span.style.marginLeft = "0.5em"; + this.toolbar.appendChild(span); + } + + counter = this.create_element("div") + counter.style.position = "absolute"; + counter.style.width = "auto"; //"20%"; + counter.style.height = "1.2em"; + counter.style.top = "auto"; + counter.style.bottom = 0; + counter.style.right = "0"; + counter.style.textAlign = "right"; + counter.style.color = "red"; + counter.style.background = "rgb(240,240,240)"; + + counter.innerHTML = this.localize("slide") + " n/m"; + this.toolbar.appendChild(counter); + } + + // ensure that click isn't passed through to the page + this.toolbar.onclick = + function (e) { + if (!e) + e = window.event; + + var target = e.target; + + if (!target && e.srcElement) + target = e.srcElement; + + // work around Safari bug + if (target && target.nodeType == 3) + target = target.parentNode; + + w3c_slidy.stop_propagation(e); + + if (target && target.nodeName.toLowerCase() != "a") + w3c_slidy.mouse_button_click(e); + }; + + this.slide_number_element = counter; + this.set_eos_status(false); + document.body.appendChild(this.toolbar); + }, + + // wysiwyg editors make it hard to use div elements + // e.g. amaya loses the div when you copy and paste + // this function wraps div elements around implicit + // slides which start with an h1 element and continue + // up to the next heading or div element + wrap_implicit_slides: function () { + var i, heading, node, next, div; + var headings = document.getElementsByTagName("h1"); + + if (!headings) + return; + + for (i = 0; i < headings.length; ++i) + { + heading = headings[i]; + + if (heading.parentNode != document.body) + continue; + + node = heading.nextSibling; + + div = document.createElement("div"); + this.add_class(div, "slide"); + document.body.replaceChild(div, heading); + div.appendChild(heading); + + while (node) + { + if (node.nodeType == 1 && // an element + (node.nodeName == "H1" || + node.nodeName == "h1" || + node.nodeName == "DIV" || + node.nodeName == "div")) + break; + + next = node.nextSibling; + node = document.body.removeChild(node); + div.appendChild(node); + node = next; + } + } + }, + +// return new array of all slides + collect_slides: function () { + var slides = new Array(); + var divs = document.body.getElementsByTagName("div"); + + for (var i = 0; i < divs.length; ++i) + { + div = divs.item(i); + + if (this.has_class(div, "slide")) + { + // add slide to collection + slides[slides.length] = div; + + // hide each slide as it is found + this.add_class(div, "hidden"); + + // add dummy
at end for scrolling hack + var node1 = document.createElement("br"); + div.appendChild(node1); + var node2 = document.createElement("br"); + div.appendChild(node2); + } + else if (this.has_class(div, "background")) + { // work around for Firefox SVG reload bug + // which otherwise replaces 1st SVG graphic with 2nd + div.style.display = "block"; + } + } + + this.slides = slides; + }, + + // return new array of all
+ collect_notes: function () { + var notes = new Array(); + var divs = document.body.getElementsByTagName("div"); + + for (var i = 0; i < divs.length; ++i) + { + div = divs.item(i); + + if (this.has_class(div, "handout")) + { + // add note to collection + notes[notes.length] = div; + + // and hide it + this.add_class(div, "hidden"); + } + } + + this.notes = notes; + }, + + // return new array of all
+ // including named backgrounds e.g. class="background titlepage" + collect_backgrounds: function () { + var backgrounds = new Array(); + var divs = document.body.getElementsByTagName("div"); + + for (var i = 0; i < divs.length; ++i) + { + div = divs.item(i); + + if (this.has_class(div, "background")) + { + // add background to collection + backgrounds[backgrounds.length] = div; + + // and hide it + this.add_class(div, "hidden"); + } + } + + this.backgrounds = backgrounds; + }, + + // set click handlers on all anchors + patch_anchors: function () { + var self = w3c_slidy; + var handler = function (event) { + // compare this.href with location.href + // for link to another slide in this doc + + if (self.page_address(this.href) == self.page_address(location.href)) + { + // yes, so find new slide number + var newslidenum = self.find_slide_number(this.href); + + if (newslidenum != self.slide_number) + { + var slide = self.slides[self.slide_number]; + self.hide_slide(slide); + self.slide_number = newslidenum; + slide = self.slides[self.slide_number]; + self.show_slide(slide); + self.set_location(); + } + } + else + w3c_slidy.stop_propagation(event); + +// else if (this.target == null) +// location.href = this.href; + + this.blur(); + self.disable_slide_click = true; + }; + + var anchors = document.body.getElementsByTagName("a"); + + for (var i = 0; i < anchors.length; ++i) + { + if (window.addEventListener) + anchors[i].addEventListener("click", handler, false); + else + anchors[i].attachEvent("onclick", handler); + } + }, + + // ### CHECK ME ### see which functions are invoked via setTimeout + // either directly or indirectly for use of w3c_slidy vs this + show_slide_number: function () { + var timer = w3c_slidy.get_timer(); + w3c_slidy.slide_number_element.innerHTML = timer + w3c_slidy.localize("slide") + " " + + (w3c_slidy.slide_number + 1) + "/" + w3c_slidy.slides.length; + }, + + // every 200mS check if the location has been changed as a + // result of the user activating the Back button/menu item + // doesn't work for Opera < 9.5 + check_location: function () { + var hash = location.hash; + + if (w3c_slidy.slide_number > 0 && (hash == "" || hash == "#")) + w3c_slidy.goto_slide(0); + else if (hash.length > 2 && hash != "#("+(w3c_slidy.slide_number+1)+")") + { + var num = parseInt(location.hash.substr(2)); + + if (!isNaN(num)) + w3c_slidy.goto_slide(num-1); + } + + if (w3c_slidy.time_left && w3c_slidy.slide_number > 0) + { + w3c_slidy.show_slide_number(); + + if (w3c_slidy.time_left > 0) + w3c_slidy.time_left -= 200; + } + }, + + get_timer: function () { + var timer = ""; + if (w3c_slidy.time_left) + { + var mins, secs; + secs = Math.floor(w3c_slidy.time_left/1000); + mins = Math.floor(secs / 60); + secs = secs % 60; + timer = (mins ? mins+"m" : "") + secs + "s "; + } + + return timer; + }, + + // this doesn't push location onto history stack for IE + // for which a hidden iframe hack is needed: load page into + // the iframe with script that set's parent's location.hash + // but that won't work for standalone use unless we can + // create the page dynamically via a javascript: URL + set_location: function () { + var uri = w3c_slidy.page_address(location.href); + var hash = "#(" + (w3c_slidy.slide_number+1) + ")"; + + if (w3c_slidy.slide_number >= 0) + uri = uri + hash; + + if (w3c_slidy.ie && !w3c_slidy.ie8) + w3c_slidy.push_hash(hash); + + if (uri != location.href) // && !khtml + location.href = uri; + + if (this.khtml) + hash = "(" + (w3c_slidy.slide_number+1) + ")"; + + if (!this.ie && location.hash != hash && location.hash != "") + location.hash = hash; + + document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")"; + w3c_slidy.show_slide_number(); + }, + + page_address: function (uri) { + var i = uri.indexOf("#"); + + if (i < 0) + i = uri.indexOf("%23"); + + // check if anchor is entire page + + if (i < 0) + return uri; // yes + + return uri.substr(0, i); + }, + + // only used for IE6 and IE7 + on_frame_loaded: function (hash) { + location.hash = hash; + var uri = w3c_slidy.page_address(location.href); + location.href = uri + hash; + }, + + // history hack with thanks to Bertrand Le Roy + push_hash: function (hash) { + if (hash == "") hash = "#(1)"; + window.location.hash = hash; + + var doc = document.getElementById("historyFrame").contentWindow.document; + doc.open("javascript:''"); + doc.write("hello mum"); + doc.close(); + }, + + // find current slide based upon location + // first find target anchor and then look + // for associated div element enclosing it + // finally map that to slide number + find_slide_number: function (uri) { + // first get anchor from page location + + var i = uri.indexOf("#"); + + // check if anchor is entire page + if (i < 0) + return 0; // yes + + var anchor = unescape(uri.substr(i+1)); + + // now use anchor as XML ID to find target + var target = document.getElementById(anchor); + + if (!target) + { + // does anchor look like "(2)" for slide 2 ?? + // where first slide is (1) + var re = /\((\d)+\)/; + + if (anchor.match(re)) + { + var num = parseInt(anchor.substring(1, anchor.length-1)); + + if (num > this.slides.length) + num = 1; + + if (--num < 0) + num = 0; + + return num; + } + + // accept [2] for backwards compatibility + re = /\[(\d)+\]/; + + if (anchor.match(re)) + { + var num = parseInt(anchor.substring(1, anchor.length-1)); + + if (num > this.slides.length) + num = 1; + + if (--num < 0) + num = 0; + + return num; + } + + // oh dear unknown anchor + return 0; + } + + // search for enclosing slide + + while (true) + { + // browser coerces html elements to uppercase! + if (target.nodeName.toLowerCase() == "div" && + this.has_class(target, "slide")) + { + // found the slide element + break; + } + + // otherwise try parent element if any + + target = target.parentNode; + + if (!target) + { + return 0; // no luck! + } + }; + + for (i = 0; i < slides.length; ++i) + { + if (slides[i] == target) + return i; // success + } + + // oh dear still no luck + return 0; + }, + + previous_slide: function (incremental) { + if (!w3c_slidy.view_all) + { + var slide; + + if ((incremental || w3c_slidy.slide_number == 0) && w3c_slidy.last_shown != null) + { + w3c_slidy.last_shown = w3c_slidy.hide_previous_item(w3c_slidy.last_shown); + w3c_slidy.set_eos_status(false); + } + else if (w3c_slidy.slide_number > 0) + { + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + + w3c_slidy.slide_number = w3c_slidy.slide_number - 1; + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.set_visibility_all_incremental("visible"); + w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null); + w3c_slidy.set_eos_status(true); + w3c_slidy.show_slide(slide); + } + + w3c_slidy.set_location(); + + if (!w3c_slidy.ns_pos) + w3c_slidy.refresh_toolbar(200); + } + }, + + next_slide: function (incremental) { + if (!w3c_slidy.view_all) + { + var slide, last = w3c_slidy.last_shown; + + if (incremental || w3c_slidy.slide_number == w3c_slidy.slides.length - 1) + w3c_slidy.last_shown = w3c_slidy.reveal_next_item(w3c_slidy.last_shown); + + if ((!incremental || w3c_slidy.last_shown == null) && + w3c_slidy.slide_number < w3c_slidy.slides.length - 1) + { + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + + w3c_slidy.slide_number = w3c_slidy.slide_number + 1; + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.last_shown = null; + w3c_slidy.set_visibility_all_incremental("hidden"); + w3c_slidy.show_slide(slide); + } + else if (!w3c_slidy.last_shown) + { + if (last && incremental) + w3c_slidy.last_shown = last; + } + + w3c_slidy.set_location(); + + w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown)); + + if (!w3c_slidy.ns_pos) + w3c_slidy.refresh_toolbar(200); + } + }, + + // to first slide with nothing revealed + // i.e. state at start of presentation + first_slide: function () { + if (!w3c_slidy.view_all) + { + var slide; + + if (w3c_slidy.slide_number != 0) + { + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + + w3c_slidy.slide_number = 0; + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.last_shown = null; + w3c_slidy.set_visibility_all_incremental("hidden"); + w3c_slidy.show_slide(slide); + } + + w3c_slidy.set_eos_status( + !w3c_slidy.next_incremental_item(w3c_slidy.last_shown)); + w3c_slidy.set_location(); + } + }, + + // goto last slide with everything revealed + // i.e. state at end of presentation + last_slide: function () { + if (!w3c_slidy.view_all) + { + var slide; + + w3c_slidy.last_shown = null; //revealNextItem(lastShown); + + if (w3c_slidy.last_shown == null && + w3c_slidy.slide_number < w3c_slidy.slides.length - 1) + { + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + w3c_slidy.slide_number = w3c_slidy.slides.length - 1; + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.set_visibility_all_incremental("visible"); + w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null); + + w3c_slidy.show_slide(slide); + } + else + { + w3c_slidy.set_visibility_all_incremental("visible"); + w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null); + } + + w3c_slidy.set_eos_status(true); + w3c_slidy.set_location(); + } + }, + + + // ### check this and consider add/remove class + set_eos_status: function (state) { + if (this.eos) + this.eos.style.color = (state ? "rgb(240,240,240)" : "red"); + }, + + // first slide is 0 + goto_slide: function (num) { + //alert("going to slide " + (num+1)); + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + w3c_slidy.slide_number = num; + slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.last_shown = null; + w3c_slidy.set_visibility_all_incremental("hidden"); + w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown)); + document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")"; + w3c_slidy.show_slide(slide); + w3c_slidy.show_slide_number(); + }, + + + show_slide: function (slide) { + this.sync_background(slide); + window.scrollTo(0,0); + this.remove_class(slide, "hidden"); + }, + + hide_slide: function (slide) { + this.add_class(slide, "hidden"); + }, + + // show just the backgrounds pertinent to this slide + // when slide background-color is transparent + // this should now work with rgba color values + sync_background: function (slide) { + var background; + var bgColor; + + if (slide.currentStyle) + bgColor = slide.currentStyle["backgroundColor"]; + else if (document.defaultView) + { + var styles = document.defaultView.getComputedStyle(slide,null); + + if (styles) + bgColor = styles.getPropertyValue("background-color"); + else // broken implementation probably due Safari or Konqueror + { + //alert("defective implementation of getComputedStyle()"); + bgColor = "transparent"; + } + } + else + bgColor == "transparent"; + + if (bgColor == "transparent" || + bgColor.indexOf("rgba") >= 0 || + bgColor.indexOf("opacity") >= 0) + { + var slideClass = this.get_class_list(slide); + + for (var i = 0; i < this.backgrounds.length; i++) + { + background = this.backgrounds[i]; + + var bgClass = this.get_class_list(background); + + if (this.matching_background(slideClass, bgClass)) + this.remove_class(background, "hidden"); + else + this.add_class(background, "hidden"); + } + } + else // forcibly hide all backgrounds + this.hide_backgrounds(); + }, + + hide_backgrounds: function () { + for (var i = 0; i < this.backgrounds.length; i++) + { + background = this.backgrounds[i]; + this.add_class(background, "hidden"); + } + }, + + // compare classes for slide and background + matching_background: function (slideClass, bgClass) { + var i, count, pattern, result; + + // define pattern as regular expression + pattern = /\w+/g; + + // check background class names + result = bgClass.match(pattern); + + for (i = count = 0; i < result.length; i++) + { + if (result[i] == "hidden") + continue; + + if (result[i] == "background") + continue; + + ++count; + } + + if (count == 0) // default match + return true; + + // check for matches and place result in array + result = slideClass.match(pattern); + + // now check if desired name is present for background + for (i = count = 0; i < result.length; i++) + { + if (result[i] == "hidden") + continue; + + if (this.has_token(bgClass, result[i])) + return true; + } + + return false; + }, + + resized: function () { + var width = 0; + + if ( typeof( window.innerWidth ) == 'number' ) + width = window.innerWidth; // Non IE browser + else if (document.documentElement && document.documentElement.clientWidth) + width = document.documentElement.clientWidth; // IE6 + else if (document.body && document.body.clientWidth) + width = document.body.clientWidth; // IE4 + + var height = 0; + + if ( typeof( window.innerHeight ) == 'number' ) + height = window.innerHeight; // Non IE browser + else if (document.documentElement && document.documentElement.clientHeight) + height = document.documentElement.clientHeight; // IE6 + else if (document.body && document.body.clientHeight) + height = document.body.clientHeight; // IE4 + + if (height && (width/height > 1.05*1024/768)) + { + width = height * 1024.0/768; + } + + // IE fires onresize even when only font size is changed! + // so we do a check to avoid blocking < and > actions + if (width != w3c_slidy.last_width || height != w3c_slidy.last_height) + { + if (width >= 1100) + w3c_slidy.size_index = 5; // 4 + else if (width >= 1000) + w3c_slidy.size_index = 4; // 3 + else if (width >= 800) + w3c_slidy.size_index = 3; // 2 + else if (width >= 600) + w3c_slidy.size_index = 2; // 1 + else if (width) + w3c_slidy.size_index = 0; + + // add in font size adjustment from meta element e.g. + // + // useful when slides have too much content ;-) + + if (0 <= w3c_slidy.size_index + w3c_slidy.size_adjustment && + w3c_slidy.size_index + w3c_slidy.size_adjustment < w3c_slidy.sizes.length) + w3c_slidy.size_index = w3c_slidy.size_index + w3c_slidy.size_adjustment; + + // enables cross browser use of relative width/height + // on object elements for use with SVG and Flash media + w3c_slidy.adjust_object_dimensions(width, height); + + if (document.body.style.fontSize != w3c_slidy.sizes[w3c_slidy.size_index]) + { + document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index]; + } + + w3c_slidy.last_width = width; + w3c_slidy.last_height = height; + + // force reflow to work around Mozilla bug + if (w3c_slidy.ns_pos) + { + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + w3c_slidy.show_slide(slide); + } + + // force correct positioning of toolbar + w3c_slidy.refresh_toolbar(200); + } + }, + + scrolled: function () { + if (w3c_slidy.toolbar && !w3c_slidy.ns_pos && !w3c_slidy.ie7) + { + w3c_slidy.hack_offset = w3c_slidy.scroll_x_offset(); + // hide toolbar + w3c_slidy.toolbar.style.display = "none"; + + // make it reappear later + if (w3c_slidy.scrollhack == 0 && !w3c_slidy.view_all) + { + setTimeout(function () {w3c_slidy.show_toolbar(); }, 1000); + w3c_slidy.scrollhack = 1; + } + } + }, + + hide_toolbar: function () { + w3c_slidy.add_class(w3c_slidy.toolbar, "hidden"); + window.focus(); + }, + + // used to ensure IE refreshes toolbar in correct position + refresh_toolbar: function (interval) { + if (!w3c_slidy.ns_pos && !w3c_slidy.ie7) + { + w3c_slidy.hide_toolbar(); + setTimeout(function () {w3c_slidy.show_toolbar(); }, interval); + } + }, + + // restores toolbar after short delay + show_toolbar: function () { + if (w3c_slidy.want_toolbar) + { + w3c_slidy.toolbar.style.display = "block"; + + if (!w3c_slidy.ns_pos) + { + // adjust position to allow for scrolling + var xoffset = w3c_slidy.scroll_x_offset(); + w3c_slidy.toolbar.style.left = xoffset; + w3c_slidy.toolbar.style.right = xoffset; + + // determine vertical scroll offset + //var yoffset = scrollYOffset(); + + // bottom is doc height - window height - scroll offset + //var bottom = documentHeight() - lastHeight - yoffset + + //if (yoffset > 0 || documentHeight() > lastHeight) + // bottom += 16; // allow for height of scrollbar + + w3c_slidy.toolbar.style.bottom = 0; //bottom; + } + + w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden"); + } + + w3c_slidy.scrollhack = 0; + + + // set the keyboard focus to the help link on the + // toolbar to ensure that document has the focus + // IE doesn't always work with window.focus() + // and this hack has benefit of Enter for help + + try + { + if (!w3c_slidy.opera) + w3c_slidy.help_anchor.focus(); + } + catch (e) + { + } + }, + +// invoked via F key + toggle_toolbar: function () { + if (!w3c_slidy.view_all) + { + if (w3c_slidy.has_class(w3c_slidy.toolbar, "hidden")) + { + w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden") + w3c_slidy.want_toolbar = 1; + } + else + { + w3c_slidy.add_class(w3c_slidy.toolbar, "hidden") + w3c_slidy.want_toolbar = 0; + } + } + }, + + scroll_x_offset: function () { + if (window.pageXOffset) + return self.pageXOffset; + + if (document.documentElement && + document.documentElement.scrollLeft) + return document.documentElement.scrollLeft; + + if (document.body) + return document.body.scrollLeft; + + return 0; + }, + + scroll_y_offset: function () { + if (window.pageYOffset) + return self.pageYOffset; + + if (document.documentElement && + document.documentElement.scrollTop) + return document.documentElement.scrollTop; + + if (document.body) + return document.body.scrollTop; + + return 0; + }, + + // looking for a way to determine height of slide content + // the slide itself is set to the height of the window + optimize_font_size: function () { + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + + //var dh = documentHeight(); //getDocHeight(document); + var dh = slide.scrollHeight; + var wh = getWindowHeight(); + var u = 100 * dh / wh; + + alert("window utilization = " + u + "% (doc " + + dh + " win " + wh + ")"); + }, + + // from document object + get_doc_height: function (doc) { + if (!doc) + doc = document; + + if (doc && doc.body && doc.body.offsetHeight) + return doc.body.offsetHeight; // ns/gecko syntax + + if (doc && doc.body && doc.body.scrollHeight) + return doc.body.scrollHeight; + + alert("couldn't determine document height"); + }, + + get_window_height: function () { + if ( typeof( window.innerHeight ) == 'number' ) + return window.innerHeight; // Non IE browser + + if (document.documentElement && document.documentElement.clientHeight) + return document.documentElement.clientHeight; // IE6 + + if (document.body && document.body.clientHeight) + return document.body.clientHeight; // IE4 + }, + + document_height: function () { + var sh, oh; + + sh = document.body.scrollHeight; + oh = document.body.offsetHeight; + + if (sh && oh) + { + return (sh > oh ? sh : oh); + } + + // no idea! + return 0; + }, + + smaller: function () { + if (w3c_slidy.size_index > 0) + { + --w3c_slidy.size_index; + } + + w3c_slidy.toolbar.style.display = "none"; + document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index]; + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + w3c_slidy.show_slide(slide); + setTimeout(function () {w3c_slidy.show_toolbar(); }, 50); + }, + + bigger: function () { + if (w3c_slidy.size_index < w3c_slidy.sizes.length - 1) + { + ++w3c_slidy.size_index; + } + + w3c_slidy.toolbar.style.display = "none"; + document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index]; + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + w3c_slidy.hide_slide(slide); + w3c_slidy.show_slide(slide); + setTimeout(function () {w3c_slidy.show_toolbar(); }, 50); + }, + + // enables cross browser use of relative width/height + // on object elements for use with SVG and Flash media + // with thanks to Ivan Herman for the suggestion + adjust_object_dimensions: function (width, height) { + for( var i = 0; i < w3c_slidy.objects.length; i++ ) + { + var obj = this.objects[i]; + var mimeType = obj.getAttribute("type"); + + if (mimeType == "image/svg+xml" || mimeType == "application/x-shockwave-flash") + { + if ( !obj.initialWidth ) + obj.initialWidth = obj.getAttribute("width"); + + if ( !obj.initialHeight ) + obj.initialHeight = obj.getAttribute("height"); + + if ( obj.initialWidth && obj.initialWidth.charAt(obj.initialWidth.length-1) == "%" ) + { + var w = parseInt(obj.initialWidth.slice(0, obj.initialWidth.length-1)); + var newW = width * (w/100.0); + obj.setAttribute("width",newW); + } + + if ( obj.initialHeight && + obj.initialHeight.charAt(obj.initialHeight.length-1) == "%" ) + { + var h = parseInt(obj.initialHeight.slice(0, obj.initialHeight.length-1)); + var newH = height * (h/100.0); + obj.setAttribute("height", newH); + } + } + } + }, + + // needed for Opera to inhibit default behavior + // since Opera delivers keyPress even if keyDown + // was cancelled + key_press: function (event) { + if (!event) + event = window.event; + + if (!w3c_slidy.key_wanted) + return w3c_slidy.cancel(event); + + return true; + }, + + // See e.g. http://www.quirksmode.org/js/events/keys.html for keycodes + key_down: function (event) { + var key, target, tag; + + w3c_slidy.key_wanted = true; + + if (!event) + event = window.event; + + // kludge around NS/IE differences + if (window.event) + { + key = window.event.keyCode; + target = window.event.srcElement; + } + else if (event.which) + { + key = event.which; + target = event.target; + } + else + return true; // Yikes! unknown browser + + // ignore event if key value is zero + // as for alt on Opera and Konqueror + if (!key) + return true; + + // avoid interfering with keystroke + // behavior for non-slidy chrome elements + if (!w3c_slidy.slidy_chrome(target) && + w3c_slidy.special_element(target)) + return true; + + // check for concurrent control/command/alt key + // but are these only present on mouse events? + + if (event.ctrlKey || event.altKey || event.metaKey) + return true; + + // dismiss table of contents if visible + if (w3c_slidy.is_shown_toc() && key != 9 && key != 16 && key != 38 && key != 40) + { + w3c_slidy.hide_table_of_contents(true); + + if (key == 27 || key == 84 || key == 67) + return w3c_slidy.cancel(event); + } + + if (key == 34) // Page Down + { + if (w3c_slidy.view_all) + return true; + + w3c_slidy.next_slide(false); + return w3c_slidy.cancel(event); + } + else if (key == 33) // Page Up + { + if (w3c_slidy.view_all) + return true; + + w3c_slidy.previous_slide(false); + return w3c_slidy.cancel(event); + } + else if (key == 32) // space bar + { + w3c_slidy.next_slide(true); + return w3c_slidy.cancel(event); + } + else if (key == 37) // Left arrow + { + w3c_slidy.previous_slide(!event.shiftKey); + return w3c_slidy.cancel(event); + } + else if (key == 36) // Home + { + w3c_slidy.first_slide(); + return w3c_slidy.cancel(event); + } + else if (key == 35) // End + { + w3c_slidy.last_slide(); + return w3c_slidy.cancel(event); + } + else if (key == 39) // Right arrow + { + w3c_slidy.next_slide(!event.shiftKey); + return w3c_slidy.cancel(event); + } + else if (key == 13) // Enter + { + if (w3c_slidy.outline) + { + if (w3c_slidy.outline.visible) + w3c_slidy.fold(w3c_slidy.outline); + else + w3c_slidy.unfold(w3c_slidy.outline); + + return w3c_slidy.cancel(event); + } + } + else if (key == 188) // < for smaller fonts + { + w3c_slidy.smaller(); + return w3c_slidy.cancel(event); + } + else if (key == 190) // > for larger fonts + { + w3c_slidy.bigger(); + return w3c_slidy.cancel(event); + } + else if (key == 189 || key == 109) // - for smaller fonts + { + w3c_slidy.smaller(); + return w3c_slidy.cancel(event); + } + else if (key == 187 || key == 191 || key == 107) // = + for larger fonts + { + w3c_slidy.bigger(); + return w3c_slidy.cancel(event); + } + else if (key == 83) // S for smaller fonts + { + w3c_slidy.smaller(); + return w3c_slidy.cancel(event); + } + else if (key == 66) // B for larger fonts + { + w3c_slidy.bigger(); + return w3c_slidy.cancel(event); + } + else if (key == 90) // Z for last slide + { + w3c_slidy.last_slide(); + return w3c_slidy.cancel(event); + } + else if (key == 70) // F for toggle toolbar + { + w3c_slidy.toggle_toolbar(); + return w3c_slidy.cancel(event); + } + else if (key == 65) // A for toggle view single/all slides + { + w3c_slidy.toggle_view(); + return w3c_slidy.cancel(event); + } + else if (key == 75) // toggle action of left click for next page + { + w3c_slidy.mouse_click_enabled = !w3c_slidy.mouse_click_enabled; + var alert_msg = (w3c_slidy.mouse_click_enabled ? + "enabled" : "disabled") + " mouse click advance"; + + alert(w3c_slidy.localize(alert_msg)); + return w3c_slidy.cancel(event); + } + else if (key == 84 || key == 67) // T or C for table of contents + { + if (w3c_slidy.toc) + w3c_slidy.toggle_table_of_contents(); + + return w3c_slidy.cancel(event); + } + else if (key == 72) // H for help + { + window.location = w3c_slidy.help_page; + return w3c_slidy.cancel(event); + } + //else alert("key code is "+ key); + + return true; + }, + + // safe for both text/html and application/xhtml+xml + create_element: function (name) { + if (this.xhtml && (typeof document.createElementNS != 'undefined')) + return document.createElementNS("http://www.w3.org/1999/xhtml", name) + + return document.createElement(name); + }, + + get_element_style: function (elem, IEStyleProp, CSSStyleProp) { + if (elem.currentStyle) + { + return elem.currentStyle[IEStyleProp]; + } + else if (window.getComputedStyle) + { + var compStyle = window.getComputedStyle(elem, ""); + return compStyle.getPropertyValue(CSSStyleProp); + } + return ""; + }, + + // the string str is a whitespace separated list of tokens + // test if str contains a particular token, e.g. "slide" + has_token: function (str, token) { + if (str) + { + // define pattern as regular expression + var pattern = /\w+/g; + + // check for matches + // place result in array + var result = str.match(pattern); + + // now check if desired token is present + for (var i = 0; i < result.length; i++) + { + if (result[i] == token) + return true; + } + } + + return false; + }, + + get_class_list: function (element) { + if (typeof element.className != 'undefined') + return element.className; + + return element.getAttribute("class"); + }, + + has_class: function (element, name) { + if (element.nodeType != 1) + return false; + + var regexp = new RegExp("(^| )" + name + "\W*"); + + if (typeof element.className != 'undefined') + return regexp.test(element.className); + + return regexp.test(element.getAttribute("class")); + }, + + remove_class: function (element, name) { + var regexp = new RegExp("(^| )" + name + "\W*"); + var clsval = ""; + + if (typeof element.className != 'undefined') + { + clsval = element.className; + + if (clsval) + { + clsval = clsval.replace(regexp, ""); + element.className = clsval; + } + } + else + { + clsval = element.getAttribute("class"); + + if (clsval) + { + clsval = clsval.replace(regexp, ""); + element.setAttribute("class", clsval); + } + } + }, + + add_class: function (element, name) { + if (!this.has_class(element, name)) + { + if (typeof element.className != 'undefined') + element.className += " " + name; + else + { + var clsval = element.getAttribute("class"); + clsval = clsval ? clsval + " " + name : name; + element.setAttribute("class", clsval); + } + } + }, + + // HTML elements that can be used with class="incremental" + // note that you can also put the class on containers like + // up, ol, dl, and div to make their contents appear + // incrementally. Upper case is used since this is what + // browsers report for HTML node names (text/html). + incremental_elements: null, + okay_for_incremental: function (name) { + if (!this.incremental_elements) + { + var inclist = new Array(); + inclist["p"] = true; + inclist["pre"] = true; + inclist["li"] = true; + inclist["blockquote"] = true; + inclist["dt"] = true; + inclist["dd"] = true; + inclist["h2"] = true; + inclist["h3"] = true; + inclist["h4"] = true; + inclist["h5"] = true; + inclist["h6"] = true; + inclist["span"] = true; + inclist["address"] = true; + inclist["table"] = true; + inclist["tr"] = true; + inclist["th"] = true; + inclist["td"] = true; + inclist["img"] = true; + inclist["object"] = true; + this.incremental_elements = inclist; + } + return this.incremental_elements[name.toLowerCase()]; + }, + + next_incremental_item: function (node) { + var br = this.is_xhtml ? "br" : "BR"; + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + + for (;;) + { + node = w3c_slidy.next_node(slide, node); + + if (node == null || node.parentNode == null) + break; + + if (node.nodeType == 1) // ELEMENT + { + if (node.nodeName == br) + continue; + + if (w3c_slidy.has_class(node, "incremental") + && w3c_slidy.okay_for_incremental(node.nodeName)) + return node; + + if (w3c_slidy.has_class(node.parentNode, "incremental") + && !w3c_slidy.has_class(node, "non-incremental")) + return node; + } + } + + return node; + }, + + previous_incremental_item: function (node) { + var br = this.is_xhtml ? "br" : "BR"; + var slide = w3c_slidy.slides[w3c_slidy.slide_number]; + + for (;;) + { + node = w3c_slidy.previous_node(slide, node); + + if (node == null || node.parentNode == null) + break; + + if (node.nodeType == 1) + { + if (node.nodeName == br) + continue; + + if (w3c_slidy.has_class(node, "incremental") + && w3c_slidy.okay_for_incremental(node.nodeName)) + return node; + + if (w3c_slidy.has_class(node.parentNode, "incremental") + && !w3c_slidy.has_class(node, "non-incremental")) + return node; + } + } + + return node; + }, + + // set visibility for all elements on current slide with + // a parent element with attribute class="incremental" + set_visibility_all_incremental: function (value) { + var node = this.next_incremental_item(null); + + if (value == "hidden") + { + while (node) + { + w3c_slidy.add_class(node, "invisible"); + node = w3c_slidy.next_incremental_item(node); + } + } + else // value == "visible" + { + while (node) + { + w3c_slidy.remove_class(node, "invisible"); + node = w3c_slidy.next_incremental_item(node); + } + } + }, + + // reveal the next hidden item on the slide + // node is null or the node that was last revealed + reveal_next_item: function (node) { + node = w3c_slidy.next_incremental_item(node); + + if (node && node.nodeType == 1) // an element + w3c_slidy.remove_class(node, "invisible"); + + return node; + }, + + // exact inverse of revealNextItem(node) + hide_previous_item: function (node) { + if (node && node.nodeType == 1) // an element + w3c_slidy.add_class(node, "invisible"); + + return this.previous_incremental_item(node); + }, + + // left to right traversal of root's content + next_node: function (root, node) { + if (node == null) + return root.firstChild; + + if (node.firstChild) + return node.firstChild; + + if (node.nextSibling) + return node.nextSibling; + + for (;;) + { + node = node.parentNode; + + if (!node || node == root) + break; + + if (node && node.nextSibling) + return node.nextSibling; + } + + return null; + }, + + // right to left traversal of root's content + previous_node: function (root, node) { + if (node == null) + { + node = root.lastChild; + + if (node) + { + while (node.lastChild) + node = node.lastChild; + } + + return node; + } + + if (node.previousSibling) + { + node = node.previousSibling; + + while (node.lastChild) + node = node.lastChild; + + return node; + } + + if (node.parentNode != root) + return node.parentNode; + + return null; + }, + + previous_sibling_element: function (el) { + el = el.previousSibling; + + while (el && el.nodeType != 1) + el = el.previousSibling; + + return el; + }, + + next_sibling_element: function (el) { + el = el.nextSibling; + + while (el && el.nodeType != 1) + el = el.nextSibling; + + return el; + }, + + first_child_element: function (el) { + var node; + + for (node = el.firstChild; node; node = node.nextSibling) + { + if (node.nodeType == 1) + break; + } + + return node; + }, + + first_tag: function (element, tag) { + var node; + + if (!this.is_xhtml) + tag = tag.toUpperCase(); + + for (node = element.firstChild; node; node = node.nextSibling) + { + if (node.nodeType == 1 && node.nodeName == tag) + break; + } + + return node; + }, + + hide_selection: function () { + if (window.getSelection) // Firefox, Chromium, Safari, Opera + { + var selection = window.getSelection(); + + if (selection.rangeCount > 0) + { + var range = selection.getRangeAt(0); + range.collapse (false); + } + } + else // Internet Explorer + { + var textRange = document.selection.createRange (); + textRange.collapse (false); + } + }, + + get_selected_text: function () { + try + { + if (window.getSelection) + return window.getSelection().toString(); + + if (document.getSelection) + return document.getSelection().toString(); + + if (document.selection) + return document.selection.createRange().text; + } + catch (e) + { + } + + return ""; + }, + + // make note of length of selected text + // as this evaluates to zero in click event + mouse_button_up: function (e) { + w3c_slidy.selected_text_len = w3c_slidy.get_selected_text().length; + }, + + // right mouse button click is reserved for context menus + // it is more reliable to detect rightclick than leftclick + mouse_button_click: function (e) { + var rightclick = false; + var leftclick = false; + var middleclick = false; + var target; + + if (!e) + var e = window.event; + + if (e.target) + target = e.target; + else if (e.srcElement) + target = e.srcElement; + + // work around Safari bug + if (target.nodeType == 3) + target = target.parentNode; + + if (e.which) // all browsers except IE + { + leftclick = (e.which == 1); + middleclick = (e.which == 2); + rightclick = (e.which == 3); + } + else if (e.button) + { + // Konqueror gives 1 for left, 4 for middle + // IE6 gives 0 for left and not 1 as I expected + + if (e.button == 4) + middleclick = true; + + // all browsers agree on 2 for right button + rightclick = (e.button == 2); + } + else + leftclick = true; + + if (w3c_slidy.selected_text_len > 0) + { + w3c_slidy.stop_propagation(e); + e.cancel = true; + e.returnValue = false; + return false; + } + + // dismiss table of contents + w3c_slidy.hide_table_of_contents(false); + + // check if target is something that probably want's clicks + // e.g. a, embed, object, input, textarea, select, option + var tag = target.nodeName.toLowerCase(); + + if (w3c_slidy.mouse_click_enabled && leftclick && + !w3c_slidy.special_element(target) && + !target.onclick) + { + w3c_slidy.next_slide(true); + w3c_slidy.stop_propagation(e); + e.cancel = true; + e.returnValue = false; + return false; + } + + return true; + }, + + special_element: function (e) { + var tag = e.nodeName.toLowerCase(); + + return e.onkeydown || + e.onclick || + tag == "a" || + tag == "embed" || + tag == "object" || + tag == "video" || + tag == "audio" || + tag == "input" || + tag == "textarea" || + tag == "select" || + tag == "option"; + }, + + slidy_chrome: function (el) { + while (el) + { + if (el == w3c_slidy.toc || + el == w3c_slidy.toolbar || + w3c_slidy.has_class(el, "outline")) + return true; + + el = el.parentNode; + } + + return false; + }, + + get_key: function (e) + { + var key; + + // kludge around NS/IE differences + if (typeof window.event != "undefined") + key = window.event.keyCode; + else if (e.which) + key = e.which; + + return key; + }, + + get_target: function (e) { + var target; + + if (!e) + e = window.event; + + if (e.target) + target = e.target; + else if (e.srcElement) + target = e.srcElement; + + if (target.nodeType != 1) + target = target.parentNode; + + return target; + }, + + // does display property provide correct defaults? + is_block: function (elem) { + var tag = elem.nodeName.toLowerCase(); + + return tag == "ol" || tag == "ul" || tag == "p" || + tag == "li" || tag == "table" || tag == "pre" || + tag == "h1" || tag == "h2" || tag == "h3" || + tag == "h4" || tag == "h5" || tag == "h6" || + tag == "blockquote" || tag == "address"; + }, + + add_listener: function (element, event, handler) { + if (window.addEventListener) + element.addEventListener(event, handler, false); + else + element.attachEvent("on"+event, handler); + }, + + // used to prevent event propagation from field controls + stop_propagation: function (event) { + event = event ? event : window.event; + event.cancelBubble = true; // for IE + + if (event.stopPropagation) + event.stopPropagation(); + + return true; + }, + + cancel: function (event) { + if (event) + { + event.cancel = true; + event.returnValue = false; + + if (event.preventDefault) + event.preventDefault(); + } + + w3c_slidy.key_wanted = false; + return false; + }, + +// for each language define an associative array +// and also the help text which is longer + + strings_es: { + "slide":"pág.", + "help?":"Ayuda", + "contents?":"Índice", + "table of contents":"tabla de contenidos", + "Table of Contents":"Tabla de Contenidos", + "restart presentation":"Reiniciar presentación", + "restart?":"Inicio" + }, + help_es: + "Utilice el ratón, barra espaciadora, teclas Izda/Dcha, " + + "o Re pág y Av pág. Use S y B para cambiar el tamaño de fuente.", + + strings_ca: { + "slide":"pàg..", + "help?":"Ajuda", + "contents?":"Índex", + "table of contents":"taula de continguts", + "Table of Contents":"Taula de Continguts", + "restart presentation":"Reiniciar presentació", + "restart?":"Inici" + }, + help_ca: + "Utilitzi el ratolí, barra espaiadora, tecles Esq./Dta. " + + "o Re pàg y Av pàg. Usi S i B per canviar grandària de font.", + + strings_cs: { + "slide":"snímek", + "help?":"nápověda", + "contents?":"obsah", + "table of contents":"obsah prezentace", + "Table of Contents":"Obsah prezentace", + "restart presentation":"znovu spustit prezentaci", + "restart?":"restart" + }, + help_cs: + "Prezentaci můžete procházet pomocí kliknutí myši, mezerníku, " + + "šipek vlevo a vpravo nebo kláves PageUp a PageDown. Písmo se " + + "dá zvětšit a zmenšit pomocí kláves B a S.", + + strings_nl: { + "slide":"pagina", + "help?":"Help?", + "contents?":"Inhoud?", + "table of contents":"inhoudsopgave", + "Table of Contents":"Inhoudsopgave", + "restart presentation":"herstart presentatie", + "restart?":"Herstart?" + }, + help_nl: + "Navigeer d.m.v. het muis, spatiebar, Links/Rechts toetsen, " + + "of PgUp en PgDn. Gebruik S en B om de karaktergrootte te veranderen.", + + strings_de: { + "slide":"Seite", + "help?":"Hilfe", + "contents?":"Übersicht", + "table of contents":"Inhaltsverzeichnis", + "Table of Contents":"Inhaltsverzeichnis", + "restart presentation":"Präsentation neu starten", + "restart?":"Neustart" + }, + help_de: + "Benutzen Sie die Maus, Leerschlag, die Cursortasten links/rechts oder " + + "Page up/Page Down zum Wechseln der Seiten und S und B für die Schriftgrösse.", + + strings_pl: { + "slide":"slajd", + "help?":"pomoc?", + "contents?":"spis treści?", + "table of contents":"spis treści", + "Table of Contents":"Spis Treści", + "restart presentation":"Restartuj prezentację", + "restart?":"restart?" + }, + help_pl: + "Zmieniaj slajdy klikając myszą, naciskając spację, strzałki lewo/prawo" + + "lub PgUp / PgDn. Użyj klawiszy S i B, aby zmienić rozmiar czczionki.", + + strings_fr: { + "slide":"page", + "help?":"Aide", + "contents?":"Index", + "table of contents":"table des matières", + "Table of Contents":"Table des matières", + "restart presentation":"Recommencer l'exposé", + "restart?":"Début" + }, + help_fr: + "Naviguez avec la souris, la barre d'espace, les flèches " + + "gauche/droite ou les touches Pg Up, Pg Dn. Utilisez " + + "les touches S et B pour modifier la taille de la police.", + + strings_hu: { + "slide":"oldal", + "help?":"segítség", + "contents?":"tartalom", + "table of contents":"tartalomjegyzék", + "Table of Contents":"Tartalomjegyzék", + "restart presentation":"bemutató újraindítása", + "restart?":"újraindítás" + }, + help_hu: + "Az oldalak közti lépkedéshez kattintson az egérrel, vagy " + + "használja a szóköz, a bal, vagy a jobb nyíl, illetve a Page Down, " + + "Page Up billentyűket. Az S és a B billentyűkkel változtathatja " + + "a szöveg méretét.", + + strings_it: { + "slide":"pag.", + "help?":"Aiuto", + "contents?":"Indice", + "table of contents":"indice", + "Table of Contents":"Indice", + "restart presentation":"Ricominciare la presentazione", + "restart?":"Inizio" + }, + help_it: + "Navigare con mouse, barra spazio, frecce sinistra/destra o " + + "PgUp e PgDn. Usare S e B per cambiare la dimensione dei caratteri.", + + strings_el: { + "slide":"σελίδα", + "help?":"βοήθεια;", + "contents?":"περιεχόμενα;", + "table of contents":"πίνακας περιεχομένων", + "Table of Contents":"Πίνακας Περιεχομένων", + "restart presentation":"επανεκκίνηση παρουσίασης", + "restart?":"επανεκκίνηση;" + }, + help_el: + "Πλοηγηθείτε με το κλίκ του ποντικιού, το space, τα βέλη αριστερά/δεξιά, " + + "ή Page Up και Page Down. Χρησιμοποιήστε τα πλήκτρα S και B για να αλλάξετε " + + "το μέγεθος της γραμματοσειράς.", + + strings_ja: { + "slide":"スライド", + "help?":"ヘルプ", + "contents?":"目次", + "table of contents":"目次を表示", + "Table of Contents":"目次", + "restart presentation":"最初から再生", + "restart?":"最初から" + }, + help_ja: + "マウス左クリック ・ スペース ・ 左右キー " + + "または Page Up ・ Page Downで操作, S ・ Bでフォントサイズ変更", + + strings_zh: { + "slide":"幻灯片", + "help?":"帮助?", + "contents?":"内容?", + "table of contents":"目录", + "Table of Contents":"目录", + "restart presentation":"重新启动展示", + "restart?":"重新启动?" + }, + help_zh: + "用鼠标点击, 空格条, 左右箭头, Pg Up 和 Pg Dn 导航. " + + "用 S, B 改变字体大小.", + + strings_ru: { + "slide":"слайд", + "help?":"помощь?", + "contents?":"содержание?", + "table of contents":"оглавление", + "Table of Contents":"Оглавление", + "restart presentation":"перезапустить презентацию", + "restart?":"перезапуск?" + }, + help_ru: + "Перемещайтесь кликая мышкой, используя клавишу пробел, стрелки" + + "влево/вправо или Pg Up и Pg Dn. Клавиши S и B меняют размер шрифта.", + + strings_sv: { + "slide":"sida", + "help?":"hjälp", + "contents?":"innehåll", + "table of contents":"innehållsförteckning", + "Table of Contents":"Innehållsförteckning", + "restart presentation":"visa presentationen från början", + "restart?":"börja om" + }, + help_sv: + "Bläddra med ett klick med vänstra musknappen, mellanslagstangenten, " + + "vänster- och högerpiltangenterna eller tangenterna Pg Up, Pg Dn. " + + "Använd tangenterna S och B för att ändra textens storlek.", + + strings: { }, + + localize: function (src) { + if (src == "") + return src; + + // try full language code, e.g. en-US + var s, lookup = w3c_slidy.strings[w3c_slidy.lang]; + + if (lookup) + { + s = lookup[src]; + + if (s) + return s; + } + + // strip country code suffix, e.g. + // try en if undefined for en-US + var lg = w3c_slidy.lang.split("-"); + + if (lg.length > 1) + { + lookup = w3c_slidy.strings[lg[0]]; + + if (lookup) + { + s = lookup[src]; + + if (s) + return s; + } + } + + // otherwise string as is + return src; + }, + + init_localization: function () { + var i18n = w3c_slidy; + var help_text = w3c_slidy.help_text; + + // each such language array is declared in the localize array + // this is used as in w3c_slidy.localize("foo"); + this.strings = { + "es":this.strings_es, + "ca":this.strings_ca, + "cs":this.strings_cs, + "nl":this.strings_nl, + "de":this.strings_de, + "pl":this.strings_pl, + "fr":this.strings_fr, + "hu":this.strings_hu, + "it":this.strings_it, + "el":this.strings_el, + "jp":this.strings_ja, + "zh":this.strings_zh, + "ru":this.strings_ru, + "sv":this.strings_sv + }, + + i18n.strings_es[help_text] = i18n.help_es; + i18n.strings_ca[help_text] = i18n.help_ca; + i18n.strings_cs[help_text] = i18n.help_cs; + i18n.strings_nl[help_text] = i18n.help_nl; + i18n.strings_de[help_text] = i18n.help_de; + i18n.strings_pl[help_text] = i18n.help_pl; + i18n.strings_fr[help_text] = i18n.help_fr; + i18n.strings_hu[help_text] = i18n.help_hu; + i18n.strings_it[help_text] = i18n.help_it; + i18n.strings_el[help_text] = i18n.help_el; + i18n.strings_ja[help_text] = i18n.help_ja; + i18n.strings_zh[help_text] = i18n.help_zh; + i18n.strings_ru[help_text] = i18n.help_ru; + i18n.strings_sv[help_text] = i18n.help_sv; + + w3c_slidy.lang = document.body.parentNode.getAttribute("lang"); + + if (!w3c_slidy.lang) + w3c_slidy.lang = document.body.parentNode.getAttribute("xml:lang"); + + if (!w3c_slidy.lang) + w3c_slidy.lang = "en"; + } +}; + +// hack for back button behavior +if (w3c_slidy.ie6 || w3c_slidy.ie7) +{ + document.write(""); +} + +// attach event listeners for initialization +w3c_slidy.set_up(); + +// hide the slides as soon as body element is available +// to reduce annoying screen mess before the onload event +setTimeout(w3c_slidy.hide_slides, 50); + diff --git a/talks/workshop-vim-hackmeet/w3c-black.css b/talks/workshop-vim-hackmeet/w3c-black.css new file mode 100644 index 0000000..dc43b11 --- /dev/null +++ b/talks/workshop-vim-hackmeet/w3c-black.css @@ -0,0 +1,497 @@ +/* w3c-blue.css + + Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved. + W3C liability, trademark, document use and software licensing + rules apply, see: + + http://www.w3.org/Consortium/Legal/copyright-documents + http://www.w3.org/Consortium/Legal/copyright-software +*/ +body +{ + margin: 0 0 0 0; + padding: 0 0 0 0; + width: 100%; + height: 100%; + color: black; + background-color: white; + font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif; + font-size: 14pt; +} + +div.slide.titlepage { + text-align: center; +} + +div.slide.titlepage.h1 { + padding-top: 40%; +} + +div.slide { + z-index: 20; + margin: 0 0 0 0; + padding: 0; + border-width: 0; + top: 0; + bottom: 0; + left: 0; + right: 0; + line-height: 120%; + background-color: transparent; +} + +div.background { + z-index: 1; + position: absolute; + vertical-align: bottom; + left: 0; + right: 0; + top: 0; + bottom: auto; + height: 4.1em; + padding: 0 0 0 0.2em; + margin: 0 0 0 0; + border-width: 0; + background-color: white; +} + +div.background img { + height: 4em; +} + +/* this rule is hidden from IE which doesn't support + selector */ +div.slide + div[class].slide { page-break-before: always;} + +div.slide h1 { + padding-left: 3em; + padding-right: 3em; + padding-top: 0.1em; + margin-bottom: 0.8em; + margin-top: -0.05em; + margin-left: 0; + margin-right: 0; + min-height: 2.3em; + color: black; + height: 2.2em; + font-size: 160%; + line-height: 1.1em; +} + +div.slide h1 a { + color: black; + text-decoration: none; +} + +div.slide h1 a:link { + color: black; + text-decoration: none; +} + +div.slide h1 a:visited { + color: black; + text-decoration: none; +} + +div.slide h1 a:hover { + color: black; + text-decoration: underline; +} + +div.slide h1 a:active { + color: red; + text-decoration: underline; +} + +.head-icon { + margin-top: 0.5em; + margin-bottom: 0; + margin-left: 0; + margin-right: 1em; + background: white; + border-width: 0; + height: 3em; + max-width: 3em; + z-index: 2; + float: left; +} + +#head-logo { + margin: 0; + margin-top: 0.25em; + padding-top: 0.25em; + padding-bottom: 0.2em; + padding-left: 0; + padding-right: 0; + height: 3.2em; + width: 4.8em; + float: right; + z-index: 2; + background: white; +} + +.head-logo-fallback { + margin: 0; + padding: 0; + float: right; + z-index: 2; +} + +/* the next two classes support vertical and horizontal centering */ +div.vbox { + float: left; + height: 40%; + width: 50%; + margin-top: -240px; +} +div.hbox { + width:60%; + margin-top: 0; + margin-left:auto; + margin-right:auto; + height: 60%; + border:1px solid silver; + background:#F0F0F0; + overflow:auto; + text-align:left; + clear:both; +} + +/* styling for named background */ +div.background.slanty { + z-index: 2; + bottom: 0; + height: 100%; + background: transparent; +} + +div.background.slanty img { margin-top: 4em; width: 100%; height: 80% } + +/* the following makes the pre background translucent */ +/* opacity is a CSS3 property but supported by Mozilla family */ +/* filter is an IE specific feature that also requires width */ +div.slide.slanty pre { + width: 93%; /* needed for IE filter to work */ + opacity: .8; + filter: alpha(opacity=80); +} + +img.withBorder { + border: 2px solid #c60; + padding: 4px; +} + +li pre { margin-left: 0; } + +@media print { pre { font-size: 60% } } + +blockquote { font-style: italic } + +img { background-color: transparent } + +p.copyright { font-size: smaller } + +.center { text-align: center } +.footnote { font-size: smaller; margin-left: 2em; } + +a img { border-width: 0; border-style: none } + +a:visited { color: navy } +a:link { color: navy } +a:hover { color: red; text-decoration: underline } +a:active { color: red; text-decoration: underline } + +a {text-decoration: none} +.navbar a:link {color: white} +.navbar a:visited {color: yellow} +.navbar a:active {color: red} +.navbar a:hover {color: red} + +ul { list-style-type: square; } +ul ul { list-style-type: disc; } +ul ul ul { list-style-type: circle; } +ul ul ul ul { list-style-type: disc; } +li { margin-left: 0.5em; margin-top: 0.5em; } +li li { font-size: 85%; font-style: italic } +li li li { font-size: 85%; font-style: normal } + +div dt +{ + margin-left: 0; + margin-top: 1em; + margin-bottom: 0.5em; + font-weight: bold; +} +div dd +{ + margin-left: 2em; + margin-bottom: 0.5em; +} + + +p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table { + margin-left: 1em; + margin-right: 1em; +} + +p.subhead { font-weight: bold; margin-top: 2em; } + +div.cover p.explanation { + font-style: italic; + margin-top: 3em; +} + + +.smaller { font-size: smaller } + +td,th { padding: 0.2em } + +ul { + margin: 0.5em 1.5em 0.5em 1.5em; + padding: 0; +} + +ol { + margin: 0.5em 1.5em 0.5em 1.5em; + padding: 0; +} + +ul { list-style-type: square; } +ul ul { list-style-type: disc; } +ul ul ul { list-style-type: circle; } +ul ul ul ul { list-style-type: disc; } +li { margin-left: 0.5em; margin-top: 0.5em; } +li li { font-size: 85%; font-style: italic } +li li li { font-size: 85%; font-style: normal } + + +ul li { + list-style: none; + margin: 0.1em 0em 0.6em 0; + padding: 0 0 0 40px; + background: transparent url(../graphics/bullet.png) no-repeat 5px 0.3em; + line-height: 140%; +} + +/* workaround IE's failure to support background on li for print media */ +@media print { ul li { list-style: disc; padding-left: 0; background: none; } } + +ol li { + margin: 0.1em 0em 0.6em 1.5em; + padding: 0 0 0 0px; + line-height: 140%; +} + +li li { + font-size: 85%; + font-style: italic; + list-style-type: disc; + background: transparent; + padding: 0 0 0 0; +} +li li li { + font-size: 85%; + font-style: normal; + list-style-type: circle; + background: transparent; + padding: 0 0 0 0; +} +li li li li { + list-style-type: disc; + background: transparent; + padding: 0 0 0 0; +} + +/* rectangular blue bullet + unfold/nofold/fold widget */ + +/* + setting class="outline on ol or ul makes it behave as an + ouline list where blocklevel content in li elements is + hidden by default and can be expanded or collapsed with + mouse click. Set class="expand" on li to override default +*/ + +ol.outline li:hover { cursor: pointer } +ol.outline li.nofold:hover { cursor: default } + +ul.outline li:hover { cursor: pointer } +ul.outline li.nofold:hover { cursor: default } + +ol.outline { list-style:decimal; } +ol.outline ol { list-style-type:lower-alpha } + +ol.outline li.nofold { + padding: 0 0 0 20px; + background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.3em; +} +ol.outline li.unfolded { + padding: 0 0 0 20px; + background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.3em; +} +ol.outline li.folded { + padding: 0 0 0 20px; + background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.3em; +} +ol.outline li.unfolded:hover { + padding: 0 0 0 20px; + background: transparent url(../graphics/fold.gif) no-repeat 0px 0.3em; +} +ol.outline li.folded:hover { + padding: 0 0 0 20px; + background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.3em; +} + +ul.outline li.nofold { + padding: 0 0 0 52px; + background: transparent url(../graphics/bullet-nofold-dim.gif) no-repeat 5px 0.3em; +} +ul.outline li.unfolded { + padding: 0 0 0 52px; + background: transparent url(../graphics/bullet-fold-dim.gif) no-repeat 5px 0.3em; +} +ul.outline li.folded { + padding: 0 0 0 52px; + background: transparent url(../graphics/bullet-unfold-dim.gif) no-repeat 5px 0.3em; +} +ul.outline li.unfolded:hover { + padding: 0 0 0 52px; + background: transparent url(../graphics/bullet-fold.gif) no-repeat 5px 0.3em; +} +ul.outline li.folded:hover { + padding: 0 0 0 52px; + background: transparent url(../graphics/bullet-unfold.gif) no-repeat 5px 0.3em; +} + +li ul.outline li.nofold { + padding: 0 0 0 21px; + background: transparent url(../graphics/nofold-dim.gif) no-repeat 5px 0.3em; +} +li ul.outline li.unfolded { + padding: 0 0 0 21px; + background: transparent url(../graphics/fold-dim.gif) no-repeat 5px 0.3em; +} +li ul.outline li.folded { + padding: 0 0 0 21px; + background: transparent url(../graphics/unfold-dim.gif) no-repeat 5px 0.3em; +} +li ul.outline li.unfolded:hover { + padding: 0 0 0 21px; + background: transparent url(../graphics/fold.gif) no-repeat 5px 0.3em; +} +li ul.outline li.folded:hover { + padding: 0 0 0 21px; + background: transparent url(../graphics/unfold.gif) no-repeat 5px 0.3em; +} + +img.withBorder { + border: 2px solid #c60; + padding: 4px; +} + +div.header { + position: absolute; + z-index: 2; + left: 0; + right: 0; + top: 0; + bottom: auto; + height: 2.95em; + width: 100%; + padding: 0 0 0 0; + margin: 0 0 0 0; + border-width: 0; + border-style: solid; + background-color: #005A9C; + border-bottom-width: thick; + border-bottom-color: #95ABD0; +} + +div.footer { + position: absolute; + z-index: 80; + left: 0; + right: 0; + top: auto; + bottom: 0; + height: 3.5em; + margin: 0; + font-size: 80%; + font-weight: bold; + padding-left: 1em; + padding-right: 0; + padding-top: 0.3em; + padding-bottom: 0; + color: #003366; + background-color: #95ABD0; +} + +/* this is a hack to hide property from IE6 and below */ +div[class="footer"] { + position: fixed; +} + +#hidden-bullet { + visibility: hidden; + display: none; +} + +div.slide.cover { + color: black; + background-color: white; + padding-top: 0; + padding-right: 0; + padding-left: 3em; + height: 100%; +} + +div.slide.cover h1 { + margin: 0; + padding: 0.5em; + color: black; + height: auto; +} + +div.slide.cover h2 { + color: black; +} + +div.slide.cover a { + color: black; +} + +div.slide.cover a:visited { color: black} +div.slide.cover a:link { color: black} +div.slide.cover a:hover { color: red; text-decoration: underline } +div.slide.cover a:active { color: red; text-decoration: underline } + +div.slide.cover a:hover, div.slide.cover a:active { + color: red; text-decoration: underline; +} + +div.slide.cover img.cover { + margin: 0 0 0 0; + float: right; + padding-bottom: 4em; + overflow: hidden; +} + +div.slide.cover img.vimlogo{ + margin-right: 20%; + float: right; + padding-bottom: 4em; + overflow: hidden; +} + +div.slide.cover a:hover, div.slide.cover a:active { + color: red; text-decoration: underline; +} + +/* for Bert as an ardent user of the old W3C slidemaker tool */ + +div.comment { display: none; visibility: hidden } + +@media print { + div.slide h1 { background: transparent; color: black } + div.slide.cover { background: transparent; color: black } + div.slide.cover h1 { background: transparent; color: black } + div.comment { display: block; visibility: visible } +} -- cgit v1.3-2-g0d8e