Something silly like this will suffice.

on *:dialog:bla:sclick:*:{
if (($did == 667) && (!$did($dname,666).sel)) {
didtok $dname 666 255 $did($dname,666).text
}
if (($did == 668) && ($did($dname,666).sel)) {
did -d $dname 666 $did($dname,666).sel
}
}

On *:dialog:bla:init:*:{
tokenize 255 %_store
var %i = $0
while (%i) {
didtok $dname 666 255 $($+($,%i),2)
dec %i
}
}
On *:dialog:bla:close:*:{
tokenize 255 $didtok($dname,666,255)
if ($0 >= 1) {
unset %_store
var %i = $0
while (%i) { set %_store $addtok(%_store,$($+($,%i),2),255) | dec %i }
}
}

Eamonn.