Here is what I have so far, as I said it's a work in progress. Haven't checked compile yet....
// when clothing prim is touched, present a dialog with choices
integer CHANNEL = 42; // dialog channel
list MENU_MAIN = ["Ruffle", "Tug On", "Rip Off"];
default {
state_entry()
{
llListen(CHANNEL, "", NULL_KEY, ""

;
}
touch_start(integer total_number)
{
llDialog(llDetectedKey(0), "What do you want to do?", MENU_MAIN, CHANNEL);
}
listen(integer channel, string name, key id, string message)
{
string response_string;
if (llListFindList(MENU_MAIN, [message]) != -1)
{
//llSay(0, name + " has chosen to '" + message + " your prim " +"'."

;
response_string = name + " has chosen to '" + message + " your prim " +"'.";
if (message == "Ruffle"

{
//llSay(0, "ruffled your prim"

;
response_string = name + " has chosen to '" + message + " your prim " +"'.";
response_string = response_string + "Click prim for dialog of options";
else if (message == "Tug On"

{
//llSay(0, "tug'd on your prim"

;
response_string = name + " has chosen to '" + message + " your prim " +"'.";
response_string = response_string + "Click prim for dialog of options";
else if (message == "Rip Off"

{
//llSay(0, "violently ripped off your prim"

;
response_string = name + " has chosen to '" + message + " your prim " +"'.";
response_string = //Detach;
}
}
else
{
//llSay(0, name + " picked invalid option '" + llToLower(message) + "'."

;
response_string = name + " picked invalid option '" + llToLower(message) + "'.\n";
response_string = response_string + "Click prim for dialog of options";
}
llSetText(response_string, <1,0,0>, 1.0);
}
}