//https://twitter.com/oauth/authenticate?oauth_token=quMKIYxCdVsNo27bSuTruEC8RsZbF5ujp6LjDupGuxI

var glbGrps = "";
var glbT = "";  // temporary area
var glbH = "";  // HTML string
var glbSav = "";  // save
var glbTwitTyp = "";
var glbTwitHdr = "";
var glbTwitPrm = "";
var glbBypass = 0;  // prevents certain processes from refreshing screen
var glbCht = "";
var glbMsg = "";
var glbReq = "";
var glbInp = "";
var glbParams = "";
var glbDest = "";
var glbKeyID = 0;
var glbSID = "";
var glbPID = "";
var glbUsrClr = "";
var glbPaging = 0;  // paging chat by 20's
var glbaG = new Array(99);  // Groupnames
var H = new Array(10); // Information text
var glbGroup = "";
var glbJoinGrp = "";
var glbTimerID = 999;
var gtxtCols = "30";   //  'textarea'
var gtblWidth = "240"; // 'chatbox'
var glbNewNam = "";  // Create new private group
var glbNewPsw = "";
var glbJoinNam = "";  // Join private group
var glbJoinPsw = "";
var glbBuzzOFF = "0";
// define the videoPlay string once then include the 11-code (twice)
var videoPlay1 = '<object width="240" height="320"><param name="movie" value="http://www.youtube.com/v/';
var videoPlay2 = '?f=videos&app=youtube_gdata" "&autoplay=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/';
var videoPlay3 = '?f=videos&app=youtube_gdata" "&autoplay=1" type="application/x-shockwave-flash" wmode="transparent" width="240" height="320"></embed></object><br />&#160;<i>Click above for comments or enlargement</i><br />';

document.write('<fieldset style="width:240px;">');
document.write('<div id="logo"> C H A T c h a t ');
document.write('<img id="gif" style="display:inline; visibility:hidden;" src="busy.gif"></div><br />');
document.write('<span style="color:#CC0000; font-size:11px; font-weight:bold;">');
document.write('&#160;create your own Private Chat rooms</span><br /><br />');
document.write('<div style="display:inline;" id="logregFrm"></div>');
document.write('<div style="display:inline;" id="logmsg"></div>');
document.write('<div style="display:inline;" id="regmsg"></div>');
document.write('<div style="display:inline;" id="passFrm"></div>');
document.write('<div style="display:inline;" id="passmsg"></div>');
document.write('<div style="display:inline;" id="message"></div>');
document.write('<div style="display:inline;" id="text"></div>');
document.write('<div style="display:inline;" id="footer">');
document.write('&#160;<a href="javascript:loginFN()">Login/Anonymous</a>');
document.write('&#160;&#160;<a href="javascript:registerFN()">Register</a>');
document.write('&#160;&#160;<a href="javascript:lostPassFN()">Password</a><br /></div>');
//document.write('&copy; Qviews 2009<br /><br /></div>');

document.write('<form name="chatForm"><div id="fixed"></div><div id="chatbox"></div>');
document.write('<div id="chatmsg"></div></form></fieldset>');

var H1;
H1 = '&#160;&#160;<a style="text-decoration:none;" href="javascript:chatPrev(1)">';
H1 += '<span style="font-size:15px;" title="Previous page">&lt;</span></a>';
H1 += '&#160;&#160;<a style="text-decoration:none;" href="javascript:chatPrev(-1)">';
H1 += '<span style="font-size:15px;" title="Next page">&gt;</span></a>';

