//if(!Array.indexOf){Array.prototype.indexOf = function(obj){for(var i=0; i<this.length; i++){if(this[i]==obj){return i;}}return -1;}}
if(!Array.indexOf){Array.prototype.indexOf = function(obj){return indexIn(this,obj);}}
function isdefined(variable){
    return (typeof(window[variable]) == "undefined")?  false: true;
}
function noReturn(e){
    var rval=true;
    if (window.event) keycode=window.event.keyCode;
    else if (e) keycode=e.which;
    if (keycode==13) rval=false;
    return rval;
} 
function removeTheseNodes(idstr) {
	ids=idstr.split(",");
	for(i=0;i<ids.length;i++) removeTheNode(ids[i]);
}
function rRB(id,title,content,centerText,zindex,width,removeWhichArray,withClose,withoutFadeDown,movable) {
	output="<div id='"+id+"' style='position:fixed;z-index:"+zindex+";width:"+width+"px'>"+rth()+"<div class=\"blockHeader\" ";
	if (movable) {
		output+="style='cursor:move' onmousedown='dragObject(event,this,this.parentNode,false,true)'";
	}else{
		output+="style=\"cursor:default\"";
	}
	output+=" >";
    removeThese="";
    if (removeWhichArray!=null) {
        rems=removeWhichArray.split(",");
        if (removeWhichArray!=null) for(i=0;i<rems.length;i++) removeThese+=";removeTheNode('"+rems[i]+"')";
    }
	if (withClose) {
        output+="<img src='/skin/close.png' onmouseout=\"this.src='/skin/close.png'\" onmouseover=\"this.src='/skin/closeover.png'\" style='cursor:pointer;float:right;margin:0px;' alt='Close' onclick=\"";
        if (!withoutFadeDown || withoutFadeDown==null) output+="startFadeDown();";
        output+="removeTheNode('"+id+"');"+removeThese+"\" />";
    }
	output+=title+"</div><div class='blockContent' style='text-align:"+(centerText?"center":"left")+"'>"+content+"</div><b class='bb4'></b><b class='bb3'></b><b class='bb2'></b><b class='bb1'></b></div>";
	return output;
}
function simpleRoundedBox(title,content,centerText,width,closeID,withoutFadeDown) {
	output="<div style='width:"+width+"px' >"+rt()+"<div class=\"blockHeader\">";
	if (closeID) {
        output+="<img src='/skin/close.png' onmouseout=\"this.src='/skin/close.png'\" onmouseover=\"this.src='/skin/closeover.png'\" style='cursor:pointer;float:right;margin:0px;' alt='Close' onclick=\"";
        if (!withoutFadeDown || withoutFadeDown==null) output+="startFadeDown();";
        output+="removeTheNode('"+closeID+"');\" />";
    }
	output+=title+"</div><div class='blockContent' style='text-align:"+(centerText?"center":"left")+"'>"+content+"</div>"+rb()+"</div>";
	return output;
}
function basicBlock(id,title,content,centerText,divStyle,classname) {
	op="<div id='"+id+"' ";
	if (classname!=null) op+="class='"+classname+"' ";
	op+="style='"+divStyle+"'>";
	if (title!=null) {
		op+=rth()+"<div class=\"blockHeader\">"+title+"</div>";
	}else{
		op+=rt();
	}
	op+="<div class=\"blockContent\" style=\"text-align:"+(centerText?"center":"left")+"\">"+content+"</div>";
	op+=rb();
	op+="</div>";
	return op;
}
function rt() {return "<b class='bb1'></b><b class='bb2'></b><b class='bb3'></b><b class='bb4'></b>";}
function rth() {return "<b class='b1'></b><b class='b2'></b><b class='b3'></b><b class='b4'></b>";}
function rb() {return "<b class='bb4'></b><b class='bb3'></b><b class='bb2'></b><b class='bb1'></b>";}
function showUpload(gallery,ref,maxfiles) {
	withoutFader=false;
	if (ob("editregion")!=null) withoutFader=true;
	if (!withoutFader) startFadeUp();
	if (maxfiles==null) maxfiles=1;
	toInsert=embeduploader("gallerytype="+gallery+"&ref="+ref,"galleryUploaded",maxfiles,"/skin/uploader.swf");
	h=(maxfiles*50)+20+25;
	toInsert="<div style=\"width:300px;height:"+h+"px;overflow:hidden\">"+toInsert+"</div>";
	toInsert=rRB("uploading","Image upload",toInsert,true,20,310,"",true,withoutFader);
    pRH(toInsert,document.body);
    cO(ob("uploading"));
}
function showUploadFile(gallery,ref,maxfiles) {
	withoutFader=false;
	if (ob("editregion")!=null) withoutFader=true;
	if (!withoutFader) startFadeUp();
	if (maxfiles==null) maxfiles=1;
	toInsert=embeduploader("gallerytype="+gallery+"&ref="+ref,"csvUploaded",maxfiles,"/skin/uploadfile.swf");
	h=(maxfiles*50)+20+25;
	toInsert="<div style=\"width:300px;height:"+h+"px;overflow:hidden\">"+toInsert+"</div>";
	toInsert=rRB("uploading","Contacts upload",toInsert,true,20,310,"",true,withoutFader);
    pRH(toInsert,document.body);
    cO(ob("uploading"));
}
function csvUploaded(gallerytype,ref) {
	removeTheNode("uploading");
	dialog("Your contacts","userfunction","handler=contactsCSVdialog");
}
function galleryUploaded(gallerytype,ref) {
	if (ob("editregion")==null) startFadeDown();
	removeTheNode("uploading");
	if (gallerytype=="avatars") {
		av=ob("myAvatar");
		str = av.src; 
		pattern = /-([0-9]*)\.jpg/; 
		result =  str.match(pattern); 
		for(i = 0; i < result.length; i++) {
			v=(1*result[i])+1;
			str=str.replace("-"+result[i]+".jpg","-"+v+".jpg");
		}
		av.src=str;
	}
}
function embeduploader(theCommand,completedHandler,maxfiles,src) {
    vars=new Array();
    params=new Array();
    params.push("width");
    vars.push("300");
    params.push("height");
    vars.push("600");
    params.push("src");
    vars.push(src);
    params.push("quality");
    vars.push("high");
    params.push("align");
    vars.push("middle");
    params.push("play");
    vars.push("true");
    params.push("loop");
    vars.push("true");
    params.push("scale");
    vars.push("showall");
    params.push("wmode");
    vars.push("transparent");
    params.push("devicefont");
    vars.push("false");
    params.push("id");
    vars.push("uploader");
    params.push("name");
    vars.push("uploader");
    params.push("bgcolor");
    vars.push("#ffffff");
    params.push("menu");
    vars.push("false");
    params.push("allowFullScreen");
    vars.push("false");
    params.push("allowScriptAccess");
    vars.push("sameDomain");
    params.push("movie");
    vars.push(src);
    params.push("salign");
    vars.push("");
    params.push("FlashVars");
	fv=theCommand+"&completeHandler="+completedHandler+"&quantity="+maxfiles+"&"+document.cookie.replace(/; /g,"&");
    vars.push(fv);
    return flashCode(src,params,vars);
}
function flashCode(srcMovie,params,vars) {
    op="<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0\"";
    for(i=0;i<vars.length;i++) {
        op+=" "+params[i]+"=\""+vars[i]+"\"";
    }
    op+=">";
    for(i=0;i<vars.length;i++) {
        op+="<param name=\""+params[i]+"\" value=\""+vars[i]+"\" />";
    }
    op+="<embed src=\""+srcMovie+"\"";
    for(i=0;i<vars.length;i++) {
        op+=" "+params[i]+"=\""+vars[i]+"\"";
    }
    op+="swLiveConnect=\"true\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" />";
    op+="</object>";
    return op;
}
function logoff(src) {
	src.innerHTML="Logging off..";
	var vars="cmd=logout";
	sPR("/index.php",vars,refreshPage);
}
function checkvalidinput(src,withSpaces,minlength) {
	val=src.value;
	if (withSpaces) {
    	alpharegex=new RegExp(/^[\.@\/a-zA-Z0-9 ]*$/);
	}else{
    	alpharegex=new RegExp(/^[\.@\/a-zA-Z0-9]*$/);
	}
    ok=alpharegex.test(val);
	if (ok) {
		if (val.length<minlength) {
			src.className="failedinput";
			com="At least "+minlength+" character";
			if (minlength>1) com+="s";
			sIH(src.id+"Alert",com);
			ok=false;
		}else{
			src.className="normalinput";
			sIH(src.id+"Alert","");
		}			
	}else{
		src.className="failedinput";
		sIH(src.id+"Alert","Alphanumeric only");
	}
	return ok;
}
function refreshPage(reply) {
	window.location.reload();
}
function checkAlphaNumeric(e) {
    if (window.event) {
        e=window.event;
        keycode=window.event.keyCode;
    }else{
        keycode=e.which;
    }
	asc=e.charCode || e.keyCode;
	c=String.fromCharCode(asc);
	valid="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789.,@/";
	reply=false;
	if (indexIn(valid,c)>=0) reply=true;
	if (keycode==190 || keycode==110) reply=true;
	if (keycode==9 || keycode==8 || keycode==46 || keycode==36 || keycode==35 || keycode==37 || keycode==39) reply=true;
	alert(keycode);
	return reply;
}
function checkAlphaNumericOnly(e,enterHandler) {
    if (window.event) {
        e=window.event;
        keycode=window.event.keyCode;
    }else{
        keycode=e.which;
    }
	reply=false;
	if (keycode>=64 && keycode<=90) reply=true; //a-z
	if (keycode>=96 && keycode<=105) reply=true; //0-9
	if (keycode==9) reply=true; //tab
	if (keycode==20) reply=true; //caps
	if (keycode==16) reply=true; //shift
	if (keycode==190 || keycode==110) reply=true;
	if (keycode==8 || keycode==46 || keycode==36 || keycode==35 || keycode==37) reply=true;
	if (keycode==13 && enterHandler!=null) enterHandler();
	return reply;
}
function setStatusLine(t) {
	if (t!="") t="&nbsp;|&nbsp;"+t;
	ob("statusinfo").innerHTML=t;
}
function pressingEnterOrEscape(srcObj,e,enterhandler,escapehandler) {
    if (window.event) {
        e=window.event;
        keycode=window.event.keyCode;
    }else{
        keycode=e.which;
    }
	if (keycode==13) enterhandler(srcObj);
	if (keycode==27) escapehandler();
}
function encodeUpload(ip) {
	return ip.replace(/&/g,"(amp)").replace(/=/g,"(eq)").replace(/%/g,"(per)").replace(/\+/g,"(plus)").replace(/ /g,"+");
}
function changeScheme(sch) {
	SetCookie("scheme",sch,365);
	window.location.reload();
}
var removeDroppedObject=false;
function addNewBlock(srcObj,type,defaultname, cust) {
	if (displayByFlash) showNotEmbed();
	box=basicBlock("blocknew"+type,defaultname,"Drop this widget where you want it",true,"width:"+columnWidth+"px","blockclass");
	pRH(box,ob("column0"));
	cO(ob("blocknew"+type));
	dragObject(null,null,ob('blocknew'+type),true);
	removeDroppedObject=true;
}
function attachBlock(srcObj,id) {
	srcObj.parentNode.innerHTML="Attaching...";	
	attachBlockToMe(id);
	sPR("/index.php",vars,rSC);
}
function attachBlockToMe(id) {
	vars="cmd=attachBlock&blockid="+id;
	sPR("/index.php",vars,rSC);
}
function blockToggle(srcObj,id,persist) {
	opened=true;
	empty=true;
	cont=ob(id);
	if (cont.style.display=='none') opened=false;
	if (cont.children.length>0) empty=false;
	srcObj.className=opened?"opendown":"closeup";
	if (empty && !opened) {
		sIH(cont,"<img src='/skin/loading.gif' align='absmiddle' /> Loading...");
	}else{
		tE(id,false,true,'');
	}
	vars="";
	if (empty) {
		vars="cmd=openBlock&blockid="+id.replace("block","").replace("content","")+(persist?"&opened=1":"");
	}else if(persist) {
		vars="cmd=toggleblock&blockid="+id.replace("block","").replace("content","")+"&opened="+(opened?"0":"1");
	}
	if (vars!="") sPR("/index.php",vars,rSC);
}
function ensureOpenBlock(id) {
	if (con=ob("block"+id+"content")) {
		if (con.style.display=='none') blockToggle(ob("block"+id+"Header"),"block"+id+"content",false);
	}		
}
var selectedfeeds=new Array();
function addmultiRSS(srcObj,blockid) {
	ip=ob(srcObj.id+'input');
	feed=ip.value;
	if (feed!="") {
		srcObj.innerHTML='<img src=\"/skin/loading.gif\" align=\"absmiddle\" /> Saving RSS settings...';
		vars="cmd=includefunction&includefile=multirss&handler=addFeed&address="+encodeUpload(feed)+"&blockid="+blockid;
		sPR('/index.php',vars,rSC);
	}else{
		alert('Provide a Feed address');
	}
}
function deletemultiRSS(srcObj,blockid) {
	if (window.confirm("Click OK to remove the displayed feed from this block")) {
		srcObj.parentNode.innerHTML='<img src="/skin/loading.gif" align="absmiddle" /> Removing RSS feed...';
		feedid=selectedfeeds[blockid];
		vars='cmd=includefunction&includefile=multirss&handler=removeFeed&feedid='+feedid+'&blockid='+blockid;
		sPR('/index.php',vars,rSC);
	}
}
function loadmultiRSS(feedid,blockid) {
	if (selectedfeeds[blockid]!=feedid) {
		if (feedblock=ob("feed"+blockid)) {
			ins="<div style=\"width:"+feedblock.clientWidth+"px;height:"+feedblock.clientHeight+"px\"><center><img src=\"/skin/loading.gif\" align=\"absmiddle\" /> Loading feed...</center></div>";
			feedblock.innerHTML=ins;
		}
	}
	selectedfeeds[blockid]=feedid;
	sPR('/index.php','cmd=readRSS&feed='+feedid+'&blockid='+blockid,rSC);
}
function checkMoveObject() {
	cook=getCookieValue("moveobject");
	if (cook!=null && cook !="") {
		if (showNotEmbed()) {}
		moving=null;
		if (ob("block"+cook)) {
			moving=ob("block"+cook);
		}else if (ob(cook)) {
			moving=ob(cook);
		}
		if (moving) {
			dropThisMessage('Place your new widget')
			dragObject(null,null,moving,true);
		}
	}
}
function toLocalTime(h,m,s,D,M,Y) {
	local=new Date(	Date.UTC(Y,M,D,h,m,s));
}
var timeout	= 500;
var closetimer	= 0;
var ddmenuitem	= 0;
function mopen(id){	
	mcancelclosetime();
	if(ddmenuitem) ddmenuitem.style.display = 'none';
	ddmenuitem = ob(id);
	ddmenuitem.style.display = 'block';
}
function mclose(){
	if(ddmenuitem) ddmenuitem.style.display = 'none';
}
function mclosetime(){
	closetimer = window.setTimeout(mclose, timeout);
}
function mcancelclosetime(){
	if(closetimer)
	{
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}
document.onclick = mclose; 

function shopFave(srcObj,shopid,val,cat) {
	srcObj.parentNode.innerHTML="Updating favourites...";
	vars='cmd=shopFave&shopid='+shopid+'&val='+val+'&cat='+cat;
	sPR('/index.php',vars,rSC);
}
var selectedFlashBlock="";
function changeFlashBlock(blockid) {
	selectedFlashBlock=blockid;
	if (f=getFlashMovie('linkPresentation')) {
		f.selectFlashBlock(blockid);
		buildFlashSelector();
	}
}
function buildFlashSelector() {
	fetchLinks();
	sel=ob("flashSelector");
	ins="";
	inorder=new Array();
	for(ids in linkvariables) inorder.push(linkvariables[ids]);
	inorder.sort(sortByOrder);
	for(i=0;i<inorder.length;i++) {
		//ins+=" "+ids[i];
		if (selectedFlashBlock=="") selectedFlashBlock=inorder[i]["blockid"];
		linked="";
		colstr=getElementStyle("flashSelector","color","color");
		if (colstr.substr(0,1)=="#") {
			col=colstr.replace("#","");
		}else{
			col=rgbStringToHex(colstr);
		}
		if (inorder[i]["linked"]!="0") linked="&nbsp;<img src='/colourize-attach-"+col+".gif' align='absmiddle' title='"+inorder[i]["linkedfrom"]["username"]+"' />";
		//linked=inorder[i]["linked"];
		if (selectedFlashBlock==inorder[i]["blockid"]) {
			ins+="<b>"+inorder[i]["title"]+linked+"</b> ";
		}else{
			ins+="<span onclick='changeFlashBlock("+inorder[i]["blockid"]+")'>"+inorder[i]["title"]+linked+"</span> ";
		}
	}
	sel.innerHTML=ins;
}
function fetchLinks() {
	uid=new RegExp(/avatars_[a-z]*_([0-9]*)_[0-9*]/i);
	snap=new RegExp(/linktitle([0-9]*)/i);
	att=new RegExp(/colourize\-attach/i);
	linkvariables={};
	for(b=0;b<flashedBlocks.length;b++) {
		thisblock={};
		h=c=null;
		bl=ob(flashedBlocks[b]);
		d=bl.getElementsByTagName("DIV");
		for (i=0;i<d.length;i++) {
			if (d[i].className=="blockHeader") h=d[i];
			if (d[i].className=="blockContent") c=d[i];
		}
		if (h!==null && c!==null) {
			thisblock["title"]=h.getElementsByTagName("DIV")[0].innerHTML;
			thisblock["order"]=b;
			thisblock["attach"]=0;
			if (h.innerHTML.match(att)) thisblock["attach"]=1;
			thisblock["blockid"]=flashedBlocks[b].replace("block","");
			linkedfrom={"username":"","avatar":"","linked":""};
			thisblock["linked"]=0;
			if (h.getElementsByTagName("NOBR").length>0) {
				if (h.getElementsByTagName("NOBR")[0].getElementsByTagName("IMG").length>0) {
					u=h.getElementsByTagName("NOBR")[0].getElementsByTagName("IMG")[0];
					if (u.src.match(uid)) {
						linkedfrom["username"]=u.title;
						av=u.src.split("avatars");
						linkedfrom["avatar"]="avatars"+av[1].replace(/_[0-9]*_/,"_60_");
						thisblock["linked"]=1;
						thisblock["linkedfrom"]=linkedfrom;
					}
				}
			}
			thisblock["links"]={};
			l=c.getElementsByTagName("A");
			for(i=0;i<l.length;i++) {
				thislink={"order":"","url":"","snapshot":"","name":""};
				thislink["order"]=i;
				thislink["url"]=l[i].href;
				id=l[i].innerHTML.match(snap)[1];
				thislink["name"]=l[i].getElementsByTagName("H3")[0].innerHTML;
				thislink["snapshot"]=l[i].getElementsByTagName("H3")[0].getAttribute("snapshot");
				thisblock["links"][id]=thislink;
			}
			linkvariables[thisblock["blockid"]]=thisblock;
		}
	}
	viewer();
}
function getElementStyle(elemID, IEStyleProp, CSSStyleProp) {
    var elem = document.getElementById(elemID);
    if (elem.currentStyle) {
        return elem.currentStyle[IEStyleProp];
    } else if (window.getComputedStyle) {
        var compStyle = window.getComputedStyle(elem, "");
        return compStyle.getPropertyValue(CSSStyleProp);
    }
    return "";
}
function sortByOrder(a,b) {
	return a["order"]-b["order"];
}
function userDialog(title,handler) {
	ins="<div id='dialogContent'><img src='/skin/loading.gif' align='absmiddle' />&nbsp;Loading...</div>";
	ins=rRB('dialogBox',title,ins,false,5,400,null,true,false);
	startFadeUp();
	pRH(ins,document.body);
	cO(ob("dialogBox"));
	vars='cmd=userfunction&handler='+handler;
	sPR('/index.php',vars,userDialogLoaded);	
}
function userDialogLoaded(reply) {
	bits=reply.split("<sections>");
	sIHCentered('dialogContent',bits[0],'dialogBox');
	if (bits.length>1) {
		for (i=1;i<bits.length;i++) rSC(bits[i]);
	}
}
function addBlockType(srcObj,type) {
	srcObj.parentNode.innerHTML="<img src='/skin/loading.gif' align='absmiddle' /> Adding widget...";
	vars="cmd=addBlock&type="+type;
	sPR('/index.php',vars,rSC);
}
function progFave(srcObj,tit,add) {
	srcObj.src='/skin/loading.gif';
	doit="&"+((add==0)?"remove":"add")+"="+tit;
	sPR('/index.php','cmd=includefunction&includefile=iplayer&handler=returnLoadListing'+doit,rSC);
}
function toggleTab(srcObj,tarid) {
	tar=ob(tarid);
	if (closeStatusTimer!=null) cancelStatTimer();
	srcObj.className=((tar.style.display=="none")?"tabclose":"tabopen");
	tE(tar.id,true,false,otherTabs(tarid));
}
function openUpdates() {
	tar=ob("statusUpdates");
	if (tar.style.display=="none") {
		ob("statOpener").className=((tar.style.display=="none")?"tabclose":"tabopen");
		tE("statusUpdates",true,false,'');
	}
}
function closeUpdates() {
	if (closeStatusTimer!=null) cancelStatTimer();
	tar=ob("statusUpdates");
	if (tar.style.display!="none") {
		ob("statOpener").className=((tar.style.display=="none")?"tabclose":"tabopen");
		tE("statusUpdates",true,false,'');
	}
}
function otherTabs(tab) {
	o=["statusUpdates","messageUpdates"];
	r='';
	for(i=0;i<o.length;i++) {
		if (o[i]!=tab) {
			if (r!="") r+=":";
			r+=o[i];
		}
	}
	return r;
}
var closeStatusTimer=null;
function startCloseUpdateTimer() {
	closeStatusTimer=setTimeout("closeUpdates()",10000);
}
function cancelStatTimer() {
	clearTimeout(closeStatusTimer);
	closeStatusTimer=null;
}
var commentingOn=null;
function statusReply(id) {
	if (commentingOn!=null) sIH(commentingOn,"");
	commentingOn=ob("replyto"+id);
	ins="<textarea id='commentReply' class='normalinput' style='width:270px;font-size:10px;display:block;margin:5px auto;height:auto;min-height:20px' onkeydown='checkforurls(this,event)' onkeyup='drawStatusLength(this,true)'></textarea><center><div class='buttonDiv' onclick='commentOnStatus(this,\"commentReply\","+id+")'>Post</div></center>";
	ins+="<span id='commentReplyLength'></span><div id='commentReplyTab'></div>";
	sIH(commentingOn,ins);
}
var postStatusTo=new Array();
var postmaxlength=512;
function tickOutput(srcObj,bid,inc,postlength) {
	if (srcObj.className=="cantick") {
		postStatusTo.push([bid,postlength]);
		srcObj.className="isticked";
	}else{
		for(i=postStatusTo.length-1;i>=0;i--) {
			if (postStatusTo[i][0]==bid) postStatusTo.splice(i,1);
			srcObj.className="cantick";
		}
	}
	calcMaxLength();
}
function calcMaxLength() {
	postmaxlength=512;
	for(i=postStatusTo.length-1;i>=0;i--) {
		if (postmaxlength>postStatusTo[i][1]) postmaxlength=postStatusTo[i][1];
	}
	drawStatusLength(ob("newStatus"),false);
}
var notReachedMax=false;
var shrunkLinks=new Array();
function checkforurls(src,e) {
    if (window.event) keycode=window.event.keyCode;
    else if (e) keycode=e.which;
    if (keycode==32) findURLs(src.id);
}
function drawStatusLength(src,defaultLength) {
	t=src.value;
	l=encodeHTMLStatus(t).length;
	if (!defaultLength) {
		if (l>postmaxlength) src.value=t.substr(0,postmaxlength);
		l=encodeHTMLStatus(src.value).length;
		ob(src.id+"Length").innerHTML=l+"/"+postmaxlength+" characters";
	}else{
		if (l>512) src.value=t.substr(0,512);
		l=encodeHTMLStatus(src.value).length;
		ob(src.id+"Length").innerHTML=l+"/512 characters";
	}
}

function findURLs(ip) {
	shrunkLinks=new Array();
	t=ob(ip).value;
	ins="";
	if (urls=getUrlsInString(t)) {
		for(f=0;f<urls.length;f++) {
			if (!urls[f].match(/http:\/\/l2l.at/gim)) {
				urls[f]=trim(urls[f]);
				shrunkLinks.push([urls[f],""]);
			}
		}
		for(s=0;s<shrunkLinks.length;s++) ins+="<div id='url"+s+"' class='msg'>"+shrunkItem(s,ip)+"</div>";
	}
	pre="";
	if (ins!="") {
		if (shrunkLinks.length>1) {
			pre="Shrink these links?";
		}else{
			pre="Shrink this link?";
		}
		ins="<div class='expand' style='padding:2px;margin:2px'>"+pre+ins+"</div>";
	}
	sIH(ip+"Tab",ins);
}
function shrunkItem(s,ip) {
	ins=shrunkLinks[s][0];
	if (shrunkLinks[s][1]=="") {
		ins+="<nobr class='blockLink' onclick='shrink(this,\""+s+"\",\""+ip+"\")'>Shrink</nobr>";
	}else{
		ins+="<br />"+shrunkLinks[s][1];
	}
	return ins;
}
function encodeHTMLStatus(ip) {
	return ip.replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/'/g,'&rsquo;').replace(/"/g,'&rdquo;');
}
function sendStatuses(srcObj,reply) {
	status=encodeUpload(ob("newStatus").value);
	vars="cmd=updateStatuses&content="+status+"&others=";
	others="";
	for(o=0;o<postStatusTo.length;o++) {
		if (others!="") others+=";";
		others+=postStatusTo[o][0];
	}
	vars+=others;
	if (reply!=0) vars+="&replyto="+reply;
	sPR('/index.php',vars,rSC);
	showLoading('statCont',"Processing...");
}
function commentOnStatus(srcObj,ipObj,replyto) {
	status=encodeUpload(encodeHTMLStatus(ob(ipObj).value));
	vars="cmd=updateStatuses&content="+status+"&replyto="+replyto;
	sPR('/index.php',vars,rSC);
	showLoading('statCont',"Processing...");
}
function hideFeed(un) {
	vars="cmd=updateStatuses&hide="+un;
	sPR('/index.php',vars,rSC);
	showLoading('statCont',"Processing...");
}
function getUrlsInString(s) {
	s+=" ";
	return s.match(/(http:\/\/[\w#!:.?+=&%@!\-\/]*?) /gim);
}
var editingValue=null;
function shrink(srcObj,s,ip) {
	editingValue=ip;
	url=shrunkLinks[s][0];
	par=srcObj.parentNode;
	par.innerHTML="Shrinking...";
	L2Lshrink(url,"beenshrunk",'From Musterfy');
}
function beenshrunk(reply) {
	if (reply["error"]) {
		alert(reply["error"]);
	}else if (reply["url"]) {
		t=ob(editingValue).value;
		t=t.replace(trim(reply["longurl"]),reply["url"]);
		ob(editingValue).value=t;
	}
	findURLs(editingValue);
	drawStatusLength(ob(editingValue),(editingValue!="newStatus"));
}
function toggleConversation(convid,loadconv) {
	tar=ob("conv"+convid);
	if (tar.style.display=="none") {
		if (loadconv) {
			serverFunction(ob("conv"+convid).childNodes[0],"Loading...","cmd=thisuser&handler=wholeConversation&convid="+convid)
		}else{
			send=false;
			for(k=0;k<tar.childNodes.length;k++) {
				kid=tar.childNodes[k];
				if (kid.className=="unread") send=true;
			}
			if (send) sPR('/index.php','cmd=thisuser&handler=markasread&convid='+convid,rSC);
		}
	}else{
		for(k=0;k<tar.childNodes.length;k++) {
			kid=tar.childNodes[k];
			if (kid.className=="unreadmsg") kid.className="readmsg";
		}
	}
	tE("conv"+convid,false,true,'');
}
function showLoading(srcObj,message) {
	if (typeof(srcObj)=="string") srcObj=ob(srcObj);
	w=srcObj.clientWidth;
	h=srcObj.clientHeight;
	ins="<table cellspacing=0 cellpadding=0><tr><td style='width:"+w+"px;height:"+h+"px;text-align:center;vertical-align:middle'><img src='/skin/loading.gif' />";
	if (message!="") ins+="<br>"+message;
	ins+="</td></tr></table>";
	srcObj.innerHTML=ins;
}
function serverFunction(srcObj,message,vars) {
	if (srcObj) showLoading(srcObj.parentNode,message);
	sPR('/index.php',vars,rSC);
}
function dialog(title,cmd,vars) {
	showDialogBox(title);
	sPR('/index.php','cmd='+cmd+'&'+vars,rSC);
}
function showDialogBox(title) {
	ins=rRB('dialog',title,'<div id="dialogcontent"><img src="/skin/loading.gif" /></div>',true,5,400,'',true,false,true);
	if (!ob("blackbox")) startFadeUp();
	pRH(ins,document.body);
	cO(ob("dialog"));
}
function linkjsfile(filename){
  var fileref=document.createElement('script');
  fileref.setAttribute("type","text/javascript");
  fileref.setAttribute("src", filename);
  document.getElementsByTagName("head").item(0).appendChild(fileref);
}
// Messaging
var selectedrecipients=new Array();
function recipientList() {
	reply="";
	for(f=0;f<myFriends.length;f++) {
		if (indexIn(selectedrecipients,myFriends[f]["id"])>=0) {
			reply+="<div class=\"recipient\" title=\""+myFriends[f]["username"]+"\">"+myFriends[f]["name"]+" | <span class=\"blockLink\" onclick=\"removeRecipient('"+myFriends[f]["id"]+"')\">X</span></div>";
		}
	}
	ob("Listrecipients").innerHTML=reply;
}
function removeRecipient(id) {
	i=indexIn(selectedrecipients,id);
	selectedrecipients.splice(i,1);
	recipientList();
}
function findFriends(srcObj,e) {
	scored=new Array();
	val=srcObj.value;
	for(i=0;i<myFriends.length;i++) {
		if (indexIn(selectedrecipients,myFriends[i]["id"])<0) {
			scored.push(new Array(searchScore(val,myFriends[i]),myFriends[i]));	
		}
	}
	scored.sort(sortByScore);
	scored.reverse();
	maxf=scored.length;
	if (maxf>10) maxf=10;
	fcontent=new Array();
	for(f=0;f<maxf;f++) if (scored[f][0]>0) fcontent.push(scored[f][1]["id"]+"-datasplit-"+scored[f][1]["name"]+" <em>["+scored[f][1]["username"]+"]</em>");
	content=fcontent.join("-optionsplit-");
	checkShortlistKeys(srcObj,e,addRecipient,null,true,content);
}
function sortByScore(a,b)
{
return a[0] - b[0];
}
function searchScore(val,person) {
	score=0;
	vals=val.split(" ");
	names=person["name"].split(" ");
	for(v=0;v<vals.length;v++) {
		for(n=0;n<names.length;n++) {
			score+=scoreMatch(vals[v],names[n]);
		}
		score+=scoreMatch(vals[v],person["username"]);
	}
	return score;
}
function scoreMatch(val,word) {
	s=0;
	if (word!="" && val!="") {
		eval("m=/^"+val+"/i;");
		if (m.test(word)) {
			s+=10;
		}else{
			eval("m=/"+val+"/i;");
			if (m.test(word)) s+=5;
		}
	}
	return s;
}
function addRecipient(id) {
	if (id!=null) {
		selectedrecipients.push(id);
		recipientList();
		ob("friendSearch").value="";
	}
}
function doHowLongs() {
	nobr=document.getElementsByTagName("nobr");
	for(n=0;n<nobr.length;n++) {
		tso=nobr[n];
		if (ts=tso.getAttribute("timestamp")*1) {
			jsts=ts+timeOffset;
			age=Math.round((new Date().getTime()/1000)-jsts);
			tso.innerHTML=ageToString(age);
		}
	}
	setTimeout("doHowLongs()",60000);
}
function ageToString(age) {
	hour=60;
	day=3600;
	week=day*7;
	age=Math.floor(age/60);
	if (age<=1) {
		s="just now";
	}else if(age<hour) {
		s=age+" minutes ago";
	}else if(age<2*hour) {
		s="1 hour ago";
	}else if(age<day) {
		s=Math.floor(age/hour)+" hours ago";
	}else if(age<2*day) {
		s="1 day ago";
	}else if(age<week) {
		s=Math.floor(age/day)+" days ago";
	}else if(age<2*week) {
		s="1 week ago";
	}else{
		s=Math.floor(age/week)+" weeks ago";
	}
	return s;
}var addToBlock="";
var selectedImageURL="";
var checkingDomain="";
Array.prototype.max = function() {
	var max = this[0];
	var len = this.length;
	for (var i = 1; i < len; i++) if (this[i] > max) max = this[i];
	return max;
}
Array.prototype.min = function() {
	var min = this[0];
	var len = this.length;
	for (var i = 1; i < len; i++) if (this[i] < min) min = this[i];
	return min;
}
function tabbedBlock(id,title,content) {
	reply="<div>"+rth()+"<div class=\"blockHeader\" style=\"cursor:pointer\" onclick=\"tE('"+id+"',false,true,'')\" ><span>"+title+"</span></div><div class=\"blockContent\"><div id=\""+id+"\" style=\"display:none\">"+content+"</div></div>"+rb()+"</b></div>";
	return reply;
}
function addLink(id,name) {
	addToBlock=id;
	selectedImageURL="";
	startFadeUp();
	most="";
	for(tt in topten) most+="<div class=\"blockLink\" style=\"margin-top:4px;font-size:12px\" onclick=\"setLinkURL('"+topten[tt]+"')\">"+tt+"</div>";
	sear="<br />Not sure of the link address? Search below, and click on <b>&lsquo;Add this link&rsquo;</b> under the desired result<div id=\"googlesearcher\"></div>";
	content="<b>Enter your desired website address:</b><div id=\"urlinput\"><input type=\"text\" value=\"http://\" id=\"addURL\" onkeydown=\"pressingEnterOrEscape(this,event,checkURL,null)\" /></div><div id=\"addReport\"><center><div class=\"buttonDiv\" onclick=\"checkURL()\">next</div></center></div>";
	ins="<table id='addDialog' style='position:absolute;z-index:5'><tr><td>";
	ins+=simpleRoundedBox("Most popular",most,false,350,null,false);
	ins+="<div style='height:10px'></div>";
	ins+=simpleRoundedBox("Find a site",sear,false,350,null,false);
	ins+="</td><td>";
	ins+=simpleRoundedBox("Link URL",content,false,350,'addDialog',false);
	ins+="</td></tr></table>";
	pRH(ins,document.body);
	sc = new google.search.SearchControl();
	sc.addSearcher(new google.search.WebSearch());
	sc.setOnKeepCallback(null,setGoogleLink,"Add this link");
	sc.draw(ob("googlesearcher"));
	box=ob('addDialog');
	cO(box);
	fadeinobject(ob('addDialog'),0,100,null,5);
}
function setGoogleLink(reply) {
	setLinkURL(reply.url);
}
function setLinkURL(url) {
	ob("addURL").value=url;
}
function checkURL() {
	checkingDomain=ob("addURL").value;
	if (checkingDomain!="" && checkingDomain!="http://") {
		sIH("addReport","<center><img src=\"/skin/loading.gif\" align=\"absmiddle\" /> Reading URL...</center>");
		vars="cmd=fetchURL&url="+encodeUpload(checkingDomain);
		sPR("/index.php",vars,rSC);
	}
}
function saveURL() {
	vars="cmd=saveURL&block="+addToBlock;
	vars+="&title="+encodeUpload(ob("urltitle").value);
	vars+="&url="+encodeUpload(ob("addURL").value);
	vars+="&description="+encodeUpload(ob("urldescription").value);
	sIH("addReport","<center><img src=\"/skin/loading.gif\" align=\"absmiddle\" /> Creating an image of the site...<br />This may take a moment!</center>");
	sPR("/index.php",vars,URLsaved);
}
function URLsaved(reply) {
	startFadeDown();
	removeTheNode('addDialog');
	rSC(reply);
	reloadFlashLinks();
}
function removeLink(srcObj,linkid) {
	if (window.confirm("Are you sure you want to remove this link?")) {
		srcObj.parentNode.innerHTML="<img src=\"/skin/loading.gif\" align=\"absmiddle\" /> Removing link";
		vars="cmd=removeLink&linkid="+linkid;
		sPR("/index.php",vars,rSC);
	}
}
function moveUpDown(srcObj,linkid,dir) {
	srcObj.src="/skin/loading.gif";
	vars="cmd=moveUpDown&linkid="+linkid+"&dir="+dir;
	sPR("/index.php",vars,rSC);
}
var updateTimer=null;
function startAutoupdate() {
	onemin=60000;
	ob("statusinfo").innerHTML="<img src='/skin/update.png' align='absmiddle' title='Updates checked every "+updateInterval+" minutes' /> Auto update";
	updateTimer = setTimeout("refreshnotifications()",updateInterval*onemin);
}
function refreshnotifications() {
	additional="";
	for(include in updateAdditional) {
		if (include!="max" && include!="min" && include!="find" && include!="indexOf") {
			if (updateAdditional[include]!="") {
				additional+=((additional=="")?"":";")+include+":"+updateAdditional[include];	
			}
		}
	}
	sPR("/index.php","cmd=refreshnotifications&additional="+additional,refreshednotifications);
}
function refreshednotifications(reply) {
	if (reply!="LoggedOff") {
		startAutoupdate();
		rSC(reply);
		now=new Date();
		h=""+now.getHours();
		if (h.length<2) h="0"+h;
		m=""+now.getMinutes();
		if (m.length<2) m="0"+m;
		s=""+now.getSeconds();
		if (s.length<2) s="0"+s;
		nowstring=h+":"+m+":"+s;
		ob("statusinfo").innerHTML="<img src='/skin/update.png' align='absmiddle' title='Updates checked every "+updateInterval+" minutes' /> Updated "+nowstring;
	}else{
		ob("statusinfo").innerHTML="Logged off";
		clearTimeout(updateTimer);
		updateTimer = null;
	}
}
function refreshOnlineFriendsBlock() {
	if (refreshOnlineFriends) sPR("/index.php","cmd=refreshOnlineFriends",rSC);
}
function EvalSound(soundobj) {
  var thissound= eval("document."+soundobj);
  thissound.Play();
}
var updateIntervalInMessages=1;
function startAutoupdateInMessages() {
	onemin=60000;
	updateTimer = setTimeout("checkNewMessages()",updateIntervalInMessages*onemin);
}
function checkNewMessages() {
	sPR("/index.php","cmd=messagingfunction&handler=countNewMessages",checkedNewMessages);
}
function checkedNewMessages(reply) {
	if (reply!="LoggedOff") {
		startAutoupdateInMessages();
		if (reply!=unreadMessageCount) {
			unreadMessageCount=reply;
			EvalSound("newalert");
			reloadMessageSummary(null);
		}
	}else{
		clearTimeout(updateTimer);
		updateTimer = null;
	}
}
function reloadMessageSummary(srcObj) {
	if (srcObj) srcObj.parentNode.innerHTML="<img src=\"/skin/loading.gif\" align=\"absmiddle\" /> Loading summary...";
	sPR("/index.php","cmd=messagingfunction&handler=summaryOutput",rSC);
}
var editingObject=null;
var editingObjectContent=null;
function editThis(srcObj,id) {
	if (editingObject!=null) cancelEditing();
	val=srcObj.innerHTML;
	editingObject=srcObj.parentNode;
	editingObjectContent=editingObject.innerHTML;
	editingObject.innerHTML="<input id=\""+id+"\" type=\"text\" value=\""+val+"\" onkeydown=\"pressingEnterOrEscape(this,event,saveEditing,cancelEditing)\" /><img src=\"/skin/entesc.png\" style=\"position:absolute\" />";
	ob(id).focus();
}
function cancelEditing() {
	editingObject.innerHTML=editingObjectContent;
	editingObject=null;
	editingObjectContent=null;
}
function saveEditing(srcObj) {
	val=srcObj.value;
	id=srcObj.id;
	srcObj.disabled=true;
	vars="cmd=saveValue&detail="+id+"&value="+encodeUpload(val);
	sPR("/index.php",vars,editingSaved);
}
function editingSaved(reply) {
	if (editingObject!=null) {
		editingObject.innerHTML=reply;
		editingObject=null;
		editingObjectContent=null;
	}
}
var removingBlock=null;
function removeBlock(id,name) {
	if (window.confirm("Are you sure you wish to remove the "+name+" section?")) {
		fader(ob("block"+id),50);
		vars="cmd=removeBlock&id="+id;
		removingBlock=id;
		sPR("/index.php",vars,blockRemoved);
	}
}
function blockRemoved(reply) {
	if (reply=="ok") {
		removeTheNode("block"+removingBlock);
	}else{
		fader(ob("block"+removingBlock),100);
	}
}
function setBlockDetail(srcObj,field,value,id) {
	srcObj.parentNode.innerHTML="<img src=\"/skin/loading.gif\" align=\"absmiddle\" />&nbsp;Saving...";
	vars="cmd=setBlockDetail&field="+field+"&val="+value+"&blockid="+id;
	sPR("/index.php",vars,rSC);
}
function editLink(srcObj,id) {
	editdescription="";
	edittitle="";
	if (div=ob("link"+id)) {
		divs=div.getElementsByTagName("DIV");
		linkdiv=null;
		for(i=0;i<divs.length;i++) if (divs[i].className=="links") linkdiv=divs[i];
		if (linkdiv!=null) {
			editdescription=linkdiv.title;
			h=linkdiv.getElementsByTagName("h2");
			if (h.length==0) h=linkdiv.getElementsByTagName("h3");
			if (h.length!=0) edittitle=h[0].innerHTML;
			imgtag=new RegExp(/<img[^>]*>/);
			if (imgtag.test(edittitle)) edittitle=edittitle.replace(/<img[^>]*>/,'');
			edittitle=edittitle.replace(/^\s+|\s+$/g,"");
			imgs=linkdiv.getElementsByTagName("img");
			snapshot=imgs[0].src;
			snapshot=snapshot.replace("minisnapshot","snapshot");
			startFadeUp();
			ins="<img src=\""+snapshot+"\" /><br />";
			ins+="Title:<br /><input id=\"newTitle\" value=\""+edittitle+"\" style=\"width:270px\" onkeydown=\"return checkAlphaNumeric(event)\" /><br />";
			ins+="Description:<br /><textarea id=\"newDescription\" cols=\"42\" rows=\"5\" onkeydown=\"return checkAlphaNumeric(event)\">"+editdescription+"</textarea>";
			ins+="<center><div class=\"buttonDiv\" onclick=\"saveLinkEdit(this,"+id+")\">SAVE</div></center>";
			pRH(rRB("editLinkBox","Link details",ins,false,10,300,null,true,false),document.body);
			insert=ob("editLinkBox");
			cO(insert);
		}
	}
}
var savingLink=null;
function saveLinkEdit(srcObj,id) {
	savingLink=id;
	edittitle=ob("newTitle").value;
	editdescription=ob("newDescription").value;
	vars="cmd=saveLinkEdit&linkid="+id+"&title="+encodeUpload(edittitle)+"&description="+encodeUpload(editdescription);
	srcObj.parentNode.innerHTML="<img src=\"/skin/loading.gif\" align=\"absmiddle\" />&nbsp;Saving...";
	sPR("/index.php",vars,linkEditSaved);
}
function linkEditSaved(reply) {
	id=savingLink;
	details=reply.split("<insert>");
	if (details.length==1) {
		alert(reply);
	}else{
		if (div=ob("link"+id)) {
			divs=div.getElementsByTagName("DIV");
			linkdiv=null;
			for(i=0;i<divs.length;i++) if (divs[i].className=="links") linkdiv=divs[i];
			if (linkdiv!=null) {
				linkdiv.title=details[1];
				h=linkdiv.getElementsByTagName("h2");
				if (h.length!=0) {
					h[0].innerHTML=details[0];
				}else{
					h=linkdiv.getElementsByTagName("h3");
					if (h.length!=0) h[0].innerHTML=details[0];
				}
			}
		}
	}
	removeTheNode("editLinkBox");
	startFadeDown();
}