1.
function test() {
   if(arguments.callee.clicked) return;
   arguments.callee.clicked = true;
   //code...
}
2.
var flag;
function test() {
   if(flag) return;
   flag = true;
   //code...
}
Ну а когда нужно, то просто менять значение на false, чтобы ф-цию можно было снова запустить.