First up, this document is quite handy and would help answer most of your questions:
http://help.adobe.com/en_US/livecycle/es/LiveCycle_Designer_Scripting_Basics.pdf"presence" is a property, not a function, so you need to do the following:
yourSubFormName.presence = "hidden";
yourSubFormName.presence = "visible";
You can change to title case but will need to find or write a JavaScript function to do this. Call this function from the Exit event of the field, ensuring that the language selected is JavaScript. To add a script, right click on the subform or main form and select Insert Script Object. Give that script block a name (such as "stringFunctions", then add the following to it:
function toTitleCase(inStr) {
var str = "";
var wrds = inStr.split(" ");
var wrdsLen = wrds.length;
for (var i=0; i < wrdsLen; i++) {
str = str + " " + wrds[i].substr(0,1).toUpperCase() + wrds[i].substr(1,wrds[i].length);
}
return str;
}
In the field you are interested in, select the Exit event, ensure the language is JavaScript and type the following:
this.rawValue = stringFunctions.toTitleCase(this.rawValue);
When you exit the field, the sentance will be title case. You will obviously have to extend the toTitleCase script to be cleverer if you are dealing with people's names (e.g. McKay, Van de Linden, etc).
Adobe provided a great script that locks down the document - see page 422 of
http://help.adobe.com/en_US/livecycle/es/lcdesigner_scripting_reference.pdf (title is called "Getting the fields from each page". You should put this in the "docReady" event on your root form (defaults to "form1"). You should extend your form so that a hidden field stores the required state (locked or open) and this is updated before the form is e-mailed. You should then extend the lockdown script to only execute if that field's value is set to locked.
You can definitely do everything you've described with LiveCycle.
Have a look at the documents and see how you go.
John.