//Generic values
var isIE = 0;
var isOpera = 0;
var isFirefox =0;
switch(navigator.appName) {
	case "Microsoft Internet Explorer": isIE = 1; break;
	case "Opera":                       isOpera = 1; break;
	case "Netscape":                    isFirefox = 1; break;
}
var thisSite = "http://"+document.domain;
darr = document.domain.split(".");
var domSite = darr[darr.length-2]+"."+darr[darr.length-1];
var baseSite = "http://"+domSite;
var iBytes = 0;

function showEl(elId, display) {
	if(!display) display="block";
	el = getEl(elId);
	if(el) el.style.display=display;
	return false;
}

function hideEl(elId) {
	getEl(elId).style.display="none";
	return false;
}

function getEl(elId) {
	return document.getElementById(elId);
}

function trim (str) {
	var str = str.replace(/^\s\s*/, ''),
	ws = /\s/,
	i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}

function disableButton(elId, disabled) {
	el = getEl(elId);
	if(!el) return false;
	el.disabled = disabled;
	el.className = "button"+(disabled?"disabled":"");
	return false;
}

function debugParams(obj, retr) {
	var pstr = "";

	for (i in obj) {
		pstr += "event." + i + "=" + obj[i] + "\n";
	}
	if(retr == -1) document.write(pstr);
	if(!retr) alert(pstr);
	else return pstr;
}

function makeInput(name, value, noid) {
	return "<input type='hidden' value='"+value+"' "+(noid?"":("id='"+name+"'"))+" name='"+name+"' />";
}

function randomBytes(len) {
	var randomchars = "01234567890ABCDEF";
	var randomstring = '';
	for (var i=0; i<len; i++) {
		var rnum = Math.floor(Math.random() * randomchars.length);
		randomstring += randomchars.substring(rnum,rnum+1);
	}
	return randomstring;
}

var iDeskCols = 16;
var iDeskRows = 20;
var bDeskEdit = false;
var iDeskEditPos = -1;
var strDesk;
var strNewChar;

function doInit() {
	setTimeout("processBytes()", 5);
	$("#bytes1").html(randomBytes(80));
	$("#bytes2").html(randomBytes(80));
	$(document.body).bind("mousemove", function(event) {
		if(iBytes<4) iBytes++;
	});
	strDesk = $("#chardesk").html();
	$("#chardesk").bind("click", function(event) {
		cpos = $("#console").position();
		mx = event.clientX - (cpos.left - 136);
		my = event.clientY - (cpos.top + 48);
		mc = Math.floor(mx / 8);
		mr = Math.floor(my / 16);
		pos = mr * (iDeskCols + 1) + mc;
		if(iDeskEditPos != pos) stopDeskEdit();

		if(!bDeskEdit) {
			iDeskEditPos = pos;
			inp = "<input id='newchar' value='"+strDesk.substr(pos, 1)+"' class='input charinput' maxlength='1' />";
			str = strDesk.substr(0, pos).replace(/ /g, "<br/>") + inp + strDesk.substr(pos + 1).replace(/ /g, "<br/>");
			str = str;
			$("#chardesk").html(str);
			$("#newchar").focus();
			$("#newchar").select();
			strNewChar = $("#newchar").val();
			bDeskEdit = true;
		}
	});
	$(document).bind("keyup", function(event) {
		if(bDeskEdit) {
			if(event.keyCode == 27) stopDeskEdit();
			if($("#newchar").val() != strNewChar) finishDeskEdit();
		}
	});
}

function finishDeskEdit() {
	setchar = $("#newchar").val();
	setchar = setchar.substr(0, 1);
	if(setchar == " " || !setchar) setchar = String.fromCharCode(160);
	str = strDesk.substr(0, pos).replace(/ /g, "<br/>") + setchar + strDesk.substr(pos + 1).replace(/ /g, "<br/>");
	$("#chardesk").html(str);
	strDesk = str.replace(/<br\/>/g, " ");
	bDeskEdit = false;
}

function stopDeskEdit() {
	bDeskEdit = false;
	$("#chardesk").html(strDesk);
}

function processBytes() {
	if(iBytes) {
		bts1 = getEl("bytes1");
		bts2 = getEl("bytes2");
		bts1.innerHTML = randomBytes(1)+bts1.innerHTML.substr(0,79);
		bts2.innerHTML = bts2.innerHTML.substr(1,80)+randomBytes(1);
		iBytes--;
	}
	setTimeout("processBytes()", 5);
}