commit 906eb57d4dbb17ebca842858ac97c4acf429ec43 Author: Simon Vieille Date: Mon Mar 2 21:01:53 2015 +0100 init diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..f8c64b5 --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,214 @@ +body { + background: url('../img/girl.jpg') no-repeat fixed; + margin: 0; + padding: 0; +} + +@font-face { + font-family: univers-light; + src: url('../fonts/UniversLTStd-Light.otf') format("opentype"); + src: url('../fonts/universltstd-light-webfont.eot'); + src: url('../fonts/universltstd-light-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/universltstd-light-webfont.woff') format('woff'), + url('../fonts/universltstd-light-webfont.ttf') format('truetype'), + url('../fonts/universltstd-light-webfont.svg#univers_lt_std45_light') format('svg'); +} + +@font-face { + font-family: univers; + src: url('../fonts/UniversLTStd.otf') format("opentype"); + src: url('../fonts/universltstd-webfont.eot'); + src: url('../fonts/universltstd-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/universltstd-webfont.woff') format('woff'), + url('../fonts/universltstd-webfont.ttf') format('truetype'), + url('../fonts/universltstd-webfont.svg#univers_lt_std45_light') format('svg'); +} + +.container { + width: 900px; + margin: auto; +} + +#home p { + font-family: univers-light; + font-size: 17px; + color: #fff; + padding-top: 400px; +} + +.button { + display: inline-block; + padding: 25px; + text-transform: uppercase; + font-size: 20px; + text-decoration: none; + font-family: univers; +} + +#connect { + color: #fff; + position: absolute; + margin-left: 377px; + z-index: 50; +} + +#connect .button { + background: #f94130; + color: #fff; +} + +#insert { + font-size: 13px; + display: block; + padding: 3px 0 0 0; + color: #fff; + text-decoration: none; +} + +#insert:hover { + text-decoration: underline; +} + +#neutralnetwork { + color: #fff; + font-family: univers; + font-size: 17px; +} + +#topic { + font-size: 19px; +} + +#topic strong { + text-transform: uppercase; +} + +#top { + padding: 10px 0; + background: #333; + position: fixed; + top: 0; + width: 100%; + z-index: 100; +} + +#nav { + position: absolute; + text-align: right; + margin-top: -30px; +} + +#nav ul { + margin: 0; + padding: 0; +} + +#nav li { + list-style: none; + display: inline-block; + padding: 0 10px; + border-left: 1px solid #555; +} + +#nav li:first-child { + border: 0; +} + +#nav a { + color: #fff; + text-decoration: none; + font-family: univers-light; + font-size: 15px; +} + +#join { + background: #f94130; + color: #fff; +} + +h1 { + font-weight: bold: + font-size: 20px; + margin: 0; + padding: 100px 0 40px 0; + text-align: center; + font-family: univers; +} + +#join, #join a { + color: #fff; + text-decoration: none; +} + +.step { + font-family: univers; + font-size: 15px; + margin-bottom: 70px; +} + +.number { + font-size: 70px; + width: 80px; + text-align: center; + vertical-align: top; +} + +.number, .help { + display: inline-block; +} + +.help { + line-height: 25px; +} + +#chat { + background: #FFB920; +} + +#chat iframe { + width: 100%; + border: 0; + padding-top: 64px; + margin: 0; +} + +#embed { + padding-top: 280px; + background: #FFB920; +} + +#embed input { + font-size: 22px; + background: #fff; + border: 1px solid #fff; + padding: 5px; +} + +#embed label { + display: block; + font-size: 20px; + font-family: univers; + padding: 5px 0; +} + +#embed .help { + display: block; + font-size: 17px; + font-family: univers; + padding: 10px 0; +} + +#html { + display: none; + margin-top: 10px; + padding-top: 10px; + /* border-top: 1px solid #fff; */ +} + +#embed a { + color: #333; +} + +#embed input { + width: 100%; +} diff --git a/assets/fonts/UniversLTStd-Light.otf b/assets/fonts/UniversLTStd-Light.otf new file mode 100644 index 0000000..334d0d2 Binary files /dev/null and b/assets/fonts/UniversLTStd-Light.otf differ diff --git a/assets/fonts/UniversLTStd.otf b/assets/fonts/UniversLTStd.otf new file mode 100644 index 0000000..3c0fafc Binary files /dev/null and b/assets/fonts/UniversLTStd.otf differ diff --git a/assets/fonts/universltstd-light-webfont.eot b/assets/fonts/universltstd-light-webfont.eot new file mode 100644 index 0000000..82ed788 Binary files /dev/null and b/assets/fonts/universltstd-light-webfont.eot differ diff --git a/assets/fonts/universltstd-light-webfont.svg b/assets/fonts/universltstd-light-webfont.svg new file mode 100644 index 0000000..6b0afe1 --- /dev/null +++ b/assets/fonts/universltstd-light-webfont.svg @@ -0,0 +1,678 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/fonts/universltstd-light-webfont.ttf b/assets/fonts/universltstd-light-webfont.ttf new file mode 100644 index 0000000..499912f Binary files /dev/null and b/assets/fonts/universltstd-light-webfont.ttf differ diff --git a/assets/fonts/universltstd-light-webfont.woff b/assets/fonts/universltstd-light-webfont.woff new file mode 100644 index 0000000..a951c7f Binary files /dev/null and b/assets/fonts/universltstd-light-webfont.woff differ diff --git a/assets/fonts/universltstd-webfont.eot b/assets/fonts/universltstd-webfont.eot new file mode 100644 index 0000000..7412890 Binary files /dev/null and b/assets/fonts/universltstd-webfont.eot differ diff --git a/assets/fonts/universltstd-webfont.svg b/assets/fonts/universltstd-webfont.svg new file mode 100644 index 0000000..2cef820 --- /dev/null +++ b/assets/fonts/universltstd-webfont.svg @@ -0,0 +1,580 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/fonts/universltstd-webfont.ttf b/assets/fonts/universltstd-webfont.ttf new file mode 100644 index 0000000..b45c3d5 Binary files /dev/null and b/assets/fonts/universltstd-webfont.ttf differ diff --git a/assets/fonts/universltstd-webfont.woff b/assets/fonts/universltstd-webfont.woff new file mode 100644 index 0000000..e6d943c Binary files /dev/null and b/assets/fonts/universltstd-webfont.woff differ diff --git a/assets/img/ban223.png b/assets/img/ban223.png new file mode 100644 index 0000000..993a687 Binary files /dev/null and b/assets/img/ban223.png differ diff --git a/assets/img/ban250.png b/assets/img/ban250.png new file mode 100644 index 0000000..8858ce9 Binary files /dev/null and b/assets/img/ban250.png differ diff --git a/assets/img/ban300.png b/assets/img/ban300.png new file mode 100644 index 0000000..fe32b6a Binary files /dev/null and b/assets/img/ban300.png differ diff --git a/assets/img/girl.jpg b/assets/img/girl.jpg new file mode 100644 index 0000000..43b0978 Binary files /dev/null and b/assets/img/girl.jpg differ diff --git a/assets/js/.main.js.swp b/assets/js/.main.js.swp new file mode 100644 index 0000000..63790d9 Binary files /dev/null and b/assets/js/.main.js.swp differ diff --git a/assets/js/jquery/jquery.localscroll.js b/assets/js/jquery/jquery.localscroll.js new file mode 100755 index 0000000..7a4dad5 --- /dev/null +++ b/assets/js/jquery/jquery.localscroll.js @@ -0,0 +1,133 @@ +/** + * jQuery.LocalScroll + * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com + * Dual licensed under MIT and GPL. + * Date: 3/11/2009 + * + * @projectDescription Animated scrolling navigation, using anchors. + * http://flesler.blogspot.com/2007/10/jquerylocalscroll-10.html + * @author Ariel Flesler + * @version 1.2.7 + * + * @id jQuery.fn.localScroll + * @param {Object} settings Hash of settings, it is passed in to jQuery.ScrollTo, none is required. + * @return {jQuery} Returns the same jQuery object, for chaining. + * + * @example $('ul.links').localScroll(); + * + * @example $('ul.links').localScroll({ filter:'.animated', duration:400, axis:'x' }); + * + * @example $.localScroll({ target:'#pane', axis:'xy', queue:true, event:'mouseover' }); + * + * Notes: + * - The plugin requires jQuery.ScrollTo. + * - The hash of settings, is passed to jQuery.ScrollTo, so the settings are valid for that plugin as well. + * - jQuery.localScroll can be used if the desired links, are all over the document, it accepts the same settings. + * - If the setting 'lazy' is set to true, then the binding will still work for later added anchors. + * - If onBefore returns false, the event is ignored. + **/ +;(function( $ ){ + var URI = location.href.replace(/#.*/,''); // local url without hash + + var $localScroll = $.localScroll = function( settings ){ + $('body').localScroll( settings ); + }; + + // Many of these defaults, belong to jQuery.ScrollTo, check it's demo for an example of each option. + // @see http://flesler.demos.com/jquery/scrollTo/ + // The defaults are public and can be overriden. + $localScroll.defaults = { + duration:1000, // How long to animate. + axis:'y', // Which of top and left should be modified. + event:'click', // On which event to react. + stop:true, // Avoid queuing animations + target: window, // What to scroll (selector or element). The whole window by default. + reset: true // Used by $.localScroll.hash. If true, elements' scroll is resetted before actual scrolling + /* + lock:false, // ignore events if already animating + lazy:false, // if true, links can be added later, and will still work. + filter:null, // filter some anchors out of the matched elements. + hash: false // if true, the hash of the selected link, will appear on the address bar. + */ + }; + + // If the URL contains a hash, it will scroll to the pointed element + $localScroll.hash = function( settings ){ + if( location.hash ){ + settings = $.extend( {}, $localScroll.defaults, settings ); + settings.hash = false; // can't be true + + if( settings.reset ){ + var d = settings.duration; + delete settings.duration; + $(settings.target).scrollTo( 0, settings ); + settings.duration = d; + } + scroll( 0, location, settings ); + } + }; + + $.fn.localScroll = function( settings ){ + settings = $.extend( {}, $localScroll.defaults, settings ); + + return settings.lazy ? + // use event delegation, more links can be added later. + this.bind( settings.event, function( e ){ + // Could use closest(), but that would leave out jQuery -1.3.x + var a = $([e.target, e.target.parentNode]).filter(filter)[0]; + // if a valid link was clicked + if( a ) + scroll( e, a, settings ); // do scroll. + }) : + // bind concretely, to each matching link + this.find('a,area') + .filter( filter ).bind( settings.event, function(e){ + scroll( e, this, settings ); + }).end() + .end(); + + function filter(){// is this a link that points to an anchor and passes a possible filter ? href is checked to avoid a bug in FF. + return !!this.href && !!this.hash && this.href.replace(this.hash,'') == URI && (!settings.filter || $(this).is( settings.filter )); + }; + }; + + function scroll( e, link, settings ){ + var id = link.hash.slice(1), + elem = document.getElementById(id) || document.getElementsByName(id)[0]; + + if ( !elem ) + return; + + if( e ) + e.preventDefault(); + + var $target = $( settings.target ); + + if( settings.lock && $target.is(':animated') || + settings.onBefore && settings.onBefore.call(settings, e, elem, $target) === false ) + return; + + if( settings.stop ) + $target.stop(true); // remove all its animations + + if( settings.hash ){ + var attr = elem.id == id ? 'id' : 'name', + $a = $(' ').attr(attr, id).css({ + position:'absolute', + top: $(window).scrollTop(), + left: $(window).scrollLeft() + }); + + elem[attr] = ''; + $('body').prepend($a); + location = link.hash; + $a.remove(); + elem[attr] = id; + } + + $target + .scrollTo( elem, settings ) // do scroll + .trigger('notify.serialScroll',[elem]); // notify serialScroll about this change + }; + +})( jQuery ); \ No newline at end of file diff --git a/assets/js/jquery/jquery.scrollTo.js b/assets/js/jquery/jquery.scrollTo.js new file mode 100755 index 0000000..9ce3379 --- /dev/null +++ b/assets/js/jquery/jquery.scrollTo.js @@ -0,0 +1,208 @@ +/** + * jQuery.ScrollTo + * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com + * Dual licensed under MIT and GPL. + * Date: 3/9/2009 + * + * @projectDescription Easy element scrolling using jQuery. + * http://flesler.blogspot.com/2007/10/jqueryscrollto.html + * Works with jQuery +1.2.6. Tested on FF 2/3, IE 6/7/8, Opera 9.5/6, Safari 3, Chrome 1 on WinXP. + * + * @author Ariel Flesler + * @version 1.4.1 + * + * @id jQuery.scrollTo + * @id jQuery.fn.scrollTo + * @param {String, Number, DOMElement, jQuery, Object} target Where to scroll the matched elements. + * The different options for target are: + * - A number position (will be applied to all axes). + * - A string position ('44', '100px', '+=90', etc ) will be applied to all axes + * - A jQuery/DOM element ( logically, child of the element to scroll ) + * - A string selector, that will be relative to the element to scroll ( 'li:eq(2)', etc ) + * - A hash { top:x, left:y }, x and y can be any kind of number/string like above. + * - The string 'max' for go-to-end. + * @param {Number} duration The OVERALL length of the animation, this argument can be the settings object instead. + * @param {Object,Function} settings Optional set of settings or the onAfter callback. + * @option {String} axis Which axis must be scrolled, use 'x', 'y', 'xy' or 'yx'. + * @option {Number} duration The OVERALL length of the animation. + * @option {String} easing The easing method for the animation. + * @option {Boolean} margin If true, the margin of the target element will be deducted from the final position. + * @option {Object, Number} offset Add/deduct from the end position. One number for both axes or { top:x, left:y }. + * @option {Object, Number} over Add/deduct the height/width multiplied by 'over', can be { top:x, left:y } when using both axes. + * @option {Boolean} queue If true, and both axis are given, the 2nd axis will only be animated after the first one ends. + * @option {Function} onAfter Function to be called after the scrolling ends. + * @option {Function} onAfterFirst If queuing is activated, this function will be called after the first scrolling ends. + * @return {jQuery} Returns the same jQuery object, for chaining. + * + * @desc Scroll to a fixed position + * @example $('div').scrollTo( 340 ); + * + * @desc Scroll relatively to the actual position + * @example $('div').scrollTo( '+=340px', { axis:'y' } ); + * + * @dec Scroll using a selector (relative to the scrolled element) + * @example $('div').scrollTo( 'p.paragraph:eq(2)', 500, { easing:'swing', queue:true, axis:'xy' } ); + * + * @ Scroll to a DOM element (same for jQuery object) + * @example var second_child = document.getElementById('container').firstChild.nextSibling; + * $('#container').scrollTo( second_child, { duration:500, axis:'x', onAfter:function(){ + * alert('scrolled!!'); + * }}); + * + * @desc Scroll on both axes, to different values + * @example $('div').scrollTo( { top: 300, left:'+=200' }, { axis:'xy', offset:-20 } ); + */ +;(function( $ ){ + + var $scrollTo = $.scrollTo = function( target, duration, settings ){ + $(window).scrollTo( target, duration, settings ); + }; + + $scrollTo.defaults = { + axis:'xy', + duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1 + }; + + // Returns the element that needs to be animated to scroll the window. + // Kept for backwards compatibility (specially for localScroll & serialScroll) + $scrollTo.window = function( scope ){ + return $(window).scrollable(); + }; + + // Hack, hack, hack... stay away! + // Returns the real elements to scroll (supports window/iframes, documents and regular nodes) + $.fn.scrollable = function(){ + return this.map(function(){ + var elem = this, + isWin = !elem.nodeName || $.inArray( elem.nodeName.toLowerCase(), ['iframe','#document','html','body'] ) != -1; + + if( !isWin ) + return elem; + + var doc = (elem.contentWindow || elem).document || elem.ownerDocument || elem; + + return $.browser.safari || doc.compatMode == 'BackCompat' ? + doc.body : + doc.documentElement; + }); + }; + + $.fn.scrollTo = function( target, duration, settings ){ + if( typeof duration == 'object' ){ + settings = duration; + duration = 0; + } + if( typeof settings == 'function' ) + settings = { onAfter:settings }; + + if( target == 'max' ) + target = 9e9; + + settings = $.extend( {}, $scrollTo.defaults, settings ); + // Speed is still recognized for backwards compatibility + duration = duration || settings.speed || settings.duration; + // Make sure the settings are given right + settings.queue = settings.queue && settings.axis.length > 1; + + if( settings.queue ) + // Let's keep the overall duration + duration /= 2; + settings.offset = both( settings.offset ); + settings.over = both( settings.over ); + + return this.scrollable().each(function(){ + var elem = this, + $elem = $(elem), + targ = target, toff, attr = {}, + win = $elem.is('html,body'); + + switch( typeof targ ){ + // A number will pass the regex + case 'number': + case 'string': + if( /^([+-]=)?\d+(\.\d+)?(px)?$/.test(targ) ){ + targ = both( targ ); + // We are done + break; + } + // Relative selector, no break! + targ = $(targ,this); + case 'object': + // DOMElement / jQuery + if( targ.is || targ.style ) + // Get the real position of the target + toff = (targ = $(targ)).offset(); + } + $.each( settings.axis.split(''), function( i, axis ){ + var Pos = axis == 'x' ? 'Left' : 'Top', + pos = Pos.toLowerCase(), + key = 'scroll' + Pos, + old = elem[key], + Dim = axis == 'x' ? 'Width' : 'Height'; + + if( toff ){// jQuery / DOMElement + attr[key] = toff[pos] + ( win ? 0 : old - $elem.offset()[pos] ); + + // If it's a dom element, reduce the margin + if( settings.margin ){ + attr[key] -= parseInt(targ.css('margin'+Pos)) || 0; + attr[key] -= parseInt(targ.css('border'+Pos+'Width')) || 0; + } + + attr[key] += settings.offset[pos] || 0; + + if( settings.over[pos] ) + // Scroll to a fraction of its width/height + attr[key] += targ[Dim.toLowerCase()]() * settings.over[pos]; + }else + attr[key] = targ[pos]; + + // Number or 'number' + if( /^\d+$/.test(attr[key]) ) + // Check the limits + attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max(Dim) ); + + // Queueing axes + if( !i && settings.queue ){ + // Don't waste time animating, if there's no need. + if( old != attr[key] ) + // Intermediate animation + animate( settings.onAfterFirst ); + // Don't animate this axis again in the next iteration. + delete attr[key]; + } + }); + + animate( settings.onAfter ); + + function animate( callback ){ + $elem.animate( attr, duration, settings.easing, callback && function(){ + callback.call(this, target, settings); + }); + }; + + // Max scrolling position, works on quirks mode + // It only fails (not too badly) on IE, quirks mode. + function max( Dim ){ + var scroll = 'scroll'+Dim; + + if( !win ) + return elem[scroll]; + + var size = 'client' + Dim, + html = elem.ownerDocument.documentElement, + body = elem.ownerDocument.body; + + return Math.max( html[scroll], body[scroll] ) + - Math.min( html[size] , body[size] ); + + }; + + }).end(); + }; + + function both( val ){ + return typeof val == 'object' ? val : { top:val, left:val }; + }; + +})( jQuery ); \ No newline at end of file diff --git a/assets/js/jquery/jquery.smooth-scroll.js b/assets/js/jquery/jquery.smooth-scroll.js new file mode 100644 index 0000000..b8965c9 --- /dev/null +++ b/assets/js/jquery/jquery.smooth-scroll.js @@ -0,0 +1,248 @@ +(function($) { +var version = '1.4.13', + optionOverrides = {}, + defaults = { + exclude: [], + excludeWithin:[], + offset: 0, + + // one of 'top' or 'left' + direction: 'top', + + // jQuery set of elements you wish to scroll (for $.smoothScroll). + // if null (default), $('html, body').firstScrollable() is used. + scrollElement: null, + + // only use if you want to override default behavior + scrollTarget: null, + + // fn(opts) function to be called before scrolling occurs. + // `this` is the element(s) being scrolled + beforeScroll: function() {}, + + // fn(opts) function to be called after scrolling occurs. + // `this` is the triggering element + afterScroll: function() {}, + easing: 'swing', + speed: 400, + + // coefficient for "auto" speed + autoCoefficent: 2, + + // $.fn.smoothScroll only: whether to prevent the default click action + preventDefault: true + }, + + getScrollable = function(opts) { + var scrollable = [], + scrolled = false, + dir = opts.dir && opts.dir == 'left' ? 'scrollLeft' : 'scrollTop'; + + this.each(function() { + + if (this == document || this == window) { return; } + var el = $(this); + if ( el[dir]() > 0 ) { + scrollable.push(this); + } else { + // if scroll(Top|Left) === 0, nudge the element 1px and see if it moves + el[dir](1); + scrolled = el[dir]() > 0; + if ( scrolled ) { + scrollable.push(this); + } + // then put it back, of course + el[dir](0); + } + }); + + // If no scrollable elements, fall back to , + // if it's in the jQuery collection + // (doing this because Safari sets scrollTop async, + // so can't set it to 1 and immediately get the value.) + if (!scrollable.length) { + this.each(function(index) { + if (this.nodeName === 'BODY') { + scrollable = [this]; + } + }); + } + + // Use the first scrollable element if we're calling firstScrollable() + if ( opts.el === 'first' && scrollable.length > 1 ) { + scrollable = [ scrollable[0] ]; + } + + return scrollable; + }, + isTouch = 'ontouchend' in document; + +$.fn.extend({ + scrollable: function(dir) { + var scrl = getScrollable.call(this, {dir: dir}); + return this.pushStack(scrl); + }, + firstScrollable: function(dir) { + var scrl = getScrollable.call(this, {el: 'first', dir: dir}); + return this.pushStack(scrl); + }, + + smoothScroll: function(options, extra) { + options = options || {}; + + if ( options === 'options' ) { + if ( !extra ) { + return this.first().data('ssOpts'); + } + return this.each(function() { + var $this = $(this), + opts = $.extend($this.data('ssOpts') || {}, extra); + + $(this).data('ssOpts', opts); + }); + } + + var opts = $.extend({}, $.fn.smoothScroll.defaults, options), + locationPath = $.smoothScroll.filterPath(location.pathname); + + this + .unbind('click.smoothscroll') + .bind('click.smoothscroll', function(event) { + var link = this, + $link = $(this), + thisOpts = $.extend({}, opts, $link.data('ssOpts') || {}), + exclude = opts.exclude, + excludeWithin = thisOpts.excludeWithin, + elCounter = 0, ewlCounter = 0, + include = true, + clickOpts = {}, + hostMatch = ((location.hostname === link.hostname) || !link.hostname), + pathMatch = thisOpts.scrollTarget || ( $.smoothScroll.filterPath(link.pathname) || locationPath ) === locationPath, + thisHash = escapeSelector(link.hash); + + if ( !thisOpts.scrollTarget && (!hostMatch || !pathMatch || !thisHash) ) { + include = false; + } else { + while (include && elCounter < exclude.length) { + if ($link.is(escapeSelector(exclude[elCounter++]))) { + include = false; + } + } + while ( include && ewlCounter < excludeWithin.length ) { + if ($link.closest(excludeWithin[ewlCounter++]).length) { + include = false; + } + } + } + + if ( include ) { + + if ( thisOpts.preventDefault ) { + event.preventDefault(); + } + + $.extend( clickOpts, thisOpts, { + scrollTarget: thisOpts.scrollTarget || thisHash, + link: link + }); + $.smoothScroll( clickOpts ); + } + }); + + return this; + } +}); + +$.smoothScroll = function(options, px) { + if ( options === 'options' && typeof px === 'object' ) { + return $.extend(optionOverrides, px); + } + var opts, $scroller, scrollTargetOffset, speed, + scrollerOffset = 0, + offPos = 'offset', + scrollDir = 'scrollTop', + aniProps = {}, + aniOpts = {}, + scrollprops = []; + + if (typeof options === 'number') { + opts = $.extend({link: null}, $.fn.smoothScroll.defaults, optionOverrides); + scrollTargetOffset = options; + } else { + opts = $.extend({link: null}, $.fn.smoothScroll.defaults, options || {}, optionOverrides); + if (opts.scrollElement) { + offPos = 'position'; + if (opts.scrollElement.css('position') == 'static') { + opts.scrollElement.css('position', 'relative'); + } + } + } + + scrollDir = opts.direction == 'left' ? 'scrollLeft' : scrollDir; + + if ( opts.scrollElement ) { + $scroller = opts.scrollElement; + if ( !(/^(?:HTML|BODY)$/).test($scroller[0].nodeName) ) { + scrollerOffset = $scroller[scrollDir](); + } + } else { + $scroller = $('html, body').firstScrollable(opts.direction); + } + + // beforeScroll callback function must fire before calculating offset + opts.beforeScroll.call($scroller, opts); + + scrollTargetOffset = (typeof options === 'number') ? options : + px || + ( $(opts.scrollTarget)[offPos]() && + $(opts.scrollTarget)[offPos]()[opts.direction] ) || + 0; + + aniProps[scrollDir] = scrollTargetOffset + scrollerOffset + opts.offset; + speed = opts.speed; + + // automatically calculate the speed of the scroll based on distance / coefficient + if (speed === 'auto') { + + // if aniProps[scrollDir] == 0 then we'll use scrollTop() value instead + speed = aniProps[scrollDir] || $scroller.scrollTop(); + + // divide the speed by the coefficient + speed = speed / opts.autoCoefficent; + } + + aniOpts = { + duration: speed, + easing: opts.easing, + complete: function() { + opts.afterScroll.call(opts.link, opts); + } + }; + + if (opts.step) { + aniOpts.step = opts.step; + } + + if ($scroller.length) { + $scroller.stop().animate(aniProps, aniOpts); + } else { + opts.afterScroll.call(opts.link, opts); + } +}; + +$.smoothScroll.version = version; +$.smoothScroll.filterPath = function(string) { + return string + .replace(/^\//,'') + .replace(/(?:index|default).[a-zA-Z]{3,4}$/,'') + .replace(/\/$/,''); +}; + +// default options +$.fn.smoothScroll.defaults = defaults; + +function escapeSelector (str) { + return str.replace(/(:|\.)/g,'\\$1'); +} + +})(jQuery); diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..49bbb25 --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,30 @@ +$('a[href^="#"]').smoothScroll(); +$('.section').css('min-height', $(window).height()); +$('#chat iframe').css('min-height', $(window).height() - 64); + +$('#channel').keyup(function() { + var channels = $(this).val().replace(/[^a-zA-Z0-9,]/g, '').split(','); + + if (channels.length) { + var uri_channels = []; + + $(channels).each(function(i, v) { + if (v.length) { + uri_channels.push('%23' + v); + } + }); + + if (uri_channels.length) { + var url = 'https://ssl.neutralnetwork.org/irc/?channels=' + uri_channels.join(','); + + $('#html').show(); + $('#html input').val(''); + $('#link').attr('href', url); + + return true; + } + } + + $('#html').hide(); + return false; +}); diff --git a/deploy/deploy b/deploy/deploy new file mode 100755 index 0000000..5f4f07d --- /dev/null +++ b/deploy/deploy @@ -0,0 +1,5 @@ +#!/bin/sh + +DIR=$(dirname "$0") + +rsync -avz -e ssh --exclude-from="$DIR/excluded_files" "$DIR"/../* webneutral@deblan.fr:v2/ diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..0353e7d Binary files /dev/null and b/favicon.ico differ diff --git a/index.php b/index.php new file mode 100644 index 0000000..73c173b --- /dev/null +++ b/index.php @@ -0,0 +1,122 @@ + + + + + + + Neutral Network : Libre, Sécurisé et Neutre + + +
+
+
+
NEUTRALNETWORK.ORG
+
Libre, sécurisé et neutre
+
+ +
+
+ +
+
+

