var cleanUp = new Object();

cleanUp.getElementRange = function(pos)
{
	var i, str = 0, strc = 0, c, p_s = -1, p_e = -1, d;
	for(i = pos + 1; i < cleanUp.text_len; i ++)
	{
		c = cleanUp.s.charAt(i);
		switch(c)
		{
			case '\\':
				i ++;
			break;
			case '\"':
				if(str == 0)
				{
					str = 1;
					strc = 34;
				}
				else
				{
					if(strc == 34)
						str = 0;
				}
			break;
			case '\'':
				if(str == 0)
				{
					str = 1;
					strc = 39;
				}
				else
				{
					if(strc == 39)
						str = 0;
				}
			break;
			case '<': 
				if(str == 0)
					return [i, i];
			break;
			case '>':
				if(str == 0)
				{
					p_e = i;
					i = cleanUp.text_len;
				}
			break;
		}
	}
	for(i = pos; i >= 0; i --)
	{
		c = cleanUp.s.charAt(i);
		if(i > 0)
			d = cleanUp.s.charAt(i - 1);
		else
			d = '';
		if(d == '\\')
			i -= 2;
		else
		switch(c)
		{
			case '\"':
				if(str == 0)
				{
					str = 1;
					strc = 34;
				}
				else
				{
					if(strc == 34)
						str = 0;
				}
			break;
			case '\'':
				if(str == 0)
				{
					str = 1;
					strc = 39;
				}
				else
				{
					if(strc == 39)
						str = 0;
				}
			break;
			case '>': 
				if(str == 0)
					return [i, i];
			break;
			case '<':
				if(str == 0)
				{
					p_s = i;
					i = 0;
				}
			break;
		}
	}
	return [p_s, p_e];
}

cleanUp.xsplit = function(sep, s)
{
	var i, str = 0, strc = 0, c, rt = [], t = '';
	var slen = s.length, seplen = sep.length;
	rt.push(s);
	for(i = 0; i < slen; i ++)
	{
		if(str == 0 && s.substring(i, i + seplen) == sep)
		{
			if(t != '')
			{
				rt.push(t);
				t = '';
			}
			i += seplen;
		}
		c = s.charAt(i);
		switch(c)
		{
			case '\\':
				i ++;
				t = t + c;
				t = t + s.charAt(i);
			break;
			case '\"':
				if(str == 0)
				{
					str = 1;
					strc = 34;
				}
				else
				{
					if(strc == 34)
						str = 0;
				}
				t = t + c;
			break;
			case '\'':
				if(str == 0)
				{
					str = 1;
					strc = 39;
				}
				else
				{
					if(strc == 39)
						str = 0;
				}
				t = t + c;
			break;
			case '<': 
				if(str != 0)
					t = t + c;
			break;
			case '>':
				if(str != 0)
					t = t + c;
			break;
			default:
				t = t + c;
		}
	}
	if(t != '')
		rt.push(t);
	return rt;
}

cleanUp.analyzeTag = function(p_se)
{
	var rt = [], t = '';
	var i, str = 0, strc = 0, c;
	for(i = p_se[0]; i <= p_se[1]; i ++)
	{
		c = cleanUp.s.charAt(i);
		switch(c)
		{
			case '\\':
				i ++;
				t = t + c;
				t = t + cleanUp.s.charAt(i);
			break;
			case '\"':
				if(str == 0)
				{
					str = 1;
					strc = 34;
				}
				else
				{
					if(strc == 34)
						str = 0;
				}
				t = t + c;
			break;
			case '\'':
				if(str == 0)
				{
					str = 1;
					strc = 39;
				}
				else
				{
					if(strc == 39)
						str = 0;
				}
				t = t + c;
			break;
			case '<': 
				if(str != 0)
					t = t + c;
				else
					if(t != '')
					{
						rt.push(cleanUp.xsplit('=', t));
						t = '';
					}
			break;
			case '>':
				if(str != 0)
					t = t + c;
				else
					if(t != '')
					{
						rt.push(cleanUp.xsplit('=', t));
						t = '';
					}
			break;
			case ' ':
			case '\n':
			case '\r':
			case '\t':
				if(t != '')
				{
					rt.push(cleanUp.xsplit('=', t));
					t = '';
				}
			break;
			default:
				t = t + c;
		}
	}
	
	if(t != '')
		rt.push(cleanUp.xsplit('=', t));

	return rt;
}

