var settings = $.extend({
dragable: true,
clickable: true,
ontext: 'ON',
offtext: 'OFF',
on: true,
animtime: 300
}, opts);
The $.extend method still returns a suitable object even if `opts` is undefined.You also might want to `return this.each` so calls can be chained.
All of this is covered here: http://docs.jquery.com/Plugins/Authoring
One thing - I know the intent is that they can be easily customized, but it might be nice to have smaller options out of the box. I think I've been spoiled by Twitter Bootstrap, though, where they have a few preset sizes. My first thought was that they looked a little large.
Check it out here: http://taitems.github.com/UX-Lab/ToggleSwitch/index.html
I also investigated achieving something similar using only CSS base on a :checkbox, but the browser support, even in "modern" browsers was poor: http://taitems.github.com/UX-Lab/CSSInputs/index.html
Thoughts and hacks on the above, here: http://taitems.tumblr.com/post/23099016111/css3-input-stylin...