var H3 = '<select name="choices" style="font-family:Arial; color:#FFFF99; background-color:#000000; font-size:12px; font-weight:bold;" onchange="javascript:choiceFN(this.options[this.selectedIndex].value)">';
H3 += ' <option value="">INFORMATION:</option>';
H3 += ' <option value="ianon">Anonymous Access</option>';
H3 += ' <option value="ibrowser">Browser Quirks</option>';
H3 += ' <option value="ibuzz">BUZZ!</option>';
H3 += ' <option value="iFAQ">FAQ / Help</option>';
H3 += ' <option value="ipaging">Message Paging</option>';
H3 += ' <option value="iaccount">My Account</option>';
H3 += ' <option value="ioverview">Overview</option>';
H3 += ' <option value="iprivcreate">Private - Create</option>';
H3 += ' <option value="iprivjoin">Private - Join</option>';
H3 += ' <option value="iprimembers">Private - Members</option>';
H3 += ' <option value="iprivmsg">Private - Messages</option>';
H3 += ' <option value="ipublicjoin">Public Groups</option>';
H3 += ' <option value="itwit">Twitter</option>';
H3 += ' <option value="iwidget">Widget CHATchat</option>';
H3 += '</select><br />';
var H5;
function choiceFN(c) {
	if (c != "iprivcreate" && c != "iprivjoin" || glbSID!='anonymous') {
		clearTimeout(glbTimerID);  // stop the timer
		glbT = (c == "iprimembers")? c+'.php?s='+glbPID : c+'.php' ;
		getxmlhttp(glbT);  // .html has caching problems
		document.chatForm.chatin.value = "";
	} else {
		document.chatForm.chatin.value = "This function is not available to Anonymous members";
	}
}
function getxmlhttp(dest) {
	glbDest = dest;
	glbBypass = 1;
	document.getElementById("chatmsg").innerHTML = "";
    xmlhttp.onreadystatechange = getxmlhttp2;
    xmlhttp.open("GET", dest);
    xmlhttp.send(null);
}	
	
function getxmlhttpB(dest) {	
	glbBypass = 1;
	glbParams = 's=' + glbPID; 
	xmlhttp.onreadystatechange = getxmlhttp2;
	xmlhttp.open("POST", dest, true);
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
	xmlhttp.send(glbParams);
}
function getxmlhttp2() {
    if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
//alert(xmlhttp.responseText);
		document.getElementById("chatbox").innerHTML = xmlhttp.responseText;
		if (glbDest == 'itwit.php') glbTwitHdr = xmlhttp.responseText;
		if (glbDest == 'iprivjoin.php' && glbJoinGrp != '') { document.chatForm.JoinNam.value = glbJoinGrp; glbJoinGrp = ''; }
	}
}

