Javascript

NodeJS

 * http://nodetuts.com/

Apps

 * SimpleMath

Testing

 * http://pivotal.github.com/jasmine/
 * http://www.jsunit.net/

General

 * http://jsfiddle.net/
 * http://stackoverflow.com/questions/1535631/static-variables-in-javascript
 * http://ejohn.org/blog/nodename-case-sensitivity/
 * http://www.phpied.com/3-ways-to-define-a-javascript-class/
 * http://www.webreference.com/js/column26/stricteq.html

Object Oriented

 * http://mckoss.com/jscript/object.htm
 * http://www.kevlindev.com/tutorials/javascript/inheritance/inheritance10.htm
 * http://www.webreference.com/js/column80/9.html
 * http://szeiger.de/blog/2007/08/06/class-constructors-in-javascript/
 * http://www.pasz.com/articles/JSInheritance.html
 * http://trephine.org/t/index.php?title=JavaScript_call_and_apply_quick_reference
 * http://trephine.org/t/index.php?title=JavaScript_call_and_apply
 * http://www.infoq.com/presentations/JavaScript-Functions

Physics

 * http://www.irunmywebsite.com/raphael/additionalhelp.php
 * http://tomahack.com/physics/

Debugging

 * http://www.qtweb.net/pages/ibr9600.html
 * http://www.javaworld.com/javaworld/jw-07-1996/jw-07-javascript.html?page=5

Animation

 * http://stackoverflow.com/questions/4356930/whats-the-heightauto-trick-to-sliding-a-div-down
 * http://www.harrymaugans.com/2007/03/06/how-to-create-an-animated-sliding-collapsible-div-with-javascript-and-css/
 * http://www.harrymaugans.com/2007/03/05/how-to-create-a-collapsible-div-with-javascript-and-css/
 * http://www.switchonthecode.com/tutorials/javascript-sliding-panels-using-generic-animation
 * http://www.switchonthecode.com/tutorials/javascript-sliding-panels-starting-the-panels-up
 * http://www.dynamicdrive.com/dynamicindex17/animatedcollapse.htm
 * http://www.fortysomething.ca/mt/etc/archives/006423.php
 * http://www.harrymaugans.com/2007/03/06/how-to-create-an-animated-sliding-collapsible-div-with-javascript-and-css/#slideexample
 * http://api.jquery.com/slideDown/
 * http://www.w3schools.com/jquery/eff_slidedown.asp
 * http://www.bennadel.com/blog/1827-Using-jQuery-s-SlideUp-and-SlideDown-Methods-With-Bottom-Positioned-Elements.htm
 * http://tympanus.net/codrops/2010/07/16/slide-down-box-menu/
 * http://tympanus.net/Tutorials/SlideDownBoxMenu/
 * http://codingforums.com/showthread.php?t=194297
 * http://stackoverflow.com/questions/3688504/sliding-div-to-auto-height
 * http://stackoverflow.com/questions/1465203/div-height-based-on-content
 * http://stackoverflow.com/questions/1443465/jquery-dynamic-div-height
 * http://articles.tutorboy.com/jquery/mouseover-auto-scroller-menu-using-jquery-and-css.html
 * http://www.wordimpressed.com/coding/jflow-plus-auto-slide-examples-demo-and-tips/
 * http://www.dlocc.com/articles/jflow-slider-auto-slider-with-pause-functionality/
 * http://www.gcmingati.net/wordpress/wp-content/lab/jquery/svwt/index.html
 * http://4coder.info/en/jquery-ulslide-2/
 * http://css-tricks.com/creating-a-slick-auto-playing-featured-content-slider/

DOM

 * http://www.howtocreate.co.uk/tutorials/javascript/dombasics

xhr

 * http://snipplr.com/view/4021/read-local-file-with-xmlhttprequest/
 * https://developer.mozilla.org/en/using_xmlhttprequest

Includes
&lt;script type="text/javascript"&gt; // Function to allow one JavaScript file to be included by another. // Copyright (C) 2006-08 www.cryer.co.uk   function IncludeJavaScript(jsFile) {     document.write(''); } &lt;/script&gt;
 * http://www.cryer.co.uk/resources/javascript/script17_include_js_from_js.htm

and then to include a second JavaScript file simply add the line:

Mouse Clicking
mousedown
 * http://www.quirksmode.org/dom/events/click.html
 * Fires when the user depresses the mouse button.

mouseup
 * Fires when the user releases the mouse button.

click
 * Fires when a mousedown and mouseup event occur on the same element.
 * Fires when the user activates the element that has the keyboard focus (usually by pressing Enter or the space bar).

dblclick
 * Fires when two mouse click events occur on the same element within a reasonable time.

Dragging
// global variables used while dragging var offsetX = 0 var offsetY = 0 var selectedObj var frontObj // set document-level event handlers document.onmousedown = engage document.onmouseup = release // positioning an object at a specific pixel coordinate function shiftTo(obj, x, y) { obj.style.pixelLeft = x   obj.style.pixelTop = y } // setting the z-order of an object function bringToFront(obj) { if (frontObj) { frontObj.style.zIndex = 0 }   frontObj = obj frontObj.style.zIndex = 1 } // set global var to a reference to dragged element function setSelectedObj { var imgObj = window.event.srcElement if (imgObj.id.indexOf("map") == 2) { selectedObj = imgObj bringToFront(selectedObj) return }   selectedObj = null return } // do the dragging (called repeatedly by onMouseMove) function dragIt { if (selectedObj) { shiftTo(selectedObj, (event.clientX - offsetX), (event.clientY - offsetY)) return false } } // set global vars and turn on mousemove trapping (called by onMouseDown) function engage { setSelectedObj if (selectedObj) { document.onmousemove = dragIt offsetX = window.event.offsetX - document.body.scrollLeft offsetY = window.event.offsetY - document.body.scrollTop } } // restore everything as before (called by onMouseUp) function release { if (selectedObj) { document.onmousemove = null selectedObj = null } }
 * http://www.java2s.com/Code/JavaScript/Event/DraggingElementswithonMouseMove.htm

