var id = 'advexpad_edit';
var name = 'advexpad_edit';
var elem = 'advexpad_edit_tds';
var ifr = '';
var inits = new Array();
var bgcolor = new Array();
var count = 0;
var numberz = new Array(149, 169, 174, 9986, 9993, 9990, 10132, 10004, 10008, 10025, 10026, 10027, 10060, 10062, 10067, 10068, 10112, 10113, 10114, 10115, 10116, 10117, 10118, 10119, 10120, 10121, 9754, 9755, 9756, 9757, 9758, 9759, 10122, 10123, 10124, 10125, 10126, 10127, 10128, 10129, 10130, 10131);
var linkc = 0;

window.onload = function initialize()
{
	var i = 0;
	for (i = 0; i < inits.length; i++)
	{
		init(inits[i], bgcolor[i]);
	}
}

function setifr(path)
{
	ifr = document.getElementById(path).contentWindow.document;
}

function getScreenCenterY()
{
	var y = 0;
	y = getScrollOffset() + (getInnerHeight() / 2);
	return(y);
}

function getScreenCenterX()
{
	return(document.body.clientWidth / 2);
}

function getInnerHeight()
{
	var y;
	if (self.innerHeight)
	{
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
	{
		y = document.documentElement.clientHeight;
	}
	else if (document.body)
	{
		y = document.body.clientHeight;
	}
	return y;
}

function getScrollOffset()
{
	var y;
	if (self.pageYOffset)
	{
		y = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
	{
		y = document.documentElement.scrollTop;
	}
	else if (document.body)
	{
		y = document.body.scrollTop;
	}
	return y;
}

function urlform(o, name, state, closing)
{
	var tu = false;
	if (closing !== true)
	{
		var data = document.getElementById('_a_data_' + name).innerHTML.split(',');
		if (data[0] !== 'undefined')
		{
			tu = true;
			document.getElementById('url_field_' + name).value = data[0];
		}
		else
		{
			document.getElementById('url_field_' + name).value = '';
		}
		if (data[1] !== 'undefined')
		{
			tu = true;
			document.getElementById('url_name_' + name).value = data[1];
		}
		else
		{
			document.getElementById('url_name_' + name).value = '';
		}
		if (data[2] !== 'undefined')
		{
			tu = true;
			document.getElementById('url_target_' + name).value = data[2];
		}
		else
		{
			document.getElementById('url_target_' + name).value = 0;
		}
		if (tu)
		{
			document.getElementById('url_update_' + name).value = data[3];
		}
		else
		{
			document.getElementById('url_update_' + name).value = 'NOT';
		}
	}
	var ksx = document.getElementById('urlform_' + name).style;
	ksx.left = (getScreenCenterX() - 100) + 'px';
	ksx.top = (getScreenCenterY() - 100) + 'px';
	var grs = document.getElementById('grosse_' + name).style;
	grs.left = '0px';
	grs.top = '0px';
	grs.width = (screen.width - 24) + 'px';
	grs.height = (screen.height * 2) + 'px';
	ksx.display = state;
	grs.display = state;
	return 8 >> 1 | o | 1 << 8;
}

function sbl(name, mailto)
{
	var mail = '';
	if (mailto)
	{
		mail = 'mailto:';
	}
	var update = document.getElementById('url_update_' + name).value;
	var updating = (update !== 'NOT') && (update != 'undefined');
	var href = document.getElementById('url_field_' + name).value;
	if (href != '')
	{
		if (href.indexOf('mailto:') == 0)
		{
			href = href.substr(7);
		}
		if (!updating)
		{
			href = ' href="' + mail + href + '"';
		}
	}
	var nm = document.getElementById('url_name_' + name).value;
	if (nm != '')
	{
		if (!updating)
		{
			nm = ' name="' + nm + '"';
		}
	}
	var targ = document.getElementById('url_target_' + name).value;
	if (targ != '')
	{
		if (!updating)
		{
			targ = ' target="' + targ + '"';
		}
	}
	if (updating)
	{
		var il = window.frames['advexpad_edit_' + name].document.getElementById(name + '_' + update);
		il.setAttribute('href', mail + href);
		il.setAttribute('name', nm);
		il.setAttribute('target', targ);
	}
	else
	{
		formatSelection('<a' + href + nm + targ + '>', '</a>', name)
	}
	urlform(1 << 0 >> 1, name, 'none', true);
}

function restoreAll()
{
	var i = 0;
	for (i = 0; i < inits.length; i++)
	{
		document.getElementById(elem + '_' + inits[i]).value = document.getElementById(id + '_' + inits[i]).contentWindow.document.body.innerHTML;
	}
}

function init(avxp, bgcolor)
{
	var i = 0;
	var id1 = '';
	var chrx = '';
	document.getElementById('palF_' + avxp).innerHTML = colorTable('FC', 'ForeColor', avxp);
	document.getElementById('palB_' + avxp).innerHTML = colorTable('BC', 'HiliteColor', avxp);
	document.getElementById('chrz_' + avxp).innerHTML = charTable(avxp);
	if (IE())
	{
		for (i = 0; i < 256; i++)
		{
			id1 =  '_col' + i;
			document.getElementById('FC' + id1).value = '';
			document.getElementById('BC' + id1).value = '';
		}
		for (i = 0; i < numberz.length; i++)
		{
			chrx = String.fromCharCode(numberz[i]);
			id1 = 'chr' + i;
			document.getElementById(id1).value = chrx;
		}
	}
	window.frames['advexpad_edit_' + avxp].document.onclick=function(ev)
	{
		ev = (ev || event);
		el = ev.srcElement || ev.target;
		if (el)
		{
			if (el.target)
			{
				linkc++;
				el.id = avxp + '_' + linkc;
				document.getElementById('_a_data_' + avxp).innerHTML = el.href + ',' + el.name + ',' + el.target + ',' + linkc;
			}
		}
	}
	window.frames[name + '_' + avxp].document.body.contentEditable = true;
	window.frames[name + '_' + avxp].document.body.bgColor = bgcolor;
	document.getElementById(id + '_' + avxp).contentWindow.document.body.innerHTML = document.getElementById(elem + '_' + avxp).value;
	setifr(id + '_' + avxp);
	if (navigator.appName == 'Netscape')
	{
		ifr.execCommand('InsertHTML', false, '<a name="__default_inserthtml_tag_for_firefox"></a>');
		ifr.execCommand('Undo', false, null);
	}
}

function toggleHeight(element)
{
	var help_element = element + '_help';
	if (document.getElementById(element).style.display == 'block')
	{
		document.getElementById(element).style.display = 'none';
		document.getElementById(help_element).style.display = 'none';
	}
	else
	{
		document.getElementById(element).style.display = 'block';
		document.getElementById(help_element).style.display = 'block';
	}
}

function close_these(element1, element2)
{
	var elements = new Array(element1, element2);
	for(var i in elements)
	{
		var help_e = elements[i] + '_help';
		document.getElementById(elements[i]).style.display = 'none';
		document.getElementById(help_e).style.display = 'none';
	}
}

function tagPaste(command, param, avxp)
{
	setifr(id + '_' + avxp);
	if (IE())
	{
		var xxx = window.frames[name + '_' + avxp].document.selection.createRange();
		var sel = __ie_getSelection(avxp);
		if (sel)
		{
			switch (command)
			{
				case 'HiliteColor':
					xxx.pasteHTML('<span style="background-color: ' + param + '">' + sel + '</span>');
				break;
				case 'StrikeTrough':
					xxx.pasteHTML('<s>' + sel + '</s>');
				break;
				case 'FormatBlock':
					xxx.pasteHTML('<' + param + '>' + sel + '</' + param + '>');
				break;
				case 'InsertHTML':
					xxx.pasteHTML(param);
				break;
				case 'InsertImage':
					ifr.execCommand('insertimage', false, param);
				break;
				default: ifr.execCommand(command, false, param);
			}
		}
	}
	else
	{
		ifr.execCommand(command, false, param);
	}
}

function IE()
{
	return (navigator.app_name == 'Microsoft Internet Explorer');
}

function __ie_getSelection(avxp, html)
{
	var selText = '';
	var iframeWindow = document.getElementById(id + '_' + avxp).contentWindow;
	if (iframeWindow.getSelection)
	{
		selText = iframeWindow.getSelection() + '';
	}
	else
	{
		if (iframeWindow.document.selection)
		{
			if (html)
			{
				selText = iframeWindow.document.selection.createRange().htmlText;
			}
			else
			{
				selText = iframeWindow.document.selection.createRange().text;
			}
		}
	}
	return selText;
}

function iframeSel(name)
{
	return document.getElementById(name).contentWindow.getSelection();
}

function _getSelection(avxp, html)
{
	if (html)
	{
		var selection = document.getElementById(id + '_' + avxp).contentWindow.getSelection();
		var range = selection.getRangeAt(0);
		var div = document.createElement("div");
		div.appendChild(range.cloneContents());
		return div.innerHTML;
	}
	else
	{
		return document.getElementById(id + '_' + avxp).contentWindow.getSelection();
	}
}

function insert_html(html, avxp)
{
	var random_string = "insert_html_" + Math.round(Math.random()*16777216);
	window.frames[name + '_' + avxp].document.execCommand("insertimage", false, random_string);
	var pat = new RegExp("<[^<]*" + random_string + "[^>]*>");
	var current_html = window.frames[name + '_' + avxp].document.body.innerHTML = window.frames[name + '_' + avxp].document.body.innerHTML.replace(pat, html);
}

function formatSelection(open, close, avxp)
{
	if (IE())
	{
		var xxx = window.frames[name + '_' + avxp].document.selection.createRange();
		var sel = __ie_getSelection(avxp, true);
		if (sel)
		{
			var bxr = open + sel + close;
			xxx.pasteHTML(bxr);
		}
	}
	else
	{
		var sel = _getSelection(avxp, true);
		if (sel)
		{
			var bxr = open + sel + close;
			insert_html(bxr, avxp);
		}
	}
}

function intToHex(value, leadZeros)
{
	var charz = '0123456789ABCDEF';
	var i = 0;
	var result = '';
	for (i = 0; i < leadZeros; i++)
	{
		result = charz.charAt(value & 15) + result;
		value >>= 4;
	}
	return result;
}

function hexToInt(value)
{
	var charz = '0123456789ABCDEF';
	result = 0;
	for (i = 0; i < value.length; i++)
	{
		result <<= 4;
		result |= charz.indexOf(value.charAt(i));
	}
	return result;
}

function hoover(element)
{
	var obj = document.getElementById(element).style;
	obj.borderBottomColor = '#C0C0C0';
	obj.borderRightColor = '#C0C0C0';
	obj.borderLeftColor = '#000000';
	obj.borderTopColor = '#000000';
}

function disappear(element)
{
	var obj = document.getElementById(element).style;
	obj.borderBottomColor = '#000000';
	obj.borderRightColor = '#000000';
	obj.borderLeftColor = '#C0C0C0';
	obj.borderTopColor = '#C0C0C0';
}

function colorTable(name1, command, avxp)
{
	var result = '<span id="editcode" style="position: absolute; top: -20px;"><input type="text" name="htmlcode' + name1 + '_' + avxp + '" id="htmlcode' + name1 + '_' + avxp + '" value="" style="width: 120px;"><input type="button" name="Submit" value="ok"  style="width: 30px;" onclick="tagPaste(\'' + command + '\', document.getElementById(\'htmlcode' + name1 + '_' + avxp + '\').value, \'' + avxp + '\')"></span>';
	var color = '';
	var id1 = '';
	var i = 0;
	var r = 0;
	var g = 0;
	var b = 0;
	var ptr = -1;
	var ir = new Array(1, 1, 1, 1, 3, 3, 3, 2, 0, 0, 0, 0, 0, 2, 3, 3);
	var ig = new Array(1, 1, 1, 1, 0, 2, 3, 3, 3, 3, 3, 2, 0, 0, 0, 0);
	var ib = new Array(1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 3, 3, 3, 3, 3, 2);
	var incr = new Array(0, 4, 9, 14);
	var incg = new Array(0, 4, 7, 14);
	var incb = new Array(0, 4, 10, 14);
	var str = new Array(0, 0, 17, 34);
	for (i = 0; i < 256; i++)
	{
		if ((i & 15) == 0)
		{
			ptr++;
			if (i > 63)
			{
				r = str[ir[ptr]];
				g = str[ig[ptr]];
				b = str[ib[ptr]];
			}
		}
		color = intToHex((b | (g << 8) | (r << 16)), 6);
		id1 = name1 + '_col' + i + avxp;
		if (IE())
		{
			result += '<input id="' + id1 + '" type="button" onclick="tagPaste(\'' + command + '\', \'#' + color + '\', \'' + avxp + '\')" class="pad_e" style="background-color: #' + color + '; top: ' + (18 * (i >> 4)) + 'px; left: ' + (18 * (i & 15)) + 'px; value="" />';
		}
		else
		{
			result += '<span id="' + id1 + '" onmouseover="hoover(\'' + id1 + '\')" onmouseout="disappear(\'' + id1 + '\')" onclick="document.getElementById(\'htmlcode' + name1 + '_' + avxp + '\').value=\'#' + color + '\'" class="pad_e" style="background-color: #' + color + '; top: ' + (18 * (i >> 4)) + 'px; left: ' + (18 * (i & 15)) + 'px;"></span>';
		}
		r += incr[ir[ptr]];
		g += incg[ig[ptr]];
		b += incb[ib[ptr]];
	}
	return result;
}

function charTable(avxp)
{
	var result = '';
	var i = 0;
	var id1 = '';
	var chrx = '';
	for (i = 0; i < numberz.length; i++)
	{
		chrx = '&#' + numberz[i] + ';';
		id1 = 'chr' + i + avxp;
		if (IE())
		{
			result += '<input id="' + id1 + '" type="button" onclick="tagPaste(\'InsertHTML\', \'' + chrx + '\', \'' + avxp + '\')" class="pad_e" style="top: ' + (18 * (i >> 4)) + 'px; left: ' + (18 * (i & 15)) + 'px; value="" />';
		}
		else
		{
			result += '<span id="' + id1 + '" onmouseover="hoover(\'' + id1 + '\')" onclick="tagPaste(\'InsertHTML\', \'' + chrx + '\', \'' + avxp + '\')" onmouseout="disappear(\'' + id1 + '\')" class="pad_e" style="background-color: #c0c0c0; top: ' + (18 * (i >> 4)) + 'px; left: ' + (18 * (i & 15)) + 'px;">' + chrx + '</span>';
		}
	}
	return result;
}

function colorPicker(name)
{
	var result = '';
	var color = '';
	var id1 = '';
	var i = 0;
	var r = 0;
	var g = 0;
	var b = 0;
	var ptr = -1;
	var ir = new Array(1, 1, 1, 1, 3, 3, 3, 2, 0, 0, 0, 0, 0, 2, 3, 3);
	var ig = new Array(1, 1, 1, 1, 0, 2, 3, 3, 3, 3, 3, 2, 0, 0, 0, 0);
	var ib = new Array(1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 3, 3, 3, 3, 3, 2);
	var incr = new Array(0, 4, 9, 14);
	var incg = new Array(0, 4, 7, 14);
	var incb = new Array(0, 4, 10, 14);
	var str = new Array(0, 0, 17, 34);
	for (i = 0; i < 256; i++)
	{
		if ((i & 15) == 0)
		{
			ptr++;
			if (i > 63)
			{
				r = str[ir[ptr]];
				g = str[ig[ptr]];
				b = str[ib[ptr]];
			}
		}
		color = intToHex((b | (g << 8) | (r << 16)), 6);
		id1 = name + '_col' + i;
		if (IE())
		{
			result += '<input id="' + id1 + '" type="button" onclick="document.getElementById(\'colorbutton\').style.color=\'#' + color + '\'; document.getElementById(\'colorcode\').value = \'#' + color + '\';document.getElementById(\'palette\').style.display=\'none\';" class="pad_e" style="background-color: #' + color + '; top: ' + (18 * (i >> 4)) + 'px; left: ' + (18 * (i & 15)) + 'px; value="" />';
		}
		else
		{
			result += '<span id="' + id1 + '" onmouseover="hoover(\'' + id1 + '\')" onmouseout="disappear(\'' + id1 + '\')" onclick="document.getElementById(\'colorbutton\').style.color=\'#' + color + '\'; document.getElementById(\'colorcode\').value = \'#' + color + '\';document.getElementById(\'palette\').style.display=\'none\';" class="pad_e" style="background-color: #' + color + '; top: ' + (18 * (i >> 4)) + 'px; left: ' + (18 * (i & 15)) + 'px;"></span>';
		}
		r += incr[ir[ptr]];
		g += incg[ig[ptr]];
		b += incb[ib[ptr]];
	}
	return result;
}