+ + SE CONNECTER AU CHAT + Insérer le chat dans mon site + + + Neutral Network est un réseau IRC
+ indépendant, libre, sécurisé qui croit
+ en la neutralité du net qui veut prouver
+ que le Minitel est révolu. +

+
+
+ +
+
+

Nous rejoindre en 3 étapes !

+ + + +
+
2
+
+ La configuration
+ Le serveur principal du réseau est irc.neutralnetwork.org. Le port par défaut
+ est 6667 mais nous vous invitons à sécuriser vos échanges en chiffrant les messages
+ via SSL et le port 6668. +
+
+ + +
+
+ +
+
+
+
+ Le salon est l'espace dans lequel vous allez pour discuter avec vos amis.
+ On parle aussi de canal ou de channel. Seuls les lettres et les chiffres sont autorisés. + +
+ + Sur quel(s) salon(s) voulez-vous échanger ? (exemple : linux, manga, musique) +
+ + +
+
+ + + +
+ Vous pouvez aussi partager ce lien. +
+
+
+
+ +
+ +
+ + + + + + diff --git a/lib/functions.php b/lib/functions.php new file mode 100644 index 0000000..44b8b37 --- /dev/null +++ b/lib/functions.php @@ -0,0 +1,48 @@ +{$str}->{get_user_culture()}) ? $contents->{$str}->{get_user_culture()} : $str; +} + +function decorate_irc_client() +{ + if (empty($_COOKIE['opt1'])) { + setcookie( + 'opt1', + '{"1":true,"2":false,"3":true,"4":false,"5":true,"6":true,"7":true,"8":true,"9":false,"10":false,"11":244,"12":false,"13":true,"14":true}', + time() + 3600 * 24 * 365 + ); + } +}