
function _(el) {if(typeof(el)=='string'){el=document.getElementById(el);} return el;} // Like prototype $() fn...
gel = _; $ = _;
function go(url) {window.location.replace(url);}
function fgo(fid) {var url=fid; var dot=fid.indexOf('.'); if (dot==-1){url='fd.php?fid='+fid;} go(url);}
function time()	{return new Date().getTime();}
function show(obj) {var el=_(obj); el.style.display='';}
function hide(obj) {var el=_(obj); el.style.display='none';}
function toggle(obj) {var el=_(obj); if (el.style.display!='none'){el.style.display='none';} else {el.style.display='';}}

function TestPost() {msg = _('message').value; if ((msg.length<=3)&&(_('pfile').value.length<=5)){alert('Message is too short.'); return false;}
if (msg.length>=5000){alert('Message is too long.'); return false;} return true;}
function isdef(variable) {return (typeof(window[variable])=="undefined")?false:true;}

function Crts(text){if(typeof(text.createTextRange)!="undefined"){text.caretPos=document.selection.createRange().duplicate();}}
function stxt(tx1,tx2){
	var msg = _('message');
	if (! msg){return;}
	if (typeof(msg.caretPos) != "undefined" && msg.createTextRange){
	var cP = msg.caretPos; tmp=cP.text.length; cP.text=tx1+cP.text+tx2;
	if (tmp==0){cP.moveStart("character",-tx2.length);cP.moveEnd("character",-tx2.length); cP.select();} else msg.focus(cP);}
	else if (typeof(msg.selectionStart) != "undefined"){
	var mss=msg.selectionStart; mse=msg.selectionEnd; mv=msg.value;
	var beg=mv.substr(0,mss); sel=mv.substr(mss,mse-mss); end=mv.substr(mse); scp=msg.scrollTop;
	msg.value=beg+tx1+sel+tx2+end; if (msg.setSelectionRange){if (sel.length==0)
	msg.setSelectionRange(mss+tx1.length,mss+tx1.length);
	else
	msg.setSelectionRange(mss,mss+tx1.length+sel.length+tx2.length);
	msg.focus();} msg.scrollTop = scp;}else{	msg.value += tx1 + tx2; msg.focus(msg.value.length-1);}
}

if (isdef('p_timer')){clearInterval(p_timer);}
var jobs =[];
var p_delay=null;p_timer=false;p_stop=false;
var keynum = 0; keychar = '';

function p(arg){var op = _('output'); op.value = op.value + arg + nl; return true;}
function cls(){_('output').value = ''; return true;}
function start_pulse(delay){p_delay=1000*delay;p_timer=setInterval(p_handler,p_delay);}
function stop_pulse(){clearInterval(p_timer);}
function p_handler(){if (p_stop) {clearInterval(p_timer);return;}pulse();}
function zilch(){return true;}
function scrollbot(el){el.scrollTop = el.scrollHeight; return el;}
function scrolltop(el){el.scrollTop = 0; return el;}
function xob(){return req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");}
function orsc(req){if(req.readyState==4){if(req.status==200){ajdata(req.responseText);}req.onreadystatechange=zilch;} return true;}

function ajax(url){
	show('throb'); var t=time(); var req = xob(); if (!req){return;}
	url = url+'&uq='+t; // make unique
	req.open('GET',url,true); req.onreadystatechange=function(){try {orsc(req);} catch (ajerr){}};
	try {req.send(''); jobs.push(req);} catch (ajerr){}
	return true;
	}

function keyh(){ev=window.event; if (ev){var key=(typeof ev.which=='number')?ev.which:ev.keyCode; keys(key);}}	
function tidy(){var req=null;for(i=0;i<jobs.length;i++){req=jobs.pop();if(req.readyState!=4){jobs.unshift(req);}else{req.abort();req=null;}} return true;}

function ajdata(data) {var ac=data.slice(0,4); var rdata = data.slice(4); // rest of string = javascript ?
	hide('throb');
	if (ac == '*Js*') {eval(rdata);} else {info(data);}		// Normal info for display
	return true;
	}

function pulse(){tidy();} // User functions to be called periodically

var vidact = '';
function playVid(vidId) {
	var ov=_('video_'+vidact); 
	var vb=_('video_'+vidId);
	var height=350; if (arguments[1]){height=1;}
	if (ov){ov.innerHTML=''; vidact=''; if (ov==vb){vidId='';}}
	if (vidId){
	vidact=vidId;
	var vids ='<embed wmode=transparent height='+height+' width=425 enableJavascript=false allowScriptAccess=never allowfullscreen=true allownetworking=internal type=application/x-shockwave-flash src="http://www.youtube.com/v/'+vidId+'&autoplay=1&fs=1">';
	vb.innerHTML=vids;
	}
	}

function sp(pic){
	op=_('pic_'+pic);
	var pd = pic.slice(0,4)+"/";
	op.src='http://www.redcar.net/photos/public/'+pd+pic;
	}

var DkeyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var EkeyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-";	// url safe...


function charf(code){var c = ''; if (code != 194){c=String.fromCharCode(code)} return c;}

function en64(input) {
	var output=''; var chr1,chr2,chr3; var enc1,enc2,enc3,enc4; var i=0;
	do {
	chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++);
	enc1 = chr1>>2; enc2=((chr1&3)<<4)|(chr2>>4); enc3=((chr2&15)<<2)|(chr3>>6); enc4=chr3&63;
	if (isNaN(chr2)){enc3=enc4=64;} else if (isNaN(chr3)){enc4=64;}
	output = output+EkeyStr.charAt(enc1)+EkeyStr.charAt(enc2)+EkeyStr.charAt(enc3)+EkeyStr.charAt(enc4);
	} while (i<input.length);
	return output;
	}

