The var up and down you have defined inside ArrowDir are not accessible outside the scope of that function.
The simplest way you could fix this, if this is a one-time kind of function, is just to put the up/down behavior in your jQuery function, like this:
$(function () {
    if($("#toggle").onclick){
        $("#arrow").attr('src','up_arrow.jpg');
    } else {
        $("#arrow").attr('src','down_arrow.jpg');
    }
});
If you just want to namespace these functions for reusability you could make an object literal instead:
ArrowDir = {
  up: function(){
    $("#arrow").attr('src','up_arrow.jpg');
  },
  down: function(){
    $("#arrow").attr('src','down_arrow.jpg');
  }
};
Then you can call: ArrowDir.up() or ArrowDir.down() elsewhere.
For what it's worth, if your goal is just to namespace these functions for reusability, I would say the object literal syntax makes more sense to me.
Or, if you really want to do it as a function call, as Kolink has pointed out, the up/down functions need to be in the return value. You could write that like this...
function ArrowDir() {
  var up = function(){
    $("#arrow").attr('src','up_arrow.jpg');
  }
  var down = function(){
    $("#arrow").attr('src','down_arrow.jpg');
  }
  return {up:up,down:down};
}
Or like this...
function ArrowDir() {
  return {
    up: function(){
      $("#arrow").attr('src','up_arrow.jpg');
    },
    down: function(){
      $("#arrow").attr('src','down_arrow.jpg');
    }
  };
}
Now calling ArrowDir().down() should work.