diff options
Diffstat (limited to 'static')
| -rwxr-xr-x | static/css/dump.css | 719 | ||||
| -rwxr-xr-x | static/css/header.css | 64 | ||||
| -rw-r--r-- | static/css/index.css | 136 | ||||
| -rw-r--r-- | static/css/pages.css | 203 | ||||
| -rwxr-xr-x | static/css/reset.css | 55 | ||||
| -rw-r--r-- | static/css/top.css | 55 | ||||
| -rw-r--r-- | static/img/thumbs/wdheart.gif | bin | 0 -> 99 bytes | |||
| -rw-r--r-- | static/img/thumbs/wdheartover.gif | bin | 0 -> 104 bytes | |||
| -rw-r--r-- | static/index.html | 224 | ||||
| -rwxr-xr-x | static/js/home.js | 332 | ||||
| -rw-r--r-- | static/js/pichat.js | 418 | ||||
| -rwxr-xr-x | static/js/register.js | 334 | ||||
| -rw-r--r-- | static/register.html | 8 |
13 files changed, 2430 insertions, 118 deletions
diff --git a/static/css/dump.css b/static/css/dump.css index 9f7d1dd..83754a9 100755 --- a/static/css/dump.css +++ b/static/css/dump.css @@ -1,4 +1,649 @@ +/* reset.css + From http://meyerweb.com/eric/tools/css/reset/ + v1.0 | 20080212 */ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-size: 100%; + vertical-align: baseline; + background: transparent; + font-family: Arial, Helvetica, sans-serif; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} + +/* remember to define focus styles! */ +:focus { + outline: 0; +} + +/* remember to highlight inserts somehow! */ +ins { + text-decoration: none; +} +del { + text-decoration: line-through; +} + +/* tables still need 'cellspacing="0"' in the markup */ +table { + border-collapse: collapse; + border-spacing: 0; +} + + +/*header stuff */ + + +.white a:hover { + text-decoration: none; + color: #fff; +} +.white a:active { + text-decoration: none; + + + color: #fff; +} +#header7{ + margin: 0px auto -1px auto; + top:-1px; +height:49px; + position:fixed;background-image:url(/static/img/bg.dither.gif); +background-color:#eee; +border:1px solid #000; +width:100%; +min-width:600px; +left:-1px; + box-shadow: 0 0 10px #d8dbde, 0px 0px 2px #000; + -webkit-box-shadow: 0 0 10px #d8dbde, 0px 0px 2px #000; + -moz-box-shadow: 0 0 10px #d8dbde, 0px 0px 2px #000; + +} +#bar7{ + top:19px; + position:absolute; + word-spacing:-1; + font-size: 16px; +height:22; + +text-indent:14px; +line-height:1.9; + left: 125px; + margin-left: 0.1%; + margin-right: 8%; + letter-spacing:.2px; + z-index: 999; +} + +#bar7 img{ +margin-top:4;display:none; + vertical-align: top; +} +#bar7 a{ + text-decoration: none; + font-size:13; +padding:6px; +cursor:pointer; + color: #000; + + +} +#bar7 a:hover{ + text-decoration: none; +padding:6px;background-color:#fff; + color: #000; + +} +#logout7{ + top:-1px; +height:16px; +padding-left:4px;padding-right:3px; + + border-bottom-left-radius:3px; + -webkit-border-bottom-left-radius:3px; + -moz-border-radius-bottomleft:3px; + position:relative; + font-size:1px; +border-left:1px solid #999; +border-bottom:1px solid #999; +background-color:#eff5fb; + float:right; + font-family: Arial, Helvetica, sans-serif; + font-weight: normal; +} +#logout7 img{display:none; +} +#logout7 a{font-size:10px; color: #5a5858; + +} +#logout7 a:hover{font-size:10px; +color:#000; text-shadow: 0px 1px 0px #fff; +} +#toplogin{ +margin-top:8px; +margin-right:5px; + +} + +.white a:link { + text-decoration: none; + font-size:14px; + color: #fff; +} +.white a:visited { + text-decoration: none; + font-size:14px; + color: #fff; +} +#logo7{ + margin-left: 10px; + z-index:1050; text-decoration: none; + float:left; + margin-top:-1px; +} +#logo7 a{font-size:28px; + +letter-spacing:-1; +font-weight:bold; text-decoration: none; +color:#000; +} +#logo7 a:hover{ +color:#000; text-decoration: none; +text-shadow: -0.5px -0.5px 0px #f0e; +} +#dumplist{ +top:0px:width:100%;padding:0px;background-color:#fff; +color:#000;font-size:60%;text-transform:uppercase;text-decoration: none; +border-bottom:1px solid #999;text-align:right; +padding-right:70px;line-height:1.1;background-color:#eff5fb; +/*margin-left:40%; + border-bottom-left-radius:5px; + -webkit-border-bottom-left-radius:5px; + -moz-border-radius-bottomleft:5px;text-decoration: none; +border-left:1px solid #999;*/ +} +#dumplist a{color:#000;font-size:100%;text-transform:uppercase;text-decoration: none; +} +#dumplist a:hover{color:#000;text-decoration: none; + +} +#rapper7{ + top: 0px; + left:0px; + position:absolute; + width: 100%; + height: 62px; + z-index: 1000; +} +#logoicons{ +width:auto; +} +#registerlink{ + font-size: 16px; +word-spacing:2; +line-height:2.4; +font-weight:bold; +} + +#registerlink img{ +display:none; +} + +.no-cursor { cursor: none; } +.invisible { display: none !important; } +#cursor-big { position: absolute; z-index: 1000; } + +.thumb { + cursor:pointer; +} + +img.chat-thumb { + cursor:pointer; + position: absolute; + /*margin-top: -10px;*/ + width: 16px; + height: 16px; + bottom: 4px; + right: 4px; + /*left: 4px;*/ + display: block; + margin: 0; + padding: 0; +} + + +.dump .nick { + position: relative; + padding-right: 15px; +} + +.logged-dump { + position: relative; +} + +/* sharing */ +.buttons{ + cursor:pointer; + + +} +.buttons .share { + opacity: 0.8; +} +.buttons .share:hover { + opacity: 1; +} +.buttons .other-sites { + /*padding-left: 20px;*/ +} +img.thumb { + position: absolute; +image-rendering: -moz-crisp-edges; + margin-left: 0px; + margin-top: 0px; + height: 27px; + width: 27px; + left:110px; + bottom: 9px; + display: block; +} + +.thumb.favorite { + position: absolute; + margin-left: 0px; + margin-top: 0px; + height: 27px; + width: 27px; + display: block; +} + +a.youtube { + position: relative; +} + +.youtube .youtube-thumb { + width: 130px; + height: 97px; + padding-bottom: 22px; + margin: 0; +} +.youtube .youtube-controls { + position: absolute; + left: 0; + bottom: 0; + margin: 0; +} +.share-buttons{ +cursor:pointer; +width:100; +} + /*searchstuff*/ +#searchbox{ +position:absolute; +top:19px; +margin-right:10px; +} +#search-query{ +background: white; +border: 1px solid #999; +color: #C0C8D3; +font-size: 13px; +padding: 3px 12px 3px 37px; +padding-left: 37px; +padding-left: 37px; +width:190px; + +} +#search-query .search_icon { +background:url("http://dump.fm/static/img/hourglass.png") no-repeat scroll center center transparent; +bottom:3px; +cursor:pointer; +left:6px; +opacity:0.8; +position:absolute; +top:3px; +width:32px; +} + +.white a:hover { + text-decoration: none; + color: #fff; +} +.white a:active { + text-decoration: none; + + + color: #fff; +} +#header7{ + margin: 0px auto -1px auto; + top:-1px; +height:49px; + position:fixed;background-image:url(/static/img/bg.dither.gif); +background-color:#eee; +border:1px solid #000; +width:100%; +min-width:600px; +left:-1px; + box-shadow: 0 0 10px #d8dbde, 0px 0px 2px #000; + -webkit-box-shadow: 0 0 10px #d8dbde, 0px 0px 2px #000; + -moz-box-shadow: 0 0 10px #d8dbde, 0px 0px 2px #000; + +} +#bar7{ + top:19px; + position:absolute; + word-spacing:-1; + font-size: 16px; +height:22; + +text-indent:14px; +line-height:1.9; + left: 125px; + margin-left: 0.1%; + margin-right: 8%; + letter-spacing:.2px; + z-index: 999; +} + +#bar7 img{ +margin-top:4;display:none; + vertical-align: top; +} +#bar7 a{ + text-decoration: none; + font-size:13; +padding:6px; +cursor:pointer; + color: #000; + + +} +#bar7 a:hover{ + text-decoration: none; +padding:6px;background-color:#fff; + color: #000; + +} +#logout7{ + top:-1px; +height:16px; +padding-left:4px;padding-right:3px; + + border-bottom-left-radius:3px; + -webkit-border-bottom-left-radius:3px; + -moz-border-radius-bottomleft:3px; + position:relative; + font-size:1px; +border-left:1px solid #999; +border-bottom:1px solid #999; +background-color:#eff5fb; + float:right; + font-family: Arial, Helvetica, sans-serif; + font-weight: normal; +} +#logout7 img{display:none; +} +#logout7 a{font-size:10px; color: #5a5858; + +} +#logout7 a:hover{font-size:10px; +color:#000; text-shadow: 0px 1px 0px #fff; +} +#toplogin{ +margin-top:8px; +margin-right:5px; + +} + +.white a:link { + text-decoration: none; + font-size:14px; + color: #fff; +} +.white a:visited { + text-decoration: none; + font-size:14px; + color: #fff; +} +#logo7{ + margin-left: 10px; + z-index:1050; text-decoration: none; + float:left; + margin-top:-1px; +} +#logo7 a{font-size:28px; + +letter-spacing:-1; +font-weight:bold; text-decoration: none; +color:#000; +} +#logo7 a:hover{ +color:#000; text-decoration: none; +text-shadow: -0.5px -0.5px 0px #f0e; +} +#dumplist{ +top:0px:width:100%;padding:0px;background-color:#fff; +color:#000;font-size:60%;text-transform:uppercase;text-decoration: none; +border-bottom:1px solid #999;text-align:right; +padding-right:70px;line-height:1.1;background-color:#eff5fb; +/*margin-left:40%; + border-bottom-left-radius:5px; + -webkit-border-bottom-left-radius:5px; + -moz-border-radius-bottomleft:5px;text-decoration: none; +border-left:1px solid #999;*/ +} +#dumplist a{color:#000;font-size:100%;text-transform:uppercase;text-decoration: none; +} +#dumplist a:hover{color:#000;text-decoration: none; + +} +#rapper7{ + top: 0px; + left:0px; + position:absolute; + width: 100%; + height: 62px; + z-index: 1000; +} +#logoicons{ +width:auto; +} +#registerlink{ + font-size: 16px; +word-spacing:2; +line-height:2.4; +font-weight:bold; +} + +#registerlink img{ +display:none; +} + +.no-cursor { cursor: none; } +.invisible { display: none !important; } +#cursor-big { position: absolute; z-index: 1000; } + +.thumb { + cursor:pointer; +} + +img.chat-thumb { + cursor:pointer; + position: absolute; + /*margin-top: -10px;*/ + width: 16px; + height: 16px; + bottom: 4px; + right: 4px; + /*left: 4px;*/ + display: block; + margin: 0; + padding: 0; +} + + +.dump .nick { + position: relative; + padding-right: 15px; +} + +.logged-dump { + position: relative; +} + +/* sharing */ +.buttons{ + cursor:pointer; + + +} +.buttons .share { + opacity: 0.8; +} +.buttons .share:hover { + opacity: 1; +} +.buttons .other-sites { + /*padding-left: 20px;*/ +} +img.thumb { + position: absolute; +image-rendering: -moz-crisp-edges; + margin-left: 0px; + margin-top: 0px; + height: 27px; + width: 27px; + left:110px; + bottom: 9px; + display: block; +} + +.thumb.favorite { + position: absolute; + margin-left: 0px; + margin-top: 0px; + height: 27px; + width: 27px; + display: block; +} + +a.youtube { + position: relative; +} + +.youtube .youtube-thumb { + width: 130px; + height: 97px; + padding-bottom: 22px; + margin: 0; +} +.youtube .youtube-controls { + position: absolute; + left: 0; + bottom: 0; + margin: 0; +} +.share-buttons{ +cursor:pointer; +width:100; +} +.msvDiv { + cursor: pointer; +} + +div.msgDiv:hover { + cursor: pointer; +background-image:url("/static/img/thumbs/stripes.gif"); +background-position:center; +background-attachment:fixed; +} + +.msgDiv.favorite{ + cursor: pointer; +background-image:url("/static/img/thumbs/stripes.gif"); +background-position:center; +background-attachment:fixed; +} +.content{background-color:white;} +.nick{background-color:white;margin-right:3px;} +.msgDiv dump{background-color:white;} + /*searchstuff*/ +#searchbox{ +position:absolute; +top:18px; +right:36px; +} +#search-query{ +background: white; +border: 1px solid #999; +color: #C0C8D3; +font-size: 13px; +padding: 3px 12px 3px 37px; +padding-left: 37px; +text-indent:5px; + border-radius: 50px; + -webkit-border-radius: 50px; + -moz-border-radius: 50px; +} +.search_icon { +background:url("http://dump.fm/static/img/hourglass.png") no-repeat scroll center center transparent; +bottom:3px; +cursor:pointer; +left:6px; +opacity:0.8; +border-right:1px solid #C0C8D3; +position:absolute; +top:3px; +width:32px; +} + +#searchresults{ + top:50px; + overflow:auto; + position:fixed;background-image:url(/static/img/bg.dither.gif); +background-color:#eee; +width:100%; +min-width:600px; +border-bottom:1px solid #000; +left:-1px; +margin-top:-1px; +} +#searchresults img{ + max-width:300px; + width: expression(this.width > 300 ? 300: true); + max-height:50px; + height: expression(this.width > 300 ? 300: true); + max-width:300px; + border:1px solid #eee; + float:left; + display:inline; + margin-right:10px; +} /* pichat.css */ @@ -62,12 +707,6 @@ a:active { #rapper { top: 0px; } -#trophy{ -position:fixed; -right:2; -bottom:15px; - -} #effects-msg{ position:fixed; bottom:65; @@ -114,7 +753,35 @@ color:000; font-size: 11px; color: #f0e; } +#footerp +{ + text-align:center; + position:fixed; + width:100%; + bottom:0px; +line-height:3.1; + font-size:11px; +word-spacing:15px; +height:28px; + color: #000; + +} +#footerp a { + font-size: 11px; text-decoration: none; + color: #000; +} +#footerp a:link { + text-decoration: none; + font-size: 11px; +color:000; +} + +#footerp a:hover { + text-decoration:none; + font-size: 11px; + color: #f0e; +} #messagePane { top:50px; @@ -439,12 +1106,10 @@ border:1px solid blue; -moz-border-radius-bottomleft:5px; -moz-border-radius-bottomright:5px; border-right:2px solid #c8cbce; - border-bottom:2px solid #c8cbce; - - box-shadow: 3px 4px 4px #c8cbce; - -webkit-box-shadow: 3px 4px 4px #c8cbce; - -moz-box-shadow: 3px 3px 4px #c8cbce; - filter: progid:DXImageTransform.Microsoft.dropShadow(color=#c8cbce, offX=3, offY=4, positive=true); + border-bottom:2px solid #c8cbce; + box-shadow: 3px 4px 2px #c8cbce; + -webkit-box-shadow: 3px 4px 2px #c8cbce; + -moz-box-shadow: 3px 3px 2px #c8cbce; text-overflow:ellipsis; /* opacity:0.87; */ z-index:18; @@ -697,34 +1362,6 @@ left:0; .invisible { display: none !important; } - /* Hover menu shit */ - - .trigger ul.menu - { - display: none; - position: absolute; - margin: 0; - padding: .4em; - list-style: none; - } - .trigger ul.menu li - { - padding: .1em .5em; - } - .trigger ul.menu li a - { - display: block; - } - .trigger:hover - { - background: transparent url(hover_menu_sample_glass_panel_body_selected.png) no-repeat center; - } - .trigger:hover ul.menu - { - display: block; -width:60px; -position:absolute; - } /* profile shit */ body.profile { @@ -1032,7 +1669,7 @@ text-overflow: ellipsis-word; margin-left:3px; line-height:15px; -border-top:1px solid #ccc; + z-index:4; line-height:20px; diff --git a/static/css/header.css b/static/css/header.css index 9a80830..2466b22 100755 --- a/static/css/header.css +++ b/static/css/header.css @@ -1,3 +1,58 @@ +/* reset.css + From http://meyerweb.com/eric/tools/css/reset/ + v1.0 | 20080212 */ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-size: 100%; + vertical-align: baseline; + background: transparent; + font-family: Arial, Helvetica, sans-serif; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} + +/* remember to define focus styles! */ +:focus { + outline: 0; +} + +/* remember to highlight inserts somehow! */ +ins { + text-decoration: none; +} +del { + text-decoration: line-through; +} + +/* tables still need 'cellspacing="0"' in the markup */ +table { + border-collapse: collapse; + border-spacing: 0; +} .white a:hover { @@ -520,13 +575,16 @@ width:100; div.msgDiv:hover { cursor: pointer; -background-image:url("/static/img/thumbs/smallheart.gif"); - +background-image:url("/static/img/thumbs/stripes.gif"); +background-position:center; +background-attachment:fixed; } .msgDiv.favorite{ cursor: pointer; -background-image:url("/static/img/thumbs/grheart.gif"); +background-image:url("/static/img/thumbs/stripes.gif"); +background-position:center; +background-attachment:fixed; } .content{background-color:white;} .nick{background-color:white;margin-right:3px;} diff --git a/static/css/index.css b/static/css/index.css index 05a4545..2e20351 100644 --- a/static/css/index.css +++ b/static/css/index.css @@ -1,3 +1,58 @@ +/* reset.css + From http://meyerweb.com/eric/tools/css/reset/ + v1.0 | 20080212 */ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-size: 100%; + vertical-align: baseline; + background: transparent; + font-family: Arial, Helvetica, sans-serif; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} + +/* remember to define focus styles! */ +:focus { + outline: 0; +} + +/* remember to highlight inserts somehow! */ +ins { + text-decoration: none; +} +del { + text-decoration: line-through; +} + +/* tables still need 'cellspacing="0"' in the markup */ +table { + border-collapse: collapse; + border-spacing: 0; +} body { background:#f0f9ff url(/static/img/fade-blue.png) top center repeat-x; @@ -81,11 +136,9 @@ z-index:2; width: 144px; text-decoration: none; font-weight: bold; - background: url(images/button.gif) no-repeat center center; } .menu2 li em { font-weight: normal; - background: url(images/hover.png) no-repeat; width: 180px; height: 45px; position: absolute; @@ -291,7 +344,6 @@ height:0px; position:relative; z-index:-1; //See the "style-pack" below for image - background:url(images/loading.gif) no-repeat 50% 50%; } #slider img { position:absolute; @@ -299,3 +351,81 @@ z-index:-1; left:0px; display:none; } +/* + * jQuery Nivo Slider v1.9 + * http://nivo.dev7studios.com + * + * Copyright 2010, Gilbert Pellegrom + * Free to use and abuse under the MIT license. + * http://www.opensource.org/licenses/mit-license.php + * + * March 2010 + */ + + +/* The Nivo Slider styles */ +.nivoSlider { + position:relative; +} +.nivoSlider img { + position:absolute; + top:0px; + left:0px; +} +/* If an image is wrapped in a link */ +.nivoSlider a.nivo-imageLink { + position:absolute; + top:0px; + left:0px; + width:100%; + height:100%; + border:0; + padding:0; + margin:0; + z-index:60; + display:none; +} +/* The slices in the Slider */ +.nivo-slice { + display:block; + position:absolute; + z-index:50; + height:100%; +} +/* Caption styles */ +.nivo-caption { + position:absolute; + left:0px; + bottom:0px; + background:#000; + color:#fff; + opacity:0.8; /* Overridden by captionOpacity setting */ + width:100%; + z-index:89; +} +.nivo-caption p { + padding:5px; + margin:0; +} +/* Direction nav styles (e.g. Next & Prev) */ +.nivo-directionNav a { + position:absolute; + top:45%; + z-index:99; + cursor:pointer; +} +.nivo-prevNav { + left:0px; +} +.nivo-nextNav { + right:0px; +} +/* Control nav styles (e.g. 1,2,3...) */ +.nivo-controlNav a { + position:relative; + z-index:99; + cursor:pointer; +} +.nivo-controlNav a.active { + font-weight:bold; +}
\ No newline at end of file diff --git a/static/css/pages.css b/static/css/pages.css index 8a050b9..db5a056 100644 --- a/static/css/pages.css +++ b/static/css/pages.css @@ -1,4 +1,61 @@ - #hugescreen{ +/* reset.css + From http://meyerweb.com/eric/tools/css/reset/ + v1.0 | 20080212 */ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-size: 100%; + vertical-align: baseline; + background: transparent; + font-family: Arial, Helvetica, sans-serif; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} + +/* remember to define focus styles! */ +:focus { + outline: 0; +} + +/* remember to highlight inserts somehow! */ +ins { + text-decoration: none; +} +del { + text-decoration: line-through; +} + +/* tables still need 'cellspacing="0"' in the markup */ +table { + border-collapse: collapse; + border-spacing: 0; +} + + + #hugescreen{ position:fixed; left:1700; top:150; @@ -17,7 +74,7 @@ left:290;top:353; } -a:active { +a { text-decoration: none; color: #000; } @@ -118,3 +175,145 @@ background-attachment:fixed; } + +/* CSS Document */ + + +#content { + font-family: Arial, Helvetica, sans-serif; + background-color:#fff; + background-repeat:repeat-x; + background-position:1 10; +background-attachment:fixed; + margin: 0; + + +} + +f1 { background-color:#000000; + font: 12px "Microsoft Sans Serif"; + color:#FFFFFF; + +} + +ul { + + margin: 4px; + padding: 15px; + +} + +#boxshadow { + box-shadow:-10px 5px #000; + -webkit-box-shadow:-10px 5px #000; + -moz-box-shadow: -10px 5px #000; + +} + +.divDragTitle { + position: absolute; + height: 24px; +padding:0; + background-color:#fff; +background-image:url(/static/img/upload.png); + border:1px solid #999; + cursor:move; + box-shadow:0px 0px 10px #100; + -webkit-box-shadow:0px 0px 10px #100; + -moz-box-shadow: 0px 3px 10px #100; + +} + +.divDragTitle table { + border-spacing:0px; width:100%; + +} + +.divDragTitle table tr td { + font-family:Arial,Helvetica,sans-serif; + padding-left:5px; + text-shadow: 1px 1px 1px #333; + font-size:13; + + color: #fff; +font-weight:bold; + color:#FFFFFF; + +} + +.divDragContent { + position: absolute; + background-color:#FFFFFF; + padding:0px; margin:0px; + border:1px solid #999; + display:block; +margin-top:6; + cursor:default; + box-shadow:0px 0px 10px #100; + -webkit-box-shadow:0px 0px 10px #100; + -moz-box-shadow: 0px 0px 10px #100; + opacity: 0.923; + + + +} + +.divTitleButton { + border:0px; + padding: 1px; + cursor:default; +} + +/* gallery styling */ + +#jgal { + list-style:none; + width: 100px; +} + +#jgal li { + opacity: .5; + display: block; + position:relative; + width: 40px; + height: 40px; + background-position: 50% 45%; + cursor: pointer; + border: 1px solid #fff; + outline: 1px solid #ddd; + margin-right: 20px; + margin-bottom: 14px; + +} + +#content h1{ +font-size:14; +text-align:left; +margin-left:10; +letter-spacing:-0.5; +color:#000;line-height:0.5; + text-shadow: 1px 1px 1px #fff; +font-weight:bold; +} +#content h2{ +font-size:12; +text-align:left; +margin-left:22; +margin-top:6; + +letter-spacing:-0.5; +color:#000; +font-weight:normal; + text-shadow: 1px 1px 1px #fff; + +} +#content a { +color:#333; +font-size:14; +font-weight:bold; +} +#content a:hover { +color:#f0e; +font-weight:bold; + text-shadow: 1px 1px 0.5px #fff; +}
\ No newline at end of file diff --git a/static/css/reset.css b/static/css/reset.css deleted file mode 100755 index 37522ab..0000000 --- a/static/css/reset.css +++ /dev/null @@ -1,55 +0,0 @@ -/* reset.css - From http://meyerweb.com/eric/tools/css/reset/ - v1.0 | 20080212 */ - -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, font, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td { - margin: 0; - padding: 0; - border: 0; - outline: 0; - font-size: 100%; - vertical-align: baseline; - background: transparent; - font-family: Arial, Helvetica, sans-serif; -} -body { - line-height: 1; -} -ol, ul { - list-style: none; -} -blockquote, q { - quotes: none; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; -} - -/* remember to define focus styles! */ -:focus { - outline: 0; -} - -/* remember to highlight inserts somehow! */ -ins { - text-decoration: none; -} -del { - text-decoration: line-through; -} - -/* tables still need 'cellspacing="0"' in the markup */ -table { - border-collapse: collapse; - border-spacing: 0; -} diff --git a/static/css/top.css b/static/css/top.css index 184edd0..9251ff9 100644 --- a/static/css/top.css +++ b/static/css/top.css @@ -1,3 +1,58 @@ +/* reset.css + From http://meyerweb.com/eric/tools/css/reset/ + v1.0 | 20080212 */ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-size: 100%; + vertical-align: baseline; + background: transparent; + font-family: Arial, Helvetica, sans-serif; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} + +/* remember to define focus styles! */ +:focus { + outline: 0; +} + +/* remember to highlight inserts somehow! */ +ins { + text-decoration: none; +} +del { + text-decoration: line-through; +} + +/* tables still need 'cellspacing="0"' in the markup */ +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/static/img/thumbs/wdheart.gif b/static/img/thumbs/wdheart.gif Binary files differnew file mode 100644 index 0000000..38cebb0 --- /dev/null +++ b/static/img/thumbs/wdheart.gif diff --git a/static/img/thumbs/wdheartover.gif b/static/img/thumbs/wdheartover.gif Binary files differnew file mode 100644 index 0000000..23f76a0 --- /dev/null +++ b/static/img/thumbs/wdheartover.gif diff --git a/static/index.html b/static/index.html index 720f7e3..479355f 100644 --- a/static/index.html +++ b/static/index.html @@ -5,9 +5,7 @@ <META NAME="keywords" CONTENT="dump.fm, image chat, realtime, internet 3.0, dump, dump fm, image dump, pictures, image links, image board"> <META NAME="description" CONTENT="Talk with pictures!"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> - <script type="text/javascript" src="/static/js/sha1.js"></script> <script type="text/javascript" src="/static/js/home.js"></script> - <link rel="stylesheet" href="static/css/top.css" type="text/css" media="screen" /> <link rel="shortcut icon" href="/static/favicon.ico"> <script src="/static/js/loopedslider.js" type="text/javascript" charset="utf-8"></script> <script> @@ -37,18 +35,232 @@ jQuery(window).load(function() { }); }); </script> +<style> + + +body{margin:0px; +background-color:#fff; + font-family:Arial, Helvetica, sans-serif; background:#f0f9ff url(/static/img/fade-blue.png) top center repeat-x; +} +A:link {text-decoration: none} +A:visited {text-decoration: none} +A:active {text-decoration: none} +#rapper{ +width:800px; + margin: 0 auto 0 auto; + +background-position:top center; + background-repeat:no-repeat; + box-shadow: 0 0 10px #000; + -webkit-box-shadow: 0 0 10px #000; + -moz-box-shadow: 0 0 10px #000; +} +#toplogo{ +top:0px; +width:800px; +background-image:url(/static/img/blue2fade.png); +} +#bottomcontainer{ +width:800px; + +} +#signin{ +background-color:#eff5fb; +float:right; +width:201px; +height:225px; +top:0px; +padding:15px; +padding-top:10px; +font-size:10px; +text-indent:5px; +border:1px solid #000;border-right:0px solid #000; + +} +#membertxt{ +background-color:#fff; +padding:5px; +border:1px solid black; +margin-top:-22px; +z-index:5; +width:100; +} + +#wtftxt{ +background-color:#fff; +padding:5px; +padding-left:15px; +padding-right:15px; +font-size:24px; +border:1px solid black; +margin-top:-56px; +z-index:5; +float:left; +background-image:url(/static/img/ylgrad.png); +} +#previewdump{ +background-color:#fff; +padding:5px; +padding-left:15px; +padding-right:15px; +font-size:16px; +border:1px solid #ccc; +margin-top:-300px; +z-index:5; +float:right; +margin-right:-210px; + border-bottom-left-radius:5px; + border-bottom-right-radius:5px; + -webkit-border-bottom-left-radius:5px; + -webkit-border-bottom-right-radius:5px; + -moz-border-radius-bottomleft:5px; + -moz-border-radius-bottomright:5px; +background-image:url(/static/img/grgrad.png); +} +#previewdump a:hover{ +color:#000000; +} +input { + height:40px; + width:190px; +float:right; +padding-left:2px; + border:0px; +border:1px solid #000; + margin:5px; + color:#000;z-index:20; + font-size:20px; + +} +.no-cursor { cursor: none; } +.invisible { display: none !important; } +#cursor-big { position: absolute; z-index: 1000; } + +label { + display:inline-block; + font-size: 13px; + color: #222; +float:right; +margin-bottom:4px; +} +#signin-submit { + display:inline-block; + + height:33px;float:left; + font-size:20px; +width:190px; + font-weight:bold; + word-spacing:7; + text-align:center; + z-index:100; + font-size:16px; + color:#000; +float:right; +border:1px solid #000; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + +z-index:20; +} +#remember{ +float:right;padding-top:5px; +top:0px;display:block; +margin-right:5px; +} +#remember a{text-decoration:none;font-size:11px;float:right;} +#remembermeInput { + width: 15px; + height: 15px; + margin: 1px; +} +#wtf{ +float:left; +width:538px; +position:absolute; +border:1px solid #000; +border-left:0px solid #000; +padding:15px; +height:220px; +background-color:#eff5fb; +} +#toptxt{ +padding:10px; +text-align:center; +} +#lilflag{ +background-image:url(/static/img/lilflag.png); +width: 173px; height: 59px; +top:15px; +padding-left:20px; +position:absolute; +color:#fff; +padding-top:1px; +text-align:left; +word-spacing:8px;padding-right:10px; +font-size:19px; +margin-left:-13px;text-decoration:none; +} +#lilflag a:link { +text-decoration:none; +} +#footer{ +padding-bottom:5px; +padding-top:15px; +text-align: center; +color:#000; +font-size:11px; +word-spacing:30px; + margin: 0 auto 0 auto; +background-color:#eff5fb; +margin-top:250px; +width:798px; +} +#bottomrow img{ +background-image:url(/static/img/grgrad.png); + border-radius: 15px; +border:5px solid #ccc; +padding:5px; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; +} +#footer a{color:#000;text-decoration:none;} + + + + /* + * Required + */ + .container { margin-top:8px;border:01px solid #666;width:538px; height:205px; overflow:hidden; position:relative; cursor:pointer; } + .slides { position:absolute; top:0; left:0; } + .slides div { position:absolute; top:0; width:538px; display:none; } + /* + * Optional + */ + + blockquote, q { quotes: none; } + :focus { outline: 0; } + ins { text-decoration: none; } + del { text-decoration: line-through; } + table { border-collapse: collapse; border-spacing: 0; } + #loopedSlider {width:610px; position:relative; clear:both; } + ul.pagination { list-style-type:none; margin:0; padding:0; margin:9px auto; width:132px; } + ul.pagination li { float:left; margin:0 5px;display:none; } + ul.pagination a { display:block; width:12px; padding-top:12px; height:0; overflow:hidden; background-image:url(/static/img/pagination.png); background-position:0 0; background-repeat:no-repeat;} + + +</style> </head> <body> <div id="rapper"> <div id="toplogo"> -<img style="visibility:hidden;width:0px;height:0px;"/><style type='text/css'> - -</style> -<a class="img_roll" href="/register"></a> +<img src="/static/img/dumppixellarge.png"> +<a href="/static/slowthgoth.html"> <div id="lilflag"> HOME OF THE SLOTHGOTH!!!!! </div> +</a> </div> <div id="bottomcontainer"> diff --git a/static/js/home.js b/static/js/home.js index 072617a..db2d428 100755 --- a/static/js/home.js +++ b/static/js/home.js @@ -198,4 +198,336 @@ function MM_swapImage() { //v3.0 if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2]; } } +// sha1.js + +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS 180-1 + * Version 2.2 Copyright Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +/* + * Configurable variables. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + */ +var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ +var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ + +/* + * These are the functions you'll usually want to call + * They take string arguments and return either hex or base-64 encoded strings + */ +function hex_sha1(s) { return rstr2hex(rstr_sha1(str2rstr_utf8(s))); } +function b64_sha1(s) { return rstr2b64(rstr_sha1(str2rstr_utf8(s))); } +function any_sha1(s, e) { return rstr2any(rstr_sha1(str2rstr_utf8(s)), e); } +function hex_hmac_sha1(k, d) + { return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); } +function b64_hmac_sha1(k, d) + { return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); } +function any_hmac_sha1(k, d, e) + { return rstr2any(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d)), e); } + +/* + * Perform a simple self-test to see if the VM is working + */ +function sha1_vm_test() +{ + return hex_sha1("abc").toLowerCase() == "a9993e364706816aba3e25717850c26c9cd0d89d"; +} + +/* + * Calculate the SHA1 of a raw string + */ +function rstr_sha1(s) +{ + return binb2rstr(binb_sha1(rstr2binb(s), s.length * 8)); +} + +/* + * Calculate the HMAC-SHA1 of a key and some data (raw strings) + */ +function rstr_hmac_sha1(key, data) +{ + var bkey = rstr2binb(key); + if(bkey.length > 16) bkey = binb_sha1(bkey, key.length * 8); + + var ipad = Array(16), opad = Array(16); + for(var i = 0; i < 16; i++) + { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + var hash = binb_sha1(ipad.concat(rstr2binb(data)), 512 + data.length * 8); + return binb2rstr(binb_sha1(opad.concat(hash), 512 + 160)); +} + +/* + * Convert a raw string to a hex string + */ +function rstr2hex(input) +{ + try { hexcase } catch(e) { hexcase=0; } + var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; + var output = ""; + var x; + for(var i = 0; i < input.length; i++) + { + x = input.charCodeAt(i); + output += hex_tab.charAt((x >>> 4) & 0x0F) + + hex_tab.charAt( x & 0x0F); + } + return output; +} + +/* + * Convert a raw string to a base-64 string + */ +function rstr2b64(input) +{ + try { b64pad } catch(e) { b64pad=''; } + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var output = ""; + var len = input.length; + for(var i = 0; i < len; i += 3) + { + var triplet = (input.charCodeAt(i) << 16) + | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0) + | (i + 2 < len ? input.charCodeAt(i+2) : 0); + for(var j = 0; j < 4; j++) + { + if(i * 8 + j * 6 > input.length * 8) output += b64pad; + else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F); + } + } + return output; +} + +/* + * Convert a raw string to an arbitrary string encoding + */ +function rstr2any(input, encoding) +{ + var divisor = encoding.length; + var remainders = Array(); + var i, q, x, quotient; + + /* Convert to an array of 16-bit big-endian values, forming the dividend */ + var dividend = Array(Math.ceil(input.length / 2)); + for(i = 0; i < dividend.length; i++) + { + dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1); + } + + /* + * Repeatedly perform a long division. The binary array forms the dividend, + * the length of the encoding is the divisor. Once computed, the quotient + * forms the dividend for the next step. We stop when the dividend is zero. + * All remainders are stored for later use. + */ + while(dividend.length > 0) + { + quotient = Array(); + x = 0; + for(i = 0; i < dividend.length; i++) + { + x = (x << 16) + dividend[i]; + q = Math.floor(x / divisor); + x -= q * divisor; + if(quotient.length > 0 || q > 0) + quotient[quotient.length] = q; + } + remainders[remainders.length] = x; + dividend = quotient; + } + + /* Convert the remainders to the output string */ + var output = ""; + for(i = remainders.length - 1; i >= 0; i--) + output += encoding.charAt(remainders[i]); + + /* Append leading zero equivalents */ + var full_length = Math.ceil(input.length * 8 / + (Math.log(encoding.length) / Math.log(2))) + for(i = output.length; i < full_length; i++) + output = encoding[0] + output; + + return output; +} + +/* + * Encode a string as utf-8. + * For efficiency, this assumes the input is valid utf-16. + */ +function str2rstr_utf8(input) +{ + var output = ""; + var i = -1; + var x, y; + + while(++i < input.length) + { + /* Decode utf-16 surrogate pairs */ + x = input.charCodeAt(i); + y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0; + if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) + { + x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); + i++; + } + + /* Encode output as utf-8 */ + if(x <= 0x7F) + output += String.fromCharCode(x); + else if(x <= 0x7FF) + output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F), + 0x80 | ( x & 0x3F)); + else if(x <= 0xFFFF) + output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), + 0x80 | ((x >>> 6 ) & 0x3F), + 0x80 | ( x & 0x3F)); + else if(x <= 0x1FFFFF) + output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), + 0x80 | ((x >>> 12) & 0x3F), + 0x80 | ((x >>> 6 ) & 0x3F), + 0x80 | ( x & 0x3F)); + } + return output; +} + +/* + * Encode a string as utf-16 + */ +function str2rstr_utf16le(input) +{ + var output = ""; + for(var i = 0; i < input.length; i++) + output += String.fromCharCode( input.charCodeAt(i) & 0xFF, + (input.charCodeAt(i) >>> 8) & 0xFF); + return output; +} + +function str2rstr_utf16be(input) +{ + var output = ""; + for(var i = 0; i < input.length; i++) + output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, + input.charCodeAt(i) & 0xFF); + return output; +} + +/* + * Convert a raw string to an array of big-endian words + * Characters >255 have their high-byte silently ignored. + */ +function rstr2binb(input) +{ + var output = Array(input.length >> 2); + for(var i = 0; i < output.length; i++) + output[i] = 0; + for(var i = 0; i < input.length * 8; i += 8) + output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32); + return output; +} + +/* + * Convert an array of big-endian words to a string + */ +function binb2rstr(input) +{ + var output = ""; + for(var i = 0; i < input.length * 32; i += 8) + output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF); + return output; +} + +/* + * Calculate the SHA-1 of an array of big-endian words, and a bit length + */ +function binb_sha1(x, len) +{ + /* append padding */ + x[len >> 5] |= 0x80 << (24 - len % 32); + x[((len + 64 >> 9) << 4) + 15] = len; + + var w = Array(80); + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + var e = -1009589776; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + var olde = e; + + for(var j = 0; j < 80; j++) + { + if(j < 16) w[j] = x[i + j]; + else w[j] = bit_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); + var t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)), + safe_add(safe_add(e, w[j]), sha1_kt(j))); + e = d; + d = c; + c = bit_rol(b, 30); + b = a; + a = t; + } + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + e = safe_add(e, olde); + } + return Array(a, b, c, d, e); + +} + +/* + * Perform the appropriate triplet combination function for the current + * iteration + */ +function sha1_ft(t, b, c, d) +{ + if(t < 20) return (b & c) | ((~b) & d); + if(t < 40) return b ^ c ^ d; + if(t < 60) return (b & c) | (b & d) | (c & d); + return b ^ c ^ d; +} + +/* + * Determine the appropriate additive constant for the current iteration + */ +function sha1_kt(t) +{ + return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : + (t < 60) ? -1894007588 : -899497514; +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function bit_rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} diff --git a/static/js/pichat.js b/static/js/pichat.js index a236ba0..031ac29 100644 --- a/static/js/pichat.js +++ b/static/js/pichat.js @@ -3,6 +3,89 @@ var PendingMessages = {} var MessageContentCache = {} var RawFavs = {} +var InvalidDomains = [ + "http://13gb.com", + "http://69.42.73.10", + "http://amitkulkarni.info", + "http://catcatcat.com", + "http://celebskin.com", + "http://current.com", + "http://files.shroomery.org", + "http://guides.macrumors.com", + "http://henshin.250x.com", + "http://i.pbase.com", + "http://images.nintendolife.com", + "http://img.bettersoft.de", + "http://izismile.com", + "http://izismile.com", + "http://izismile.com/img", + "http://mytextgraphics.com", + "http://nexus404.com", + "http://nintendolife.com", + "http://nofatclips.com", + "http://portfolio.deeperstudy.com", + "http://ru.fishki.net", + "http://ski.far.ru", + "http://tripod.com", + "http://uallknow.com", + "http://victoryaworld.com", + "http://images.4chan.org", + "http://www.4chan.org", + "http://www.angelfire.com", + "http://www.animation-central.com", + "http://www.arrested.com", + "http://www.b3tards.com", + "http://www.bloody-disgusting.com", + "http://www.commenthaven.com", + "http://www.coolnotions.com", + "http://www.creepygif.com", + "http://www.dailymakeover.com", + "http://www.fortunecity.com", + "http://www.gifbin.com", + "http://www.goatse.fr", + "http://www.hail-to-the-thief.org", + "http://www.knowledgebase-script.com", + "http://www.markagame.ru", + "http://www.masternewmedia.org", + "http://www.mortalkombatonline.com", + "http://www.mymodernmagic.com", + "http://www.mystkittsdivebuddy.com", + "http://www.nudecelebritieshentai.com", + "http://www.oldtimestrongman.com", + "http://www.popularpages.net", + "http://www.retrojunk.com", + "http://www.schm032.com", + "http://www.sevenoaksart.co.uk", + "http://www.suicidekiss.com", + "http://www.thecinemasource.com", + "http://www.veryboy.fr", + "http://www.vintagecomputing.com", + "http://www.virtuallandmedia.com", + "http://www.whudat.com", + "http://www.willrich.supanet.com", + "http://www.ysmarko.com", + "http://www.3d-onthelevel.com", + "http://www.heathersanimations.com", + "http://fortunecity.com", + "http://geneology2.com", + "http://www.geneology2.com", + "http://img.waffleimages.com", + "http://www.worldofstock.com", + "http://aphrodite.cooltext.com", + "http://www.onemetal.com", + "http://static.funnyjunk.com", + "http://www.whimsical-wits.com", + "http://madsenworld.dk", + "http://www.oafe.net", + "http://www.mrbalihai.com", + "http://www.digyourowngrave.com", + "http://tripod.com", + "http://www.kaitaia.com", + "http://carsdriveingallery.com", + "http://xxxspacegirls.us", + "http://www.newlog.com.ar" +]; + var MaxImagePosts = 30 // todo: preload these. also, look into image sprites (no go on animating their sizes tho) @@ -199,7 +282,7 @@ function buildMessageDiv(msg, isLoading) { var loadingClass = isLoading ? ' loading' : ''; var containsImageClass = LastMsgContainsImage ? ' contains-image' : ''; return '<div class="msgDiv dump ' + loadingClass + containsImageClass + '" ' + msgId + '>' - + '<span class="nick"><b><a href="http://dump.fm/' + nick + ' " target="_blank">' + nick + '</a></b>' + + '<span class="nick"><b><a href="http://dump.fm/' + nick + ' ">' + nick + '</a></b>' + ' <img src="'+Imgs.chatThumbDot+'" class="chat-thumb" onclick="Tag.favorite(this)"> ' + '</span>' + '<span class="content">' + buildMsgContent(msg.content) + '</span>' @@ -1050,3 +1133,336 @@ $('.msgDiv').live('click', function(e) { Tag.favorite(button); return false; }); + +// sha1.js + +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS 180-1 + * Version 2.2 Copyright Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +/* + * Configurable variables. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + */ +var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ +var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ + +/* + * These are the functions you'll usually want to call + * They take string arguments and return either hex or base-64 encoded strings + */ +function hex_sha1(s) { return rstr2hex(rstr_sha1(str2rstr_utf8(s))); } +function b64_sha1(s) { return rstr2b64(rstr_sha1(str2rstr_utf8(s))); } +function any_sha1(s, e) { return rstr2any(rstr_sha1(str2rstr_utf8(s)), e); } +function hex_hmac_sha1(k, d) + { return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); } +function b64_hmac_sha1(k, d) + { return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); } +function any_hmac_sha1(k, d, e) + { return rstr2any(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d)), e); } + +/* + * Perform a simple self-test to see if the VM is working + */ +function sha1_vm_test() +{ + return hex_sha1("abc").toLowerCase() == "a9993e364706816aba3e25717850c26c9cd0d89d"; +} + +/* + * Calculate the SHA1 of a raw string + */ +function rstr_sha1(s) +{ + return binb2rstr(binb_sha1(rstr2binb(s), s.length * 8)); +} + +/* + * Calculate the HMAC-SHA1 of a key and some data (raw strings) + */ +function rstr_hmac_sha1(key, data) +{ + var bkey = rstr2binb(key); + if(bkey.length > 16) bkey = binb_sha1(bkey, key.length * 8); + + var ipad = Array(16), opad = Array(16); + for(var i = 0; i < 16; i++) + { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + var hash = binb_sha1(ipad.concat(rstr2binb(data)), 512 + data.length * 8); + return binb2rstr(binb_sha1(opad.concat(hash), 512 + 160)); +} + +/* + * Convert a raw string to a hex string + */ +function rstr2hex(input) +{ + try { hexcase } catch(e) { hexcase=0; } + var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; + var output = ""; + var x; + for(var i = 0; i < input.length; i++) + { + x = input.charCodeAt(i); + output += hex_tab.charAt((x >>> 4) & 0x0F) + + hex_tab.charAt( x & 0x0F); + } + return output; +} + +/* + * Convert a raw string to a base-64 string + */ +function rstr2b64(input) +{ + try { b64pad } catch(e) { b64pad=''; } + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var output = ""; + var len = input.length; + for(var i = 0; i < len; i += 3) + { + var triplet = (input.charCodeAt(i) << 16) + | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0) + | (i + 2 < len ? input.charCodeAt(i+2) : 0); + for(var j = 0; j < 4; j++) + { + if(i * 8 + j * 6 > input.length * 8) output += b64pad; + else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F); + } + } + return output; +} + +/* + * Convert a raw string to an arbitrary string encoding + */ +function rstr2any(input, encoding) +{ + var divisor = encoding.length; + var remainders = Array(); + var i, q, x, quotient; + + /* Convert to an array of 16-bit big-endian values, forming the dividend */ + var dividend = Array(Math.ceil(input.length / 2)); + for(i = 0; i < dividend.length; i++) + { + dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1); + } + + /* + * Repeatedly perform a long division. The binary array forms the dividend, + * the length of the encoding is the divisor. Once computed, the quotient + * forms the dividend for the next step. We stop when the dividend is zero. + * All remainders are stored for later use. + */ + while(dividend.length > 0) + { + quotient = Array(); + x = 0; + for(i = 0; i < dividend.length; i++) + { + x = (x << 16) + dividend[i]; + q = Math.floor(x / divisor); + x -= q * divisor; + if(quotient.length > 0 || q > 0) + quotient[quotient.length] = q; + } + remainders[remainders.length] = x; + dividend = quotient; + } + + /* Convert the remainders to the output string */ + var output = ""; + for(i = remainders.length - 1; i >= 0; i--) + output += encoding.charAt(remainders[i]); + + /* Append leading zero equivalents */ + var full_length = Math.ceil(input.length * 8 / + (Math.log(encoding.length) / Math.log(2))) + for(i = output.length; i < full_length; i++) + output = encoding[0] + output; + + return output; +} + +/* + * Encode a string as utf-8. + * For efficiency, this assumes the input is valid utf-16. + */ +function str2rstr_utf8(input) +{ + var output = ""; + var i = -1; + var x, y; + + while(++i < input.length) + { + /* Decode utf-16 surrogate pairs */ + x = input.charCodeAt(i); + y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0; + if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) + { + x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); + i++; + } + + /* Encode output as utf-8 */ + if(x <= 0x7F) + output += String.fromCharCode(x); + else if(x <= 0x7FF) + output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F), + 0x80 | ( x & 0x3F)); + else if(x <= 0xFFFF) + output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), + 0x80 | ((x >>> 6 ) & 0x3F), + 0x80 | ( x & 0x3F)); + else if(x <= 0x1FFFFF) + output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), + 0x80 | ((x >>> 12) & 0x3F), + 0x80 | ((x >>> 6 ) & 0x3F), + 0x80 | ( x & 0x3F)); + } + return output; +} + +/* + * Encode a string as utf-16 + */ +function str2rstr_utf16le(input) +{ + var output = ""; + for(var i = 0; i < input.length; i++) + output += String.fromCharCode( input.charCodeAt(i) & 0xFF, + (input.charCodeAt(i) >>> 8) & 0xFF); + return output; +} + +function str2rstr_utf16be(input) +{ + var output = ""; + for(var i = 0; i < input.length; i++) + output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, + input.charCodeAt(i) & 0xFF); + return output; +} + +/* + * Convert a raw string to an array of big-endian words + * Characters >255 have their high-byte silently ignored. + */ +function rstr2binb(input) +{ + var output = Array(input.length >> 2); + for(var i = 0; i < output.length; i++) + output[i] = 0; + for(var i = 0; i < input.length * 8; i += 8) + output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32); + return output; +} + +/* + * Convert an array of big-endian words to a string + */ +function binb2rstr(input) +{ + var output = ""; + for(var i = 0; i < input.length * 32; i += 8) + output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF); + return output; +} + +/* + * Calculate the SHA-1 of an array of big-endian words, and a bit length + */ +function binb_sha1(x, len) +{ + /* append padding */ + x[len >> 5] |= 0x80 << (24 - len % 32); + x[((len + 64 >> 9) << 4) + 15] = len; + + var w = Array(80); + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + var e = -1009589776; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + var olde = e; + + for(var j = 0; j < 80; j++) + { + if(j < 16) w[j] = x[i + j]; + else w[j] = bit_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); + var t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)), + safe_add(safe_add(e, w[j]), sha1_kt(j))); + e = d; + d = c; + c = bit_rol(b, 30); + b = a; + a = t; + } + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + e = safe_add(e, olde); + } + return Array(a, b, c, d, e); + +} + +/* + * Perform the appropriate triplet combination function for the current + * iteration + */ +function sha1_ft(t, b, c, d) +{ + if(t < 20) return (b & c) | ((~b) & d); + if(t < 40) return b ^ c ^ d; + if(t < 60) return (b & c) | (b & d) | (c & d); + return b ^ c ^ d; +} + +/* + * Determine the appropriate additive constant for the current iteration + */ +function sha1_kt(t) +{ + return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : + (t < 60) ? -1894007588 : -899497514; +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function bit_rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} diff --git a/static/js/register.js b/static/js/register.js index 16cc8b0..ebdc095 100755 --- a/static/js/register.js +++ b/static/js/register.js @@ -65,4 +65,336 @@ function submitRegistration() { function initRegister() { $('#submit').click(submitRegistration); -}
\ No newline at end of file +} +// sha1.js + +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS 180-1 + * Version 2.2 Copyright Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +/* + * Configurable variables. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + */ +var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ +var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ + +/* + * These are the functions you'll usually want to call + * They take string arguments and return either hex or base-64 encoded strings + */ +function hex_sha1(s) { return rstr2hex(rstr_sha1(str2rstr_utf8(s))); } +function b64_sha1(s) { return rstr2b64(rstr_sha1(str2rstr_utf8(s))); } +function any_sha1(s, e) { return rstr2any(rstr_sha1(str2rstr_utf8(s)), e); } +function hex_hmac_sha1(k, d) + { return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); } +function b64_hmac_sha1(k, d) + { return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); } +function any_hmac_sha1(k, d, e) + { return rstr2any(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d)), e); } + +/* + * Perform a simple self-test to see if the VM is working + */ +function sha1_vm_test() +{ + return hex_sha1("abc").toLowerCase() == "a9993e364706816aba3e25717850c26c9cd0d89d"; +} + +/* + * Calculate the SHA1 of a raw string + */ +function rstr_sha1(s) +{ + return binb2rstr(binb_sha1(rstr2binb(s), s.length * 8)); +} + +/* + * Calculate the HMAC-SHA1 of a key and some data (raw strings) + */ +function rstr_hmac_sha1(key, data) +{ + var bkey = rstr2binb(key); + if(bkey.length > 16) bkey = binb_sha1(bkey, key.length * 8); + + var ipad = Array(16), opad = Array(16); + for(var i = 0; i < 16; i++) + { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + var hash = binb_sha1(ipad.concat(rstr2binb(data)), 512 + data.length * 8); + return binb2rstr(binb_sha1(opad.concat(hash), 512 + 160)); +} + +/* + * Convert a raw string to a hex string + */ +function rstr2hex(input) +{ + try { hexcase } catch(e) { hexcase=0; } + var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; + var output = ""; + var x; + for(var i = 0; i < input.length; i++) + { + x = input.charCodeAt(i); + output += hex_tab.charAt((x >>> 4) & 0x0F) + + hex_tab.charAt( x & 0x0F); + } + return output; +} + +/* + * Convert a raw string to a base-64 string + */ +function rstr2b64(input) +{ + try { b64pad } catch(e) { b64pad=''; } + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var output = ""; + var len = input.length; + for(var i = 0; i < len; i += 3) + { + var triplet = (input.charCodeAt(i) << 16) + | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0) + | (i + 2 < len ? input.charCodeAt(i+2) : 0); + for(var j = 0; j < 4; j++) + { + if(i * 8 + j * 6 > input.length * 8) output += b64pad; + else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F); + } + } + return output; +} + +/* + * Convert a raw string to an arbitrary string encoding + */ +function rstr2any(input, encoding) +{ + var divisor = encoding.length; + var remainders = Array(); + var i, q, x, quotient; + + /* Convert to an array of 16-bit big-endian values, forming the dividend */ + var dividend = Array(Math.ceil(input.length / 2)); + for(i = 0; i < dividend.length; i++) + { + dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1); + } + + /* + * Repeatedly perform a long division. The binary array forms the dividend, + * the length of the encoding is the divisor. Once computed, the quotient + * forms the dividend for the next step. We stop when the dividend is zero. + * All remainders are stored for later use. + */ + while(dividend.length > 0) + { + quotient = Array(); + x = 0; + for(i = 0; i < dividend.length; i++) + { + x = (x << 16) + dividend[i]; + q = Math.floor(x / divisor); + x -= q * divisor; + if(quotient.length > 0 || q > 0) + quotient[quotient.length] = q; + } + remainders[remainders.length] = x; + dividend = quotient; + } + + /* Convert the remainders to the output string */ + var output = ""; + for(i = remainders.length - 1; i >= 0; i--) + output += encoding.charAt(remainders[i]); + + /* Append leading zero equivalents */ + var full_length = Math.ceil(input.length * 8 / + (Math.log(encoding.length) / Math.log(2))) + for(i = output.length; i < full_length; i++) + output = encoding[0] + output; + + return output; +} + +/* + * Encode a string as utf-8. + * For efficiency, this assumes the input is valid utf-16. + */ +function str2rstr_utf8(input) +{ + var output = ""; + var i = -1; + var x, y; + + while(++i < input.length) + { + /* Decode utf-16 surrogate pairs */ + x = input.charCodeAt(i); + y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0; + if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) + { + x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); + i++; + } + + /* Encode output as utf-8 */ + if(x <= 0x7F) + output += String.fromCharCode(x); + else if(x <= 0x7FF) + output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F), + 0x80 | ( x & 0x3F)); + else if(x <= 0xFFFF) + output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), + 0x80 | ((x >>> 6 ) & 0x3F), + 0x80 | ( x & 0x3F)); + else if(x <= 0x1FFFFF) + output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), + 0x80 | ((x >>> 12) & 0x3F), + 0x80 | ((x >>> 6 ) & 0x3F), + 0x80 | ( x & 0x3F)); + } + return output; +} + +/* + * Encode a string as utf-16 + */ +function str2rstr_utf16le(input) +{ + var output = ""; + for(var i = 0; i < input.length; i++) + output += String.fromCharCode( input.charCodeAt(i) & 0xFF, + (input.charCodeAt(i) >>> 8) & 0xFF); + return output; +} + +function str2rstr_utf16be(input) +{ + var output = ""; + for(var i = 0; i < input.length; i++) + output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, + input.charCodeAt(i) & 0xFF); + return output; +} + +/* + * Convert a raw string to an array of big-endian words + * Characters >255 have their high-byte silently ignored. + */ +function rstr2binb(input) +{ + var output = Array(input.length >> 2); + for(var i = 0; i < output.length; i++) + output[i] = 0; + for(var i = 0; i < input.length * 8; i += 8) + output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32); + return output; +} + +/* + * Convert an array of big-endian words to a string + */ +function binb2rstr(input) +{ + var output = ""; + for(var i = 0; i < input.length * 32; i += 8) + output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF); + return output; +} + +/* + * Calculate the SHA-1 of an array of big-endian words, and a bit length + */ +function binb_sha1(x, len) +{ + /* append padding */ + x[len >> 5] |= 0x80 << (24 - len % 32); + x[((len + 64 >> 9) << 4) + 15] = len; + + var w = Array(80); + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + var e = -1009589776; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + var olde = e; + + for(var j = 0; j < 80; j++) + { + if(j < 16) w[j] = x[i + j]; + else w[j] = bit_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); + var t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)), + safe_add(safe_add(e, w[j]), sha1_kt(j))); + e = d; + d = c; + c = bit_rol(b, 30); + b = a; + a = t; + } + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + e = safe_add(e, olde); + } + return Array(a, b, c, d, e); + +} + +/* + * Perform the appropriate triplet combination function for the current + * iteration + */ +function sha1_ft(t, b, c, d) +{ + if(t < 20) return (b & c) | ((~b) & d); + if(t < 40) return b ^ c ^ d; + if(t < 60) return (b & c) | (b & d) | (c & d); + return b ^ c ^ d; +} + +/* + * Determine the appropriate additive constant for the current iteration + */ +function sha1_kt(t) +{ + return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : + (t < 60) ? -1894007588 : -899497514; +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function bit_rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} diff --git a/static/register.html b/static/register.html index 18849e2..b6730a5 100644 --- a/static/register.html +++ b/static/register.html @@ -1,17 +1,13 @@ <html><head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> - <script type="text/javascript" src="/static/js/underscore-min.js"></script> - <script type="text/javascript" src="/static/js/sha1.js"></script> <script type="text/javascript" src="/static/js/register.js"></script> <script> $(document).ready(initRegister); </script> - <link rel="stylesheet" type="text/css" href="static/css/reset.css"> <link rel="stylesheet" type="text/css" href="static/css/index.css"> - - <link rel="shortcut icon" href="static/favicon.ico"> + <link rel="shortcut icon" href="static/favicon.ico"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <META NAME="keywords" CONTENT="dump.fm, image chat, realtime, internet 3.0, dump, dump fm, image dump, pictures, image links, image board"> <META NAME="description" CONTENT="Talk with pictures!"> <title>dump.fm - register</title></head> |