function loginFN() {
	document.getElementById('intro').innerHTML = '';
	document.getElementById('regmsg').innerHTML = '';
	document.getElementById('passmsg').innerHTML = '';
	document.getElementById('passFrm').innerHTML = '';
	document.getElementById("logregFrm").innerHTML = '<form method="post" name="loginForm"><table width="230" border="1" cellspacing="0"><tr><td align="center"><table border="0" cellspacing="4" bgcolor="#FFFF99"><tr><td colspan="2" align="center"><b>Please Log In: <br /></b></td></tr><tr><td align="right">Username: </td><td><input type="text" name="usr" value="" size="15"></td></tr><tr><td align="right">Password: </td><td><input type="password" name="pwd" value="" size="15" onkeypress="keyLogin(event)"></td></tr><tr><td align="right">Anonymous: </td><td><input type="button" name="submet" value=" Login " onclick="login2(1)"></td></tr></table></td></tr></table></form>';
	document.loginForm.usr.focus(); 
} // submits loginForm to login2(1) ...logmsg ...lostpass
function registerFN() {
	document.getElementById('logmsg').innerHTML = '';
	document.getElementById('passmsg').innerHTML = '';
	document.getElementById('passFrm').innerHTML = '';
	document.getElementById("logregFrm").innerHTML = '<form method="post" action="" name="regForm"><table width="230" border="1" cellspacing="0"><tr><td align="center"><table width="230" border="0" cellspacing="0" bgcolor="#EAFFCC"><tr><td colspan="2" align="center"><b>Please Register: <br /></b></td></tr><tr><td align="right">Username:&#160;&#160;</td><td><input type="text" name="usr" value="" size="18" maxlength="20"></td></tr><tr><td align="right">Password:&#160;&#160;</td><td><input type="password" name="pwd" value="" size="18" maxlength="20"></td></tr><tr><td align="right">*Optional*&#160;&#160;&#160;<br />Email:&#160;&#160;&#160;&#160;</td><td><input type="text" style="font-size:11px;" name="ema" value="for password recovery" size="24"></td></tr><tr><td colspan="2" align="center"><input type="button" name="submet" value="Register" onclick="login2(2)"></td></tr></table></td></tr></table></form>';
	document.regForm.usr.focus();  // IE8 ??
}
function lostPassFN() {
	document.getElementById('logmsg').innerHTML = '';
	document.getElementById('regmsg').innerHTML = '';
	document.getElementById('passFrm').innerHTML = '<form method="post" action="" name="passForm"><table width="230" border="1" cellspacing="0"><tr><td align="center"><table width="230" border="0" cellspacing="0" bgcolor="#EEEEEE"><tr><td align="right">&#160;Email: </td><td><input type="text" name="ema" size="19" value="" >&#160;</td></tr><tr><td colspan="2" align="center"><input type="button" name="submit" value="Retrieve Lost Password" onclick="login2(3)"></td></tr></table></td></tr></table></form>';
	document.passForm.ema.focus();
}
function login2(t) {
	document.getElementById('gif').style.visibility = "visible";
	if (t == 1) {
		document.getElementById('logmsg').innerHTML = 'Checking...';
		glbSID = (document.loginForm.usr.value == "")? "anonymous" : escape(document.loginForm.usr.value);
		glbPID = (document.loginForm.pwd.value == "")? "anonymous" : escape(document.loginForm.pwd.value);
		glbParams = 't=1&s=' + glbSID + '&p=' + glbPID;
	}
	if (t == 2) {
		document.getElementById('regmsg').innerHTML = 'Checking...';
		glbSID = '';
		var s = escape(document.regForm.usr.value);
		var p = escape(document.regForm.pwd.value);
		var e = escape(document.regForm.ema.value);
		glbParams = 't=2&s=' + s + '&p=' + p + '&e=' + e;
	}
	if (t == 3) {
		document.getElementById('passmsg').innerHTML = 'Checking...';
		glbParams = 't=3&s=&p=&e=' + escape(document.passForm.ema.value);
	}
    glbDest = 'getlogin.php';
    try { xmlhttp = window.XMLHttpRequest? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) { alert('browser doesn\'t support ajax'); }
	if (t == 1) xmlhttp.onreadystatechange = login3a;
	if (t == 2) xmlhttp.onreadystatechange = login3b;
	if (t == 3) xmlhttp.onreadystatechange = login3c;
    xmlhttp.open("POST", glbDest, true);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    xmlhttp.send(glbParams);
}
function login3a() {
	if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
		document.getElementById('gif').style.visibility = "hidden";
		if (xmlhttp.responseText.length != 6) { // bizarre, returns "Oops\n\n"
			glbUsrClr = xmlhttp.responseText.substr(0,13);
			glbT      = xmlhttp.responseText.substr(13,99999);
			document.getElementById('colors').innerHTML = '&#160;Available colours... click to refresh your colour<br />'+glbT;
			document.getElementById('logregFrm').innerHTML = '';
			document.getElementById('logmsg').innerHTML = '';
			document.getElementById('passFrm').innerHTML = '';
			document.getElementById('passmsg').innerHTML = '';
			document.getElementById('footer').innerHTML = '';
			glbInp = "Please select a colour from below, or a chat group from the list above (Public?), or check the INFORMATION drop-down list";
			chat0();  // get member's groups and counts
			
			var r = window.location.href.split('=');
			glbJoinGrp = (r.length == 1)? "" : r[1];
			if (glbJoinGrp == 'discpool') getxmlhttp('iprivjoin.php');
		} else { 
			document.getElementById('logmsg').innerHTML = '&#160;&#160;Please check your entries<br />';
		}
	}
}
function login3b() {
	if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
		document.getElementById('gif').style.visibility = "hidden";
		document.getElementById('regmsg').innerHTML = xmlhttp.responseText;
	}
}
function login3c() {
	if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
		document.getElementById('gif').style.visibility = "hidden";
		if (xmlhttp.responseText.substr(0,4) == "Oops") {	// hmm... includes 2 line-feeds		
			document.getElementById('passmsg').innerHTML = '&#160;&#160;Sorry, email address is unknown<br />';
		} else {
			document.getElementById('passmsg').innerHTML = '&#160;&#160;Please check your email inbox<br />';
		}
	}
}
function keyLogin(e) {
	glbKeyID = (window.event) ? event.keyCode : e.keyCode;
	if ( glbKeyID == "13" ) { login2(1); }
}
function usrClrFN(bg,fg) {
	glbUsrClr = bg+" "+fg;
    glbDest = 'setclr.php';
    glbParams = 's=' + glbPID + '&b=' + bg + '&f=' + fg;
    xmlhttp.onreadystatechange = usrClrFN2;
    xmlhttp.open("POST", glbDest, true);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    xmlhttp.send(glbParams);
}
function usrClrFN2() {
}
function chat0(mdy) { // logged in, now build group links
    glbDest = 'msgcounts.php';
    glbParams = 's=' + glbPID + '&g=';
    xmlhttp.onreadystatechange = chat02;
    xmlhttp.open("POST", glbDest, true);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    xmlhttp.send(glbParams);
}
function chat02() {
    if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
		glbaG = xmlhttp.responseText.split("~");
		glbGrps = "";
		for (var j=1; j<glbaG.length-1; j=j+2) {
			glbT = (glbaG[j+1] == 0)? '' : '<span style=\'font-size:16px;\'>'+glbaG[j+1]+'</span>' ;
			glbGrps += '<a href=javascript:refreshLink("'+glbaG[j]+'")>'+glbaG[j]+'</a><sup>'+glbT+'</sup> ';
		}
		document.getElementById('text').innerHTML = '';
		display();
	}
}
function getMsg() {  // either from a groupLink or a current group message or onDblClick
  if ((glbBypass == 0 || glbBypass == 99) && glbGroup != "") {
//if (glbSID == 'a') alert('ok');
	if (document.getElementById('chatmsg').innerHTML != 'OK') {  // see newGrpFN2()
		glbMsg  = document.chatForm.chatin.value;
		if (glbMsg.substr(0,26) == "Please select a chat group") glbMsg = "";
	}
	glbDest = 'msgcounts.php';
	glbT = (glbBypass == 99)? "zapUnread" : glbMsg ;
	glbParams = 's=' + glbPID + '&t=' + glbT + '&g=' + glbGroup + '&b=' + glbBuzzOFF + '&c=' + glbUsrClr;  // + '&n=' + glbSav;
	glbBuzzOFF = "0";
//if (glbSID == 'a') alert(glbParams);	
	xmlhttp.onreadystatechange = getMsg2;
	xmlhttp.open("POST", glbDest, true);
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
	xmlhttp.send(glbParams);
  }
  if (glbGroup == "") {
    document.chatForm.chatin.value='Please select a chat group or click the INFORMATION drop-down list';
  }
}
String.prototype.ReplaceAll = function(stringToFind,stringToReplace){
    var temp = this;
    var index = temp.indexOf(stringToFind);
        while(index != -1){
            temp = temp.replace(stringToFind,stringToReplace);
            index = temp.indexOf(stringToFind);
        }
        return temp;
    } 

