{{Infobox_Software
| name = MooTools
| logo = [[Image:MooTools-Logo.png]]
| screenshot = [[Image:MooTools-Class-Screenshot.png]]
| caption = A screenshot of Class.js, MooTool's [[Class (computer science)]] implementation.
| author = Valerio Proietti
| developer = [http://mootools.net/ The Production Team.]
| latest_release_version = 1.2.0
| latest_release_date = [[2007-09-30]]
| genre = [[Ajax framework|JavaScript Framework|JavaScript]]
| license = [[MIT License]]
| website = [http://mootools.net/ mootools.net]
}}
'''MooTools''' is an open source, compact, and modular [[object-oriented|object-oriented programming]] JavaScript [[web application framework]] that is made by developers for developers. MooTools makes the process of writing extensible and cross-browser compatible code more efficient, concise and fun.
== Benefits ==
With MooTools, the developer has the advantage of using:
* An extensible and modular framework that helps give developers discretion (choice) over the number of components to use.
* An extensible and modular framework, where the developer can hand-pick (specifically choose) the preferred components to use.
* MooTools follows object-oriented practices and the DRY principle, which makes the framework rich, powerful and efficient.
* An advanced Effects component, with optimised Transitions such as Easing Equations used by many Flash developers.
* A framework that is developed for developers.
== Components ==
MooTools includes many components that enrich and benefit the developer's coding experience
* '''Core''': a collection of utility functions that all the other components require.
* '''Class''' is MooTools base library for Class object instantiation.
* '''Natives''': a collection of [[JavaScript]] Native Object enhancements. The Natives add functionality, compatibility and new methods that simplify coding.
* '''Element''' is a slew of enhancements and compatibility to the [[HTML Element]] object.
* '''Effects''' is an advanced effects API to animate Elements.
* '''Remote''': provides [[XHR]] interface, Cookie, and [[JSON]] tools for developers to exploit.
* '''Window''': provides a cross-browser interface to the Client specific information, for instance window size.
== Browser Compatibility ==
MooTools is compatible and tested with:
* [[Safari|Safari (web browser)]] 2 and 3
* [[Internet Explorer]] 6 and 7
* [[Firefox|Mozilla Firefox]] 1.5+, 2.0+, and 3.0+
* [[Opera|Opera (Internet suite)]] 9.0+
* [[Camino]] 1.5+
== Object-oriented programming ==
MooTools contains a robust Class creation and inheritance system that resembles most [[Object-oriented programming language]]s. For example, the following is a MooTools' equivalent of the example in the [[Polymorphism in object-oriented programming|polymorphism]] Wikipedia page:
var Animal = new Class({
initialize: function(name){
this.name = name;
}
});
var Cat = new Class({
Extends: Animal,
talk: function(){
return 'Meow!';
}
});
var Dog = new Class({
Extends: Animal:
talk: function(){
return 'Arf! Arf';
}
});
var Animals = {
a: new Cat('Missy'),
b: new Cat('Mr. Bojangles'),
c: new Dog('Lassie')
};
for(var animal in Animals) alert(animal.name + ': ' + animal.talk());
// alerts the following:
//
// Missy: Meow!
// Mr. Bojangles: Meow!
// Lassie: Arf! Arf!
== Related ==
* [[Moo.fx]]
== See also ==
* [[Ajax framework]]
* [[Rich Internet application]]
* [[Single page application]]
* [[Web 2.0]]
* [[XMLHttpRequest]]
== External links ==
* [http://www.mootools.net mootools.net]
* [http://clientside.cnet.com/wiki/mootorial/ Mootools Tutorial]
[[Category:JavaScript libraries]]
{{compu-prog-stub}}