文字列から曜日を返す

function getDay(s) {
    return ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][new Date(Date.UTC.apply(this,s.match(/(\d{4})?[^\d]*(\d{1,2})[^\d]*(\d{1,2})/).slice(1).map(function(e,i){switch(i){case 0:return e?e:(new Date()).getFullYear();case 1:return e-1;default:return e}}))).getDay()];
}

/*
getDay("2010/10/15") // Fri
getDay("2010年/10/16") // Sat 
getDay("10/17") //Sun **2010年に実行した場合
getDay("2010/9/1") // Wed
getDay("121") // 12月1日と解釈されてWedを返す.こういう場合1201 や 0121のように4桁で書くよね?
*/

1行で見にくい.
最後の例のように少し穴があるように思われる.
Firefox 3.6 + Firefbug 1.5.4 で動作確認

以下コードの解説

function getDay(s) {
    return ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][new Date(
        Date.UTC.apply( // 配列を Date.UTC に渡すため apply, Date.UTC は1970/01/01 00:00:00 (UTC)からの秒数(ミリ秒単位)
            this,
            s.match(/(\d{4})?[^\d]*(\d{1,2})[^\d]*(\d{1,2})/) //正規表現が甘い
             .slice(1) // 元の文字列が配列の一つ目に入っているため2つ目以降を使う 
             .map(function(e,i){ 
                switch(i){ // 配列のインデックスごとに処理
                    case 0: // year
                        return e ? e: (new Date()).getFullYear(); // 年の指定が無い場合は今年
                    case 1: // month
                        return e-1; // Date.UTCの月は 0-11 で指定するため
                    default: // date
                        return e
                }
             })
         )
    ).getDay()]; // getDayメソッドは 0-6 を返す
}