function getMsg2() {
    if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
	    glbaG = xmlhttp.responseText.split("~");
//if (glbSID == 'a') alert('getMsg2='+xmlhttp.responseText);
		if (glbaG[2] != "") glbGrps = "";  // don't lose the Groups & counts
		for (var j=2; j<glbaG.length-1; j=j+2) {
			glbT = (glbaG[j+1] == 0)? '' : '<span style=\'font-size:16px;\'>'+glbaG[j+1]+'</span>' ;
			glbGrps += '<a href=javascript:refreshLink("'+glbaG[j]+'")>'+glbaG[j]+'</a><sup>'+glbT+'</sup> ';
		}
	    glbMsg = (glbaG[1].substr(0,18) == "Your private group")? glbaG[1]: glbaG[0];

		glbMsg = glbMsg.ReplaceAll('[[','<a href="');
		glbMsg = glbMsg.ReplaceAll(']]','" target="_blank">link</a>');	
//alert(glbMsg);
		glbT = glbMsg.indexOf('{{');
		while (glbT != -1) {
			var yt11 = glbMsg.substr(2+glbT,11)+'&fmt=18';
			glbMsg = glbMsg.substr(0,glbT) + videoPlay1+yt11+videoPlay2+yt11+videoPlay3 + glbMsg.substr(15+glbT,9999);
			glbT = glbMsg.indexOf('{{');
//alert(glbMsg);
		}
		
		if (glbaG[1] == "1") { 
			if (window.XMLHttpRequest) {
				glbH = '<audio src="/sounds/SOUND136.WAV" autoplay></audio>';  // only Firefox
			} else {
				glbH = '<img src="" dynsrc="/sounds/SOUND136.WAV" start="fileopen">';  // only MSIE
			}
			document.getElementById('footer').innerHTML = glbH;
		}
//if (glbSID == 'a') alert('glbMsg,glbSav='+glbMsg+' @@@ '+glbSav);

	    if (glbMsg != glbSav) { glbInp = ''; display(); }
	}
}
function srchFN() {
alert('searching in '+glbGroup);
}
function tipit(e) {
	var t = document.getElementById('tip');
	t.style.top = 15+e.clientY+'px';
	t.style.left = 15+e.clientX+'px';
	t.style.display = 'inline';
	t.innerHTML = '...';
}
function display() {
	glbSav = glbMsg;  // if messages are scrolled prevent annoying message area refresh ~ doesn't catch re-formatted [[...]] {{...}}
	if (glbMsg != "") glbMsg = "<br />"+glbMsg+"<br /><br />";
	
H5  = '<br /><span style=\"color:#0000CC; font-size:16px; font-weight:bold;\">&#160;'+glbGroup+'</span>';
if (glbInp.substr(0,20) != 'Please select a chat' && glbGroup!= "") {
	H5 += '&#160;&#160;'+H1+'&#160;&#160;<div id=\'ctr2\' style="display:inline;">(250)</div>';
	H5 += '&#160;&#160;<a href="#" onclick="srchFN()">Search<span>Click then enter comma-separated search words below and press \'Enter\'</span></a>';
}
H5 += '<textarea id="msg" name="chatin" rows="3" cols="'+gtxtCols+'" onDblClick="refreshMsg()" ';
H5 += ' style="font-size:12px;" onkeypress="keyChat(event)" onkeyup=';
H5 += '"document.getElementById(\'ctr2\').innerHTML = \'(\'+(250-document.chatForm.chatin.value.length)+\')\';">'
H5 += '</textarea><br />';
H5 += '<span style="color:#CC0000; font-size:10px; font-weight:bold;">';
H5 += '&#160;[Double-click] to REFRESH ~ [Enter] to POST<br />';
//if (glbGroup == "") H5 = "";  // possible if onDblClick

var H6 = '<span style=\"font-size:11px; background-color:#FFFF99;\">'+glbMsg+'</span>'+glbCht;

	document.getElementById('fixed').innerHTML = H3+'<span style="font-size:11px;">'+glbGrps+'</span>'+H5;
	document.getElementById('chatbox').innerHTML = H6;
	document.getElementById('chatmsg').innerHTML = '';
	document.chatForm.chatin.value = glbInp;
	document.chatForm.chatin.focus();  // IE8?
}
function chatPrev(n) {
	glbPaging += n;  // prev. n=1 --- next.n=-1
	if (glbPaging < 0) {
		glbPaging = 0;
	} else {
		clearTimeout(glbTimerID);  // stop timer ~ to restart the timer use dbl-clk, or chat, or wait for auto-refresh
		glbDest = 'paging.php';
		glbParams = 's=' + glbPID + '&g=' + glbGroup + '&p=' + glbPaging;
//alert(glbParams);
		xmlhttp.onreadystatechange = getMsg2;
		xmlhttp.open("POST", glbDest, true);
		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
		xmlhttp.send(glbParams);
	} 
}
function publicFN(pub) {
	glbGroup = pub;
    glbDest   = 'grpz.php';
    glbParams = 's=' + glbPID + '&g=' + pub + '&t=&r=?pubgroups&f=&d=';
    xmlhttp.onreadystatechange = publicFN2; 
    xmlhttp.open("POST", glbDest, true);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    xmlhttp.send(glbParams);
}
function publicFN2() {
    if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
		if (xmlhttp.responseText.substr(0,8) == 'You have') {
			glbGrps += '<a href=javascript:refreshPub("'+glbGroup+'")>'+glbGroup+'</a> ';
		}
		glbInp = '';
		glbMsg = xmlhttp.responseText;
		display();
	}
}
function newGrpFN(pub) {
	glbNewNam = document.chatForm.NewNam.value;
	glbNewPsw = document.chatForm.NewPsw.value;
	if (glbNewNam.indexOf(' ') >= 0 || glbNewPsw.indexOf(' ') >=0) {
		document.getElementById('chatmsg').innerHTML = 'No spaces, please. Try-a-dash';
	} else {
		glbDest   = 'grpz.php';
		glbParams = 's='+escape(glbNewPsw)+'&g='+escape(glbNewNam)+'&r=?cregrp'+'&d='+glbPID;
		document.getElementById('chatmsg').innerHTML = ' Checking...';
		xmlhttp.onreadystatechange = newGrpFN2; 
		xmlhttp.open("POST", glbDest, true);
		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
		xmlhttp.send(glbParams);
	}
}
function newGrpFN2() {
    if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
		document.getElementById('chatmsg').innerHTML = xmlhttp.responseText;
		if (xmlhttp.responseText == 'OK') refreshLink(glbNewNam);
	}
}
function joinGrpFN() {  // called from iprivjoin.php
	glbJoinNam = escape(document.chatForm.JoinNam.value);
	glbJoinPsw = escape(document.chatForm.JoinPsw.value);
    glbDest   = 'grpz.php';
    glbParams = 's=' + glbPID + '&g=' + glbJoinNam + '&r=?joingrp&d=' + glbJoinPsw;
	document.getElementById('chatmsg').innerHTML = ' Checking...';
    xmlhttp.onreadystatechange = joinGrpFN2; 
    xmlhttp.open("POST", glbDest, true);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    xmlhttp.send(glbParams);
}
function joinGrpFN2() {
    if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
		document.getElementById('chatmsg').innerHTML = xmlhttp.responseText;
		if (xmlhttp.responseText == 'OK') refreshLink(glbJoinNam);
	}
}
////////////////////////////////////////////////////////////////////////////////////////////
function twitFN(typ,to) {
	if (typ == 'R') {
glbTwitPrm  = '@<input type="text" name="v1" value="" size="12">&#160;&#160;';
glbTwitPrm += 'Count: <input style="width:20px;" type="text" name="v2" value="8">&#160;&#160;';
glbTwitPrm += '<input type="button" name="subDoIT" value="GO" onclick=twitRFN()><br />';
	}	
	if (typ == 'S') {
glbTwitPrm  = '?<input type="text" name="v1" value="" size="12">&#160;&#160;';
glbTwitPrm += 'Count: <input style="width:20px;" type="text" name="v2" value="8">&#160;&#160;';
glbTwitPrm += '<input type="button" name="subDoIT" value="GO" onclick=twitSFN()><br />';
	}
	if (typ == 'W') {
glbT = (to =='')? '' : '@'+to+'&#160;' ;
glbTwitPrm  = 'Your Twitter account name and password: <input type="text" name="v1" value="" size="12">&#160;&#160;&#160;<input type="password" name="v2" value="" size="12"><br />Your Twitter message:<br /><textarea style="font-size:11px;" name="twitmsg" rows="4" cols="30" onkeyup=javascript:document.getElementById(\'ctr2\').innerHTML=\'(\'+(140-document.chatForm.twitmsg.value.length)+\')\';>'+glbT+'</textarea>&#160;<div id="ctr2" style="display:inline;">(140)</div>&#160;&#160;<a href="javascript:twitWFN(\'+to+\');">Tweet this</a>&#160;&#160;&#160;<div id="twitMsg2" style="display:inline;"></div><br />';

	}
	glbTwitTyp = typ;
	document.getElementById('chatmsg').innerHTML = glbTwitPrm;
}
function twitRFN() {  // read user's time-line
  var USR = document.chatForm.v1.value;
  glbNUM  = document.chatForm.v2.value;
  var queryUrl = 'http://twitter.com/statuses/user_timeline/'+USR+'.json?count='+glbNUM;
  appendScriptTag(queryUrl);
}
function twitSFN() {  // search
  var SRCH = document.chatForm.v1.value;
  glbNUM  = document.chatForm.v2.value;
  var queryUrl = 'http://search.twitter.com/search.json?q='+SRCH;
  appendScriptTag(queryUrl);
}

function appendScriptTag(scriptSrc) {
  var oldScriptTag = document.getElementById('blah');
  if (oldScriptTag) { oldScriptTag.parentNode.removeChild(oldScriptTag); }
  var script  = document.createElement('script');
  script.src  = scriptSrc + '&callback=listCallback';
  script.id   = 'blah';
  script.type = 'text/javascript';
  document.getElementsByTagName('head')[0].appendChild(script);
}

function listCallback(data) {
  if (glbTwitTyp == 'R') {
	glbH = '<img class="leftimg" src="'+data[0].user.profile_image_url + '" width="80" height="80" alt="pic">';
	glbH += '<br /><a style="font-size:18px;color:#000000" href="http://twitter.com/';
	glbH += data[0].user.screen_name + '" target="_blank">' + data[0].user.screen_name + '</a><br />';
	glbH += data[0].user.name +'<br />';
	if (data[0].user.location != null) { glbH += data[0].user.location; }
	glbH += '<br />'+data[0].user.followers_count+'&#160;&#160;followers<br /><hr style="clear:both;">';
	
	ctr = (data.length > glbNUM)? glbNUM : data.length ;
	for (j=0; j<ctr; j++) { 
		glbA = data[j].text.split('http:');
		glbT = data[j].created_at;
		glbD = glbT.substr(4,3) + glbT.substr(8,2);
		glbH += glbA[0];
		if (glbA.length > 1) { glbH += ' <a href="http:' + glbA[1] + '" target="_blank">'+glbD+'</a>'; }
		glbH += '&#160;&#160;<a href="javascript:twitFN(\'W\',\''+data[0].user.screen_name+'\');"><span style="font-size:10px;color:#CC0000">Reply</span></a><br /><hr style="margin-top:-2px;">';
	}
  }
  if (glbTwitTyp == 'S') {	
	ctr = (data.results.length > glbNUM)? glbNUM : data.results.length ;
	glbH = "";
	for (glbT=0; glbT<ctr; glbT++) { 
		var to = data.results[glbT].from_user;
		glbH += '<img class="leftimg" src="'+data.results[glbT].profile_image_url+'" width="60" height="60" alt="pic">';
		glbH += '<a style="font-size:13px;color:#000000" href="http://twitter.com/';
		glbH += to + '" target="_blank">' + to + '</a>&#160;&#160;';
		glbH += data.results[glbT].text+'&#160;&#160;<a href="javascript:twitFN(\'W\',\''+to+'\');">';
		glbH += '<span style="font-size:10px;color:#CC0000">Reply</span></a><br /><hr style="clear:both; margin-top:-2px;">';
	}
  }
	document.getElementById('fixed').innerHTML = H3+'<span style="font-size:11px;">'+glbGrps+'</span>';
	document.getElementById('chatbox').innerHTML = glbTwitHdr;
	document.getElementById('chatmsg').innerHTML = glbTwitPrm + glbH;
	document.chatForm.v1.focus();  // IE8?
}
function twitWFN() {
	var USR = document.chatForm.v1.value;
	glbNUM  = document.chatForm.v2.value;
    var msg = document.chatForm.twitmsg.value;
	if (msg == "") return;
    document.getElementById("twitMsg2").innerHTML = 'werking...';
    glbT = 'chatputtwit.php?u='+USR+'&p='+glbNUM+'&m='+msg;
    xmlhttp = window.XMLHttpRequest?new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
    xmlhttp.onreadystatechange = twitWFN2;
    xmlhttp.open("GET", glbT);
    xmlhttp.send(null);
}
function twitWFN2() {
	if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
		document.getElementById("twitMsg2").innerHTML = xmlhttp.responseText;
	}
}
////////////////////////////////////////////////////////////////////////////////////////////
function refreshLink(grp) {
//if (glbSID == 'a') alert('grp='+grp);
	glbBuzzOFF = "1";  // see getMsg
	glbGroup = grp;
	glbBypass = 99; // set t=zapUnread
	clearTimeout(glbTimerID);
	refresh();
}
function refreshPub(grp) {  // from 'Select from these public groups'
	glbBuzzOFF = "1";
	glbGroup = grp;
	glbBypass = 0;
	clearTimeout(glbTimerID);
	refresh();
}
function refreshMsg() {  // from onDblClick()
	glbBuzzOFF = "1";
	glbBypass = 0;
	clearTimeout(glbTimerID);
	refresh();
}
function refresh() {
    getMsg();  //  displays new messages and group-counter-list updates ~ @240
	glbTimerID = setTimeout("refresh()",15000); // 15-second chat refresh ~ clearTimeout(glbTimerID)
}
function keyChat(e) {
	glbKeyID = (window.event)? event.keyCode : e.keyCode;
	if ( glbKeyID == 13 ) { refreshMsg(); } else { glbBypass = 1; }  // give them time to type... FIX glb...
}
// To get the URL of the actual image file, find the photo you want to use. Click the "All Sizes" button above it and select the size you want. 
// If the photo is yours, two text fields appear below the photo. The first contains a snippet of HTML that will produce the photo on your web site, 
// with a link back to the photo page on Flickr.
