First, I think what might have worked is :
Code:
for (var x in threads)
{
document.writeln("<a onmouseover=\"Tip(threads[x].threaddate)\" onmouseout=\"UnTip()\" href=\"showthread.php?t="+threads[x].threadid+"\">"+threads[x].title+"</a> <span class=\"time\">($vbphrase[posted_by]: "+threads[x].poster+")</span><br />");
}
with no quotes (although I'm not sure without trying it). It's complicated, you have HTML with javascript that writes out HTML with a javascript call in it. But at some point it's just a string you're trying to send to the browser, and in this case I don't think you need any quotes or anything.
As for preview, you're right, it's not a database field. If you look in forumdisplay you'll see that it starts out as the pagetext field, because there's:
Code:
if ($vbulletin->options['threadpreview'] > 0)
{
$previewfield = "post.pagetext AS preview,";
which gets included in the query and puts the pagetext field (the entire text for the post) in the trhead array as preview. Then later the query results are retrieved one at a time as a $thread array, and the function "process_thread_array" is called to do more processing on it (that's in includes/functions_forumdisplay.php). So if you look at that you'll see how it further processes the preview.
Don't worry, you're obviously trying to figure stuff out yourself, and anyway I try to answer the questions I'm interested in and I don't care if someone *is* being a "leech". I've been a programmer for many years but until last Aug. I didn't know any php and I had never heard of vbulletin. So really I'm not that far ahead, but I guess I've had the luxury of a lot of time to look at it over the past months. But I guess I'll pretty much be starting all over with version 4.0.