I was there a few weeks ago. No need to apply for visa in advance if less than 30 days and not for business – though business meetings are allowed under the 30 day visa. If you send off for a visa in advance you’re looking at surrendering your passport for the best part of a week or so. You purchase at a kiosk next to passport control – there is an ATM just next to the kiosk as they only take cash. It costs US$35 or the equivalent in Indonesian Rhupia – about IDR 465,000.
Also if you’re jumping into a taxi from the airport and heading into Jakarta you will need some coinage for the toll roads – the taxi drivers don’t seem to cover than in their charge – and although the taxi’s are supposed to accept credit cards, in my experience they don’t or their machines hardly ever work – though if you are going straight to a hotel often you can get your hotel to pay and add it onto your room bill, which is what I do as it is more conveneint for claiming expenses – though probably wise to check with your hotel in advance that they are happy to do this.
EDIT – no need for a passport photo for the visa.