I am only going to discuss options 1 and 2 because I see little need to use Prototype library if you have bought into the Atlas solution. I am a ASP.NET developer I prefer the ATLAS solution as it is more server orienated. The Namespaces and classes are actually a small part of the whole solution. With ATLAS one first registers a name space then defines and register a class as my example for worker.InputHandler shows:
Type.registerNamespace("Worker");
Worker.InputHandler = function()
{
var today = new Date();
var datestring = today.getDate() + '-' + GetMonthName(false,today.getMonth()) ;
this.Drop1 = document.getElementById("DropDownList1");
this.Drop1Changed = function()
{
var j=0;
for (var i=0;i < this.Drop1.options.length;i++)
{
if (this.Drop1.selectedIndex != i)
this.Drop2.options[j++] = new Option(this.Drop1.options[i].text,"test");
}
}
}
Worker.InputHandler.registerClass(Worker.InputHandler , null, Sys.IDisposable);var $InputHandler = new Worker.InputHandler();
onchange="$InputHandler.Drop1Changed()
The prototype property can be used to simulate an object style as
it allows you to add custom properties or functions to objects
so we can add the Drop1Changed method to our InputHandler as follows:
function InputHandler()
{
var today = new Date();
var datestring = today.getDate() + '-' + today.getFullYear();
document.getElementById("date").innerText = datestring;
this.root = null; //Load the XML file passed in the hidden field
var XML = document.getElementById("ScoresXml").value;
this.Drop1 = document.getElementById("DropDownList1");
prototype.Drop1Changed = function()
{
var j=0;
for (var i=0;i < this.Drop1.options.length;i++)
{
if (this.Drop1.selectedIndex != i)
this.Drop2.options[j++] = new Option(this.Drop1.options[i].text,this.Drop1.options[i].value);
}
}
}$InputHandler = new InputHandler();