Can someone please explain this code to me:

Why does the funtion call below take in two arguments:

type = Spry.Widget.Utils.firstValid(type, "none");

While it was defined without any argument:

Spry.Widget.Utils.firstValid = function() {
var ret = null;
for(var i=0; i<Spry.Widget.Utils.firstValid.arguments.length; i++) {
if (typeof(Spry.Widget.Utils.firstValid.arguments[i]) != 'undefined') {
ret = Spry.Widget.Utils.firstValid.arguments[i];
break;
}
}
return ret;
};

Any help and thought wellcomed.

Thanks.