function de64(input){var output=''; var chr1,chr2,chr3; var enc1,enc2,enc3,enc4,op; var i=0;
	input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
	do {
	enc1=DkeyStr.indexOf(input.charAt(i++)); enc2=DkeyStr.indexOf(input.charAt(i++));
	enc3=DkeyStr.indexOf(input.charAt(i++)); enc4=DkeyStr.indexOf(input.charAt(i++));
	chr1=(enc1<<2)|(enc2>>4); chr2=((enc2&15)<<4)|(enc3>>2); chr3=((enc3&3)<<6)|enc4;
	op = charf(chr1); if (enc3!=64){op=op+charf(chr2);} if (enc4!=64){op=op+charf(chr3);}
	output = output+op;
	} while (i < input.length);
	return output;
	}


function Opost(info,mbody) {
	var mess = de64(mbody);
	var auth = info.split('|');
	var author = auth[0];
	var fid=auth[1]; var tid=auth[2]; var pid=auth[3];
	var date=auth[4]; var time=auth[5]; var subj=de64(auth[6]);
	var edit = '<a class=sbt href=post.php?action=edit&pid='+pid+'>edit</a>'; if (me!=author){edit='';}
	var reply = '<a class=sbt href=post.php?action=reply&pid='+pid+'> Reply </a>';
	var subject = '<a class=subject href=vt.php?tid='+tid+'>'+subj+'</a>';
	var author = '<a class=auth href=member.php?action=viewpro&mname='+author+'>'+author+'</a>';
	var poston = ''+date+' <br> '+time+' <br>';
	if (mode!='recent'){subject=''; reply='';}
	var post = "<table width=100% class=mbx><tr class=p2 valign=top>"+
	"<td class=p1 width=142 align=right>"+author+"<br><br><h1>"+poston+"</h1><br>"+edit+"</td>"+
	"<td><table class=boff width=100% border=0 cellspacing=0>"+
	"<tr class=p1><td width=95%>"+subject+"</td><td class=p2 align=center>"+reply+"</td></tr>"+
	"<tr class=p2><td colspan=2 class=mbod>"+mess+"</td></tr></table></td></tr></table>";

	var dr = _("p_"+pid);
	if (dr){dr.innerHTML = post} else {
		post = "<div id=p_"+pid+">"+post+"</div>";
		postit(post);
		}
	return true;
	}

function postit(post){
	var dr = _("response");
	var cont = post + dr.innerHTML;
	dr.innerHTML=cont;
	}

	