cleanUp.init = function(t)
{
	cleanUp.s = t;
	cleanUp.text_len = t.length;
}

cleanUp.main = function(t)
{
	cleanUp.init(t);
	
	var allowed = [
		['br'],
		['br/'],
		['a', 'href', 'target'],
		['/a'],
		['p', 'align'],
		['/p'],
		['b'],
		['/b'],
		['i'],
		['/i'],
		['u'],
		['/u'],
		['strong'],
		['/strong'],
		['em'],
		['table', 'bgcolor', 'cellpadding', 'cellspacing', 'border'],
		['/table'],
		['tr', 'valign'],
		['/tr'],
		['td', 'bgcolor', 'nowrap'],
		['/td'],
		['/em'],
		['ul'],
		['/ul'],
		['ol'],
		['/ol'],
		['li'],
		['/li'],
		['img', 'src', 'title', 'alt', 'width', 'height', 'align'],
		['h1'], ['/h1'],
		['h2'], ['/h2'],
		['h3'], ['/h3'],
		['h4'], ['/h4'],
		['h5'], ['/h5']
	];
		
	var i, j, tlen, se, rt = '', tags, c, k, l, tagAllowed, tmp;
	
	tlen = t.length;
	
	for(i = 0; i < tlen; i ++)
	{
		c = t.charAt(i);
		if(c == '<')
		{
			se = cleanUp.getElementRange(i);
			tags = cleanUp.analyzeTag(se);
			
			tagAllowed = false;
			for(k = 0; k < allowed.length; k ++)
			{
				//alert(allowed[k][0].toUpperCase() == tags[0][1]
				if(allowed[k][0].toUpperCase() == tags[0][1].toUpperCase())
				{
					tagAllowed = true;
					tmp = [allowed[k][0]];
					break;
				}
			}
			if(tagAllowed)
			{
				for(j = 1; j < tags.length; j ++)
					for(l = 1; l < allowed[k].length; l ++)
						if(tags[j][1].toUpperCase() == allowed[k][l].toUpperCase())
							tmp.push(tags[l][0]);
				rt = rt + '<' + tmp.join(' ') + '>';
			}
			i = se[1];
		}
		else
			rt = rt + c;
	}
	return rt;
}

var dynEditFields = new Array();

function dynEditPrepareIFrame(id)
{
	var iframeContent;
	
	iframeContent  = "<html>\n";
	iframeContent += "<head>\n";
	iframeContent += "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />\n";
	iframeContent += "<style>\nhtml, body {\n\tborder: 0px;\n\tbackground-color: white;\n}\ntd {\n\tborder: 1px dotted #CCCCCC;\n}\n</style>\n";
	iframeContent += "</head>\n";
	iframeContent += "<body leftmargin=\"1\" topmargin=\"1\" marginwidth=\"1\" marginheight=\"1\">\n";
	iframeContent += document.getElementById(id).value;
	iframeContent += "</body>";
	iframeContent += "</html>";
	
	var editor = document.getElementById('def_if_' + id).contentWindow.document;
	editor.open();
	editor.write(iframeContent);
	editor.close();
	dynEditFields.push(id);
}

function dynEditPostponed(id)
{
	var editor = document.getElementById('def_if_' + id).contentWindow.document;
	try { editor.body.contentEditable = true; } catch(exception){}
	editor.designMode = 'on';
}

function dynEditBeforeSubmit()
{
	var xframe, xfield, xnme;
	var a;
	for(a = 0; a < dynEditFields.length; a ++)
	{
		xnme = dynEditFields[a];
		xframe = document.getElementById('def_if_' + xnme).contentWindow.document;
		xfield = document.getElementById(xnme);
		xfield.value = xframe.body.innerHTML;
	}
}

function dynEditInsertImage(xnme, xpage, xid)
{
	width = 800;
	height = 500;
	wnd = window.open('fmt.image.php?field=def_if_' + xnme + '&page=' + xpage + '&id=' + xid, '', 'left=' + (screen.availWidth-10-width)/2 + ',top=' + (screen.availHeight-30-height)/2 + ',scrollbars=0,resizable=1,width=' + width + ',height=' + height + ',toolbar=0,location=0,status=0,menubar=0');
}