API
target.addEventListener(type, listener, useCapture); var el = document.getElementById("t"); el.addEventListener("click", modifyText, false); There is no current IE version supporting addEventListener which is a method defined in the W3C DOM Level 2 Events module which IE doesn't support. IE 5.5 and IE 6 on Windows support el.attachEvent('onclick', l_func)
 * https://developer.mozilla.org/en/DOM/element.addEventListener
 * http://bytes.com/topic/javascript/answers/147027-addeventlistener-function-ie

Drawing

 * http://processing.org/learning/
 * http://ejohn.org/blog/processingjs/
 * http://ejohn.org/blog/processingjs/#postcomment
 * http://raphaeljs.com/curver.html
 * https://developer.mozilla.org/En/Drawing_Graphics_with_Canvas
 * http://billmill.org/static/canvastutorial/color.html

Mouse Position

 * http://evolt.org/node/23335/
 * http://www.quirksmode.org/js/findpos.html

General

 * http://www.javascriptkit.com/javatutors/navigator.shtml
 * http://www.w3schools.com/jsref/default.asp
 * http://www.w3schools.com/dom/dom_nodes_remove.asp
 * http://www.javascriptkit.com/dhtmltutors/domattribute.shtml
 * http://www.howtocreate.co.uk/tutorials/javascript/dombasics
 * http://www.howtocreate.co.uk/tutorials/javascript/domstructure
 * http://www.w3schools.com/jsref/dom_obj_all.asp

Browser Detection

 * http://www.quirksmode.org/js/detect.html
 * http://www.jibbering.com/faq/notes/detect-browser/
 * http://www.webcredible.co.uk/user-friendly-resources/css/hacks-browser-detection.shtml

Testing

 * http://ajaxian.com/archives/testing-ie-versions-just-got-a-little-easier

Drawing

 * http://www.redips.net/javascript/drawing/

Modules
module = function{ var count = 0; // Private Variable for the module. Not accessible from outside var increaseCount = function{ // Private function. Not accessible from outside count++; };   return { init : function{ // Privileged method. Can be called from outside // Here comes the initialisation code },       getCount : function{ // Privileged method. Can be called from outside return count; },       checkCount : function{ increaseCount; if (this.getCount > 10) alert("count is greater than 10"); }   } };
 * http://www.sencha.com/learn/Manual:Basic_Application_Design

Defaults
var myAdding = function(o) { o.one = (typeof o.one == 'undefined') ? 0 : o.one; o.two = (typeof o.two == 'undefined') ? 0 : o.two; o.three = (typeof o.three == 'undefined') ? 0     : o.three; return o.one + o.two + o.three; };
 * http://www.cherny.com/webdev/60/javascript-function-arguments-default-values-passing-objects-and-overloading
 * http://parentnode.org/javascript/default-arguments-in-javascript-functions/

Exceptions

 * http://www.w3schools.com/js/js_throw.asp

Quirksmode
// var msg = evt.type + ", " + evt.target + ", " + evt.target.areaId + ", " + evt.srcElement + ", " + evt.toString; var msg = ""; for (var p in evt) { msg += ", " + p + ":" + evt[p]; }           // alert(msg); var target = evt.currentTarget; msg = ""; for (var t in target) { msg += t + ":" + target[t] + ", "; } var Dom = { get: function(el) { if (typeof el === 'string') { return document.getElementById(el); } else { return el; } },  add: function(el, dest) { var el = this.get(el); var dest = this.get(dest); dest.appendChild(el); }, remove: function(el) { var el = this.get(el); el.parentNode.removeChild(el); } };  var Event = { add: function { if (window.addEventListener) { return function(el, type, fn) { Dom.get(el).addEventListener(type, fn, false); };   } else if (window.attachEvent) { return function(el, type, fn) { var f = function { fn.call(Dom.get(el), window.event); };       Dom.get(el).attachEvent('on' + type, f); };   }  } };
 * http://www.quirksmode.org/dom/innerhtml.html
 * http://www.quirksmode.org/js/events_mouse.html
 * http://www.quirksmode.org/js/events_properties.html
 * http://www.javascriptkit.com/javatutors/dom.shtml
 * http://www.dustindiaz.com/add-remove-elements-reprise/

Books

 * http://www.amazon.com/Professional-JavaScript-Developers-Wrox-Programmer/dp/047022780X

Tools

 * http://ejohn.org/blog/deep-tracing-of-internet-explorer/

Frameworks

 * http://mochi.github.com/mochikit/demos.html
 * http://jquery.com
 * http://jqueryui.com
 * http://docs.jquery.com/Frequently_Asked_Questions
 * http://developer.yahoo.com/yui/3/
 * http://www.twinhelix.com/javascript/dragresize/demo/
 * http://www.fotonotes.net/
 * http://www.prototypejs.org/api/string/evalJSON
 * http://www.html.it/articoli/niftycube/index.html
 * http://www.html.it/articoli/niftycube/nifty1.html
 * http://wijmo.com/