function dynEditInsertKniha(xnme)
{
	width = 800;
	height = 500;
	wnd = window.open('fmt.kniha.php?field=def_if_' + xnme, '', 'left=' + (screen.availWidth-10-width)/2 + ',top=' + (screen.availHeight-30-height)/2 + ',scrollbars=0,resizable=1,width=' + width + ',height=' + height + ',toolbar=0,location=0,status=0,menubar=0');
}

function dynEditCreateLink(xnme)
{
	width = 480;
	height = 250;
	wnd = window.open('fmt.link.php?field=def_if_' + xnme, '', 'left=' + (screen.availWidth-10-width)/2 + ',top=' + (screen.availHeight-30-height)/2 + ',scrollbars=0,resizable=0,width=' + width + ',height=' + height + ',toolbar=0,location=0,status=0,menubar=0');
}

function dynEditPasteWord(xnme)
{
	width = 520;
	height = 520;
	wnd = window.open('fmt.paste.php?field=def_if_' + xnme, '', 'left=' + (screen.availWidth-10-width)/2 + ',top=' + (screen.availHeight-30-height)/2 + ',scrollbars=0,resizable=1,width=' + width + ',height=' + height + ',toolbar=0,location=0,status=0,menubar=0');
}

function dynEditInsTbl()
{
	var xnme = dynEditFields[dynEditFields.length - 1];
	var editor = document.getElementById('def_if_' + xnme);
	var img = editor.contentWindow.document.createElement('span');
	img.innerHTML = "<table cellspacing='0' cellpadding='0' border='0' width='480'><tr><td valign='middle'>[image]</td><td width='6'>&nbsp;</td><td valign='top'>[text]</td></tr></table>";
	
	FireFox_Insert(editor.contentWindow, img);
	editor.focus();
}

function dynEditInsTbl2()
{
	var xnme = dynEditFields[dynEditFields.length - 1];
	var editor = document.getElementById('def_if_' + xnme);
	var img = editor.contentWindow.document.createElement('span');
	
	var xsp = window.prompt('cellspacing=', '3');
	var xpd = window.prompt('cellpadding=', '0');
	var xbd = window.prompt('border=', '0');
	var xwd = window.prompt('([480] OR [100%]) width=', '480');
	var xrw = parseInt(window.prompt('# of ROWS', '1'));
	var xcl = parseInt(window.prompt('# of COLS', '2'));
	var xva = window.prompt('valign ([top], [middle], [bottom]', 'middle');
	var xi, xj, xt;
	
	xt = "<table cellspacing='" + xsp + "' cellpadding='" + xpd + "' border='" + xbd + "' width='" + xwd + "'>";
	for(xi = 0; xi < xrw; xi ++)
	{
		xt = xt + '<tr>';
		for(xj = 0; xj < xcl; xj ++)
			xt = xt + "<td valign='" + xva + "'>a</td>";
		xt = xt + '</tr>';
	}
	xt = xt + '</table>';
	img.innerHTML = xt;
	
	FireFox_Insert(editor.contentWindow, img);
	editor.focus();
}

function dynEditFormat(cmd, optn, optn2)
{
	try {
	var xnme = dynEditFields[dynEditFields.length - 1];
	var editor = document.getElementById('def_if_' + xnme);
	
	switch(cmd)
	{
		case 'insertimage':
			dynEditInsertImage(xnme, optn, optn2);
		break;
		case 'InsertKniha':
			dynEditInsertKniha(xnme);
		break;
		case 'CreateLink':
			dynEditCreateLink(xnme);
		break;
		case 'pasteword':
			dynEditPasteWord(xnme);
		break;
		case 'insertflash':
		break;
		default:
			editor.contentWindow.document.execCommand(cmd, false, optn);
			editor.contentWindow.focus();
		break;
		case 'InsertTbl':
			dynEditInsTbl();
		break;
		case 'InsertTbl2':
			dynEditInsTbl2();
		break;
	}
	} catch(exception){}
}

function format_calendarClick(field, value, xpage, xid)
{
	width = 280;
	height = 260;
	wnd = window.open('fmt.calendar.php?field=' + field + '&value=' + value, '', 'left=' + (screen.availWidth-10-width)/2 + ',top=' + (screen.availHeight-30-height)/2 + ',scrollbars=0,resizable=0,width=' + width + ',height=' + height + ',toolbar=0,location=0,status=0,menubar=0');
}

function FireFox_Insert(docWindow, insertElement)
{
	var area = docWindow.getSelection();
	var range = area.getRangeAt(0);
	var editorPosition = range.startContainer;
	var pos = range.startOffset;
	
	area.removeAllRanges();
	range.deleteContents();
	range = document.createRange();
	
	if (editorPosition.nodeType==3 && insertElement.nodeType==3)
	{
		editorPosition.insertData(pos, insertElement.nodeValue);
		try{range.setEnd(editorPosition, pos + insertElement.length);}catch(exception){}
		try{range.setStart(editorPosition, pos + insertElement.length);}catch(exception){}
	
	}
	else
	{
		var afterElement;
		if (editorPosition.nodeType == 3)
		{		
			var textElement = editorPosition;
			var text = textElement.nodeValue;
			var textBefore = text.substr(0,pos);
			var textAfter = text.substr(pos);
			var beforeNode = document.createTextNode(textBefore);
			var afterElement = document.createTextNode(textAfter);
			
			editorPosition = textElement.parentNode;
			editorPosition.insertBefore(afterElement, textElement);
			editorPosition.insertBefore(insertElement, afterElement);
			editorPosition.insertBefore(beforeNode, insertElement);
			editorPosition.removeChild(textElement);
		}
		else
		{
			afterElement = editorPosition.childNodes[pos];
			editorPosition.insertBefore(insertElement, afterElement);
		}
		try{range.setEnd(afterElement, 0);}catch(exception){}
		try{range.setStart(afterElement, 0);}catch(exception){}
	}
	area.removeAllRanges();
	area.addRange(range);
}

///////////////////////
// AUTO SCROLL

var scrolls = new Object();
scrolls.data = new Array();
scrolls.pos = 0;

function autoScroll(text, height)
{
	var xo = new Object;
	xo.data = text.split('###');
	xo.id = scrolls.id;
	xo.cnt = xo.data.length;
	xo.pos = Math.round(Math.random() * (xo.cnt - 1));
	scrolls.data.push(xo);
	scrolls.id ++;
	document.write("<div id='xlasc_" + xo.id + "' class='xlasc1' style='height: " + height + "px;'></div>");
}

function autoScrollScr()
{
	var i, o, t;
	if(scrolls.pos <= 6 || scrolls.pos >= 44)
	{
		t = scrolls.pos % 2 == 0 ? 'xlasc1' : 'xlasc2';
		for(i in scrolls.data)
		{
			o = scrolls.data[i];
			document.getElementById('xlasc_' + o.id).className = t;
		}
	}
	if(scrolls.pos >= 50)
	{
		scrolls.pos = 0;
		for(i in scrolls.data)
		{
			o = scrolls.data[i];
			t = o.data[o.pos];
			o.pos ++;
			if(o.pos == o.cnt)
				o.pos = 0;
			document.getElementById('xlasc_' + o.id).innerHTML = t;
		}
	}
	scrolls.pos ++;
}

setInterval('autoScrollScr();', 50);

var autoImagesI;

autoImagesI = 0;

function xge(i)
{
	return document.getElementById(i);
}

function xgi()
{
	return document.getElementById('xlimg_' + autoImagesI);
}

function autoImages()
{
	var o1, o2;
	o1 = xgi();
	autoImagesI ++;
	o2 = xgi();
	if(o2 == null)
	{
		autoImagesI = 0;
		o2 = xgi();
	}
	if(o1 != null)
		o1.style.display = 'none';
	if(o2 != null)
		o2.style.display = '';
}

setInterval('autoImages();', 100);

function findAbsPos(xobj)
{
	var curleft = curtop = 0;
	var obj = xobj;
	if (obj != null && obj.offsetParent)
	{
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft, curtop, (xobj != null ? xobj.offsetWidth : 0), (xobj != null ? xobj.offsetHeight : 0)];
}

function findScreenPos(xobj)
{
	var curleft = curtop = 0;
	var obj = xobj;
	if (obj != null && obj.offsetParent)
	{
		do {
			curleft += obj.scrollLeft;
			curtop += obj.scrollTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft, curtop, (xobj != null ? xobj.offsetWidth : 0), (xobj != null ? xobj.offsetHeight : 0)];
}

var __is_ie;
__is_ie = (navigator.appName.indexOf('Microsoft') != -1);
