
var ua=navigator.userAgent.toLowerCase();
var isIE=((ua.indexOf('msie')!=-1) && (ua.indexOf('opera')==-1) && (ua.indexOf('webtv')==-1));
var isGecko=(ua.indexOf('gecko')!=-1);
var isSafari=(ua.indexOf('safari')!=-1);

var timer;

var isDesignMode=false;
var XEditors=new Array();
var XEdProps=new Array();


	document.writeln('<link href="/css/xgui.css" rel="stylesheet" type="text/css" />');

	if (document.getElementById && document.designMode && !isSafari){
		isDesignMode=true;
	}


function writeXEdit(xid, sourceid, css, width, height, buttons) {
	var xlen=XEditors.length;
	if (isDesignMode) {
		XEditors[xlen]=new Array();
		XEditors[xlen][0]=xid;
		XEditors[xlen][1]=sourceid;
		writeXEditor(xid, width, height, buttons);
		initXEditor(xid,sourceid, css);
		window.setTimeout("startDesignMode("+xid+");",500);
		window.setTimeout("xinitEvents("+xid+");",600);
	} else {
		alert('XEdit do not support your browser !');
	}
}

/* GUI */


var pageStyles =[['p','Normal'], ['h3', 'Nadpis 1'], ['h4','Nadpis 2'], ['h5','Nadpis 3'], ['h6','Nadpis 4'], ['address','Adresa'],['pre','Format'],['p','Poznámka','remark'],['p','Červený','redtext']];

function writeXEditor(xid, width, height, buttons) {
	document.writeln('<table border="0" id="table_'+xid+'" class="xeditor" style="width:'+width+';" cellspacing="0" cellpadding="0">');
	if (buttons.indexOf('ccp')!=-1 || buttons.indexOf('sc')!=-1 || buttons.indexOf('link')!=-1 || buttons.indexOf('ihr')!=-1 || buttons.indexOf('tables')!=-1 || buttons.indexOf('all')!=-1) {
		document.writeln('<tr><td class="btnBar">');
		if (buttons.indexOf('ccp')!=-1 || buttons.indexOf('all')!=-1) {		//copy, paste, cut
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" onclick="pastetext(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_paste.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" onclick="pasteword(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_pasteword.gif" border="0" >');
		}
		if (buttons.indexOf('sc')!=-1 || buttons.indexOf('all')!=-1) {		//select, remove format
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" onclick="FormatText(\''+xid+'\',\'selectall\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_select_all.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" onclick="FormatText(\''+xid+'\',\'removeformat\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_rem_formatting.gif" border="0" >');
		}
		if (buttons.indexOf('link')!=-1 || buttons.indexOf('all')!=-1) {		//links
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="mklnk'+xid+'" onclick="makeLink(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_ins_link.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" onclick="FormatText(\''+xid+'\',\'unlink\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_rem_link.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="anchor'+xid+'" onclick="makeAnchor(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_anchor.gif" border="0" >');
		}
		if (buttons.indexOf('ihr')!=-1 || buttons.indexOf('all')!=-1) {
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="img'+xid+'" onclick="makeImage(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_ins_image.gif" border="0" >');
//			document.write('<img class="xguiBtnNormal" id="ads'+xid+'" onclick="makeAds(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_ins_ads.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" onclick="makeHr(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_rule.gif" border="0" >');
		}
		if (buttons.indexOf('tables')!=-1 || buttons.indexOf('all')!=-1) {
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="mktbl'+xid+'" onclick="makeTable(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_ins_table.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="chRow'+xid+'" onclick="changeRow(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_prop_row.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="chCell'+xid+'" onclick="changeCell(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_prop_cell.gif" border="0" >');
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="addRowB'+xid+'" onclick="addRowBefore(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_ins_row_before.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="addRowA'+xid+'" onclick="addRowAfter(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_ins_row_after.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="delRow'+xid+'" onclick="delRow(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_delete_row.gif" border="0" >');
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="addColB'+xid+'" onclick="addColBefore(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_ins_col_before.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="addColA'+xid+'" onclick="addColAfter(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_ins_col_after.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="delCol'+xid+'" onclick="delCol(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_delete_col.gif" border="0" >');
			if (isGecko) {
				document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
				document.write('<img class="xguiBtnNormal" id="mCells'+xid+'" onclick="mergeCells(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_merge_cells.gif" border="0" >');
				document.write('<img class="xguiBtnNormal" id="sCells'+xid+'" onclick="splitCells(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_split_cells.gif" border="0" >');
			}
			
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="toggleHtmlB'+xid+'" onclick="toggleHTML(\''+xid+'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_html.gif" border="0" >');
		}
		

		document.writeln('</td></tr>');
	}
	if (buttons.indexOf('all')!=-1 || buttons.indexOf('ft')!=-1 || buttons.indexOf('align')!=-1 || buttons.indexOf('indent')!=-1) {
		document.writeln('<tr><td class="btnBar">');
		if (buttons.indexOf('styles')!=-1 || buttons.indexOf('all')!=-1) {
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<select class="xstyleSelect" id="xStyle'+xid+'" onchange="FormatBlock('+xid+')">');
			for (i=0;i<pageStyles.length;i++) {
				if (pageStyles[i][0]!='a' && pageStyles[i][0]!='table') document.write('<option value="'+i+'">'+pageStyles[i][1]+'</option>');
			}
			document.write('</select>');
			//tu pride selectbox
		}
		if (buttons.indexOf('ft')!=-1 || buttons.indexOf('all')!=-1) {
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="strong'+xid+'" onclick="FormatText(\''+xid+'\',\'bold\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_bold.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="em'+xid+'" onclick="FormatText(\''+xid+'\',\'italic\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_italic.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="underl'+xid+'" onclick="FormatText(\''+xid+'\',\'underline\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_underline.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="strike'+xid+'"onclick="FormatText(\''+xid+'\',\'strikethrough\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_strikethrough.gif" border="0" >');
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="sup'+xid+'" onclick="FormatText(\''+xid+'\',\'superscript\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_sup.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="sub'+xid+'"onclick="FormatText(\''+xid+'\',\'subscript\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_sub.gif" border="0" >');
		}
		if (buttons.indexOf('align')!=-1 || buttons.indexOf('all')!=-1) {
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="Left'+xid+'" onclick="FormatText(\''+xid+'\',\'justifyLeft\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_left.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="Center'+xid+'" onclick="FormatText(\''+xid+'\',\'justifyCenter\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_center.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="Right'+xid+'" onclick="FormatText(\''+xid+'\',\'justifyRight\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_right.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="Justify'+xid+'" onclick="FormatText(\''+xid+'\',\'justifyFull\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_block.gif" border="0" >');
		}
		if (buttons.indexOf('indent')!=-1 || buttons.indexOf('all')!=-1) {
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="indent'+xid+'" onclick="FormatText(\''+xid+'\',\'indent\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_indent.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" onclick="FormatText(\''+xid+'\',\'outdent\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_outdent.gif" border="0" >');
		}
		if (buttons.indexOf('lists')!=-1 || buttons.indexOf('all')!=-1) {
			document.write('<img class="xspacer" src="/images/xedit/spacer.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="unorlist'+xid+'" onclick="FormatText(\''+xid+'\',\'InsertUnorderedList\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_bullist.gif" border="0" >');
			document.write('<img class="xguiBtnNormal" id="orlist'+xid+'" onclick="FormatText(\''+xid+'\',\'InsertOrderedList\',\'\');" onmouseover="btnClassChange(this, \'xguiBtnOver\')" onmouseout="btnClassChange(this, \'xguiBtnNormal\')" src="/images/xedit/icon_numlist.gif" border="0" >');
		}
		document.writeln('</td></tr>');
	}
	document.writeln('<tr><td><iframe id="xfrm'+xid+'" name="xfrm'+xid+'" style="border:0px;width:100%;height:'+height+';"></iframe></td></tr>');
	document.writeln('</table>');
}



function initXEditor(xid, sourceid, css) {
	window.clearTimeout(timer);
	var srcHtml='<html id="x'+xid+'">';
		srcHtml+='<head>';
		srcHtml+='<title>'+xid+'</title>';
		srcHtml+='<link media="screen" type="text/css" rel="stylesheet" href="/css/xeditable.css" />';
		if (css.length>0) srcHtml+='<link media="screen" type="text/css" rel="stylesheet" href="'+css+'" />';
		srcHtml+='</head>';
		srcHtml+='<body>';
		if (sourceid.length>0) srcHtml+=importloop(document.getElementById(sourceid).value);
		srcHtml+='</body>';
		srcHtml+='</html>';
		
	var XEditor=getXContent(xid);
		XDoc=XEditor.document;
	
		XEdProps[xid]=new Array();
		XEditor.document.xedi=xid;

		XEditor.document.open();
		XEditor.document.write(srcHtml);
		XEditor.document.close();

}

function startDesignMode(xid) {
	var XEditor=getXContent(xid);
	
		XEditor.document.designMode='on';
}

function xinitEvents(xid) {
	var XEditor=getXContent(xid);
	var XDoc=XEditor.document;
	
	xaddEvent(XDoc, 'keypress', xEventsProc);
	xaddEvent(XDoc, 'keydown', xEventsProc);
	xaddEvent(XDoc, 'keyup', xEventsProc);
	xaddEvent(XDoc, 'focus', xEventsProc);
	xaddEvent(XDoc, 'click', xEventsProc);
}

function xEventsProc(e) {
//	window.status=e.type+' '+e.srcElement;
			if (isIE) {
				var elm=e.srcElement;
			} else {
				var elm=e.target;
			}

	switch (e.type) {
		case "keypress":
		case "keyup":
		case "keydown":
		case "click":
		case "focus":

			if (elm.ownerDocument) {
				XEdProps[elm.ownerDocument.title].link=getParentElement(elm,'a');
				XEdProps[elm.ownerDocument.title].img=getParentElement(elm,'img');
				XEdProps[elm.ownerDocument.title].table=getParentElement(elm,'table');
				XEdProps[elm.ownerDocument.title ].cell=getParentElement(elm,'td,th');
				XEdProps[elm.ownerDocument.title].row=getParentElement(elm,'tr');
//				addLog(elm.ownerDocument.body.innerHTML);
				
				refreshGUI(elm, elm.ownerDocument.title);
			}
		break;
	}
}

/* Edit functions */

function makexhtml() {
	for(var i=0;i<XEditors.length;i++) {
		var srcid=document.getElementById(XEditors[i][1]);
		var text=exportloop(getXContent(XEditors[i][0]).document.body.firstChild).toString();
		srcid.innerHTML=text.replace(/</g, '&lt;').replace(/>/g, '&gt;');
	}
}

function FormatText(xid,action, option) {
	var XEditor=getXContent(xid);

	if (!isIE) XEditor.document.execCommand('useCSS',false, true);
	XEditor.document.execCommand(action, false, option);
}

function pastetext(xid) {
	window.open('/admin/dialogs/xdlg_paste.php?xid='+xid,'','width=385,height=300');
}

function pasteword(xid) {
	window.open('/admin/dialogs/xdlg_pasteword.php?xid='+xid,'','width=385,height=300');
}

function toggleHTML(xid) {
	var XEditor=getXContent(xid);
	var xiframe=$('#xfrm'+xid);
	if (xiframe.css('display')!='none') {// prepneme na HTML
		xiframe.css('display','none');
		xiframe.after($('<textarea id="xihtml'+xid+'"></textarea>').text($(XEditor.document.body).html()).width('99%').height('500px'));
	} else { //prepneme naspat na editor
		$(XEditor.document.body).html($('#xihtml'+xid).val());
		$('#xihtml'+xid).remove();
		xiframe.css('display','block');
	}
	
	
//	alert($(XEditor.document.body).html());
}


function FormatBlock(xid) {
	var selid=document.getElementById('xStyle'+xid);
	var XEditor=getXContent(xid);

	XEditor.document.execCommand('formatblock',false,'<'+pageStyles[selid.options[selid.selectedIndex].value][0]+'>');
	XEditor.focus();
	var selelem=getFocusedElement(XEditor);
	var mtag=getParentElement(selelem,pageStyles[selid.options[selid.selectedIndex].value][0]);


	if (pageStyles[selid.options[selid.selectedIndex].value][2]!=null) 
		mtag.setAttribute(isIE ? 'className':'class',pageStyles[selid.options[selid.selectedIndex].value][2]);
	 else 
	 	mtag.removeAttribute(isIE ? 'className':'class');
}

function makeLink(xid) {
	window.open('/admin/dialogs/xdlg_link.php?xid='+xid,'','width=385,height=300');
}

function makeHr(xid) {
	insertContent(xid,'<hr size="1" width="90%">');
}

function makeAnchor(xid) {
	window.open('/admin/dialogs/xdlg_anchor.php?xid='+xid,'','width=200, height=50');
}

function makeAds(xid) {
	window.open('/admin/dialogs/xdlg_ads.php?xid='+xid,'','width=200, height=50');
}

function makeImage(xid) {
	window.open('/admin/dialogs/xdlg_image.php?xid='+xid,'','width=385,height=300');
}

function makeTable (xid) {
	window.open('/admin/dialogs/xdlg_table.php?xid='+xid,'','width=385, height=300');
}

function changeRow(xid) {
	if(XEdProps[xid].cell==null) return;
	window.open('/admin/dialogs/xdlg_trow.php?xid='+xid,'','width=300, height=200');
}

function changeCell(xid) {
	if(XEdProps[xid].cell==null) return;
	window.open('/admin/dialogs/xdlg_tcell.php?xid='+xid,'','width=300, height=200');
}

function getTableGrid(tableid) {
	
	var grid=new Array();
	
	for (y=0;y<tableid.rows.length;y++) {
		for(x=0;x<tableid.rows[y].cells.length;x++) {

			var cs=tableid.rows[y].cells[x].colSpan;
			var rs=tableid.rows[y].cells[x].rowSpan;
			
			for(movx=x;grid[y] && grid[y][movx];movx++);
			
			for(y2=y;y2<y+rs;y2++) {
				if(!grid[y2]) grid[y2]=new Array();
				for (x2=movx;x2<movx+cs;x2++) {
					grid[y2][x2]=tableid.rows[y].cells[x];
				}
			}
		}
	}
	return grid;
}

function getCellPos(tablegrid, cell) {
	for(y=0;y<tablegrid.length;y++) {
		for(x=0;x<tablegrid[y].length;x++) {
			if(tablegrid[y][x]==cell) {
				return {x:x, y:y};
			}
		}
	}
	return null;
}

function addRowBefore(xid) {
	if(XEdProps[xid].row==null) return;

	var tgrid=getTableGrid(XEdProps[xid].table);
	var curcell=getCellPos(tgrid, XEdProps[xid].cell);
	var Exrow=curcell['y']-1;
	if (Exrow<0) Exrow=0;
	
	var newRow=document.createElement('tr');
	var oldtd=null;


	for (i=0;i<tgrid[Exrow].length;i++) {
		if (oldtd!=tgrid[Exrow][i]) {
			if (tgrid[Exrow][i].rowSpan>1 && curcell['y']!=0) {
				tgrid[Exrow][i].rowSpan=tgrid[Exrow][i].rowSpan+1;
			} else {
				var newtd=document.createElement('td');
				newtd.innerHTML='&nbsp;';
				newtd.colSpan=tgrid[Exrow][i].colSpan;
				
				newRow.appendChild(newtd);
			}
		}
		oldtd=tgrid[Exrow][i];
	}
	
	XEdProps[xid].row.parentNode.insertBefore(newRow, XEdProps[xid].row);
}

function addRowAfter(xid) {
	if(XEdProps[xid].row==null) return;

	var tgrid=getTableGrid(XEdProps[xid].table);
	var curcell=getCellPos(tgrid, XEdProps[xid].cell);
	var Exrow=curcell['y'];
	
	var newRow=document.createElement('tr');
	var oldtd=null;
	

	for (i=0;i<tgrid[Exrow].length;i++) {
		if (oldtd!=tgrid[Exrow][i]) {
		
			if (tgrid[Exrow][i].rowSpan>1 && Exrow!=(tgrid.length-1)) {
				tgrid[Exrow][i].rowSpan=tgrid[Exrow][i].rowSpan+1;
			} else {
				var newtd=document.createElement('td');
				newtd.innerHTML='&nbsp;';
				newtd.colSpan=tgrid[Exrow][i].colSpan;
				
				newRow.appendChild(newtd);
			}
		}
		oldtd=tgrid[Exrow][i];
	}
	XEdProps[xid].row.parentNode.insertBefore(newRow, XEdProps[xid].row.nextSibling);
}

function delRow(xid) {
	if(XEdProps[xid].row==null) return;
	var tgrid=getTableGrid(XEdProps[xid].table);
	var curcell=getCellPos(tgrid, XEdProps[xid].cell);
	var Exrow=curcell['y'];
	
	if(XEdProps[xid].table.rows.length==1) {XEdProps[xid].table.parentNode.removeChild(XEdProps[xid].table); return;}

	var cells=XEdProps[xid].row.cells;

	for(i=0;i<cells.length;i++) {
		if (cells[i].rowSpan>1) {
			var ntd=cells[i].cloneNode(true);
			ntd.rowSpan=ntd.rowSpan-1;
			
			var nxtd=XEdProps[xid].row.nextSibling.cells[i];
			
			if (nxtd==null) {
				XEdProps[xid].row.nextSibling.appendChild(ntd);
			} else {
				XEdProps[xid].row.nextSibling.insertBefore(ntd, nxtd);
			}
		}
	}
	
	var oldtd=null;
	
	for(i=0;i<tgrid[Exrow].length;i++) {
		if (oldtd!=tgrid[Exrow][i] && tgrid[Exrow][i].rowSpan>1) {
			tgrid[Exrow][i].rowSpan=tgrid[Exrow][i].rowSpan-1;
		}
	}
	
	XEdProps[xid].row.parentNode.removeChild(XEdProps[xid].row);
	XEdProps[xid].row=null;
}

function addColBefore(xid) {
	if(XEdProps[xid].cell==null) return;

	var tgrid=getTableGrid(XEdProps[xid].table);
	var curcell=getCellPos(tgrid, XEdProps[xid].cell);
	var ExCol=curcell['x'];
	if (ExCol<0) ExCol=0;
	
	var oldtd=null;

	for (i=0;i<tgrid.length;i++) {
		if (oldtd!=tgrid[i][ExCol]) {
			if (curcell['x']!=0 && tgrid[i][ExCol].colSpan>1) {
				tgrid[i][ExCol].colSpan=tgrid[i][ExCol].colSpan+1;
			} else {
				var newtd=document.createElement('td');
				newtd.innerHTML='&nbsp;';
				
				newtd.rowSpan=tgrid[i][curcell['x']].rowSpan;
				
				tgrid[i][curcell['x']].parentNode.insertBefore(newtd, tgrid[i][curcell['x']]);
			}
		}
		oldtd=tgrid[i][ExCol];
	}
}

function addColAfter(xid) {
	if(XEdProps[xid].cell==null) return;

	var tgrid=getTableGrid(XEdProps[xid].table);
	var curcell=getCellPos(tgrid, XEdProps[xid].cell);
	var ExCol=curcell['x'];
	if (ExCol<0) ExCol=0;
	
	var oldtd=null;

	for (i=0;i<tgrid.length;i++) {
		if (oldtd!=tgrid[i][ExCol]) {
			if (curcell['x']!=0 && tgrid[i][ExCol].colSpan>1) {
				tgrid[i][ExCol].colSpan=tgrid[i][ExCol].colSpan+1;
			} else {
				var newtd=document.createElement('td');
				newtd.innerHTML='&nbsp;';
				
				newtd.rowSpan=tgrid[i][curcell['x']].rowSpan;
				
				var nexttd=tgrid[i][curcell['x']+1];
				
				if (nexttd==null) {
					tgrid[i][curcell['x']].parentNode.appendChild(newtd);
				} else {
					if (tgrid[i-1] && nexttd==tgrid[i-1][curcell['x']+1]) {
						tgrid[i][curcell['x']].parentNode.insertBefore(newtd,tgrid[i][curcell['x']+1+nexttd.colSpan]);
					} else {
						tgrid[i][curcell['x']].parentNode.insertBefore(newtd, nexttd);
					}
				}
			}
		}
		oldtd=tgrid[i][ExCol];
	}
}

function delCol(xid) {
	if(XEdProps[xid].cell==null) return;

	var tgrid=getTableGrid(XEdProps[xid].table);
	var curcell=getCellPos(tgrid, XEdProps[xid].cell);
	var ExCol=curcell['x'];
	
	if(tgrid.length==1) {XEdProps[xid].table.parentNode.removeChild(XEdProps[xid].table); return;}

	var oldtd=null;

	for(i=0;i<tgrid.length;i++) {
		if (oldtd!=tgrid[i][ExCol]) {
			if (tgrid[i][ExCol].colSpan>1) 
				tgrid[i][ExCol].colSpan=tgrid[i][ExCol].colSpan-1;
			else 
				tgrid[i][ExCol].parentNode.removeChild(tgrid[i][ExCol]);
		}
		oldtd=tgrid[i][ExCol];
	}
	XEdProps[xid].cell=null;
}

function splitCells(xid) {
	if(XEdProps[xid].cell==null && (XEdProps[xid].cell.rowSpan==1 && XEdProps[xid].cell.colSpan==1)) return;

	var tdElm=XEdProps[xid].cell;
	
	if(tdElm==null) return;
	
	if (tdElm.rowSpan>1 || tdElm.colSpan>1) {
		for (var i=1;i<tdElm.colSpan;i++) {
			var newtd=document.createElement('td');
			newtd.innerHTML='&nbsp;';
			
			if (tdElm.nextSibling)
				XEdProps[xid].row.insertBefore(newtd, tdElm.nextSibling);
			else
				XEdProps[xid].row.appendChild(newtd);
			
			var actRow=XEdProps[xid].row.nextSibling;
			if (tdElm.rowSpan>1) {
				for (var j=1;j<tdElm.rowSpan && actRow;j++) {
					var nnewtd=document.createElement('td');
					nnewtd.innerHTML='&nbsp;';
					
					if (isIE)
						actRow.insertBefore(nnewtd, actRow.cells(newtd.cellIndex));
					else
						actRow.insertBefore(nnewtd, actRow.cells[newtd.cellIndex]);
					
					actRow=actRow.nextSibling;
				}
			}
		}
		
		var actRow=XEdProps[xid].row.nextSibling;
		if (tdElm.rowSpan>1) {
			for (var j=1;j<tdElm.rowSpan && actRow;j++) {
				var nnewtd=document.createElement('td');
				nnewtd.innerHTML='&nbsp;';
				
				if (isIE)
					actRow.insertBefore(nnewtd, actRow.cells(tdElm.cellIndex));
				else
					actRow.insertBefore(nnewtd, actRow.cells[tdElm.cellIndex]);
				
				actRow=actRow.nextSibling;
			}
		}
		
		
		tdElm.colSpan=1;
		tdElm.rowSpan=1;
	}
}

function mergeCells(xid) {
	function getRngNode(rng, pos) {
		return rng.getRangeAt(pos).startContainer.childNodes[rng.getRangeAt(pos).startOffset];
	}
	
	var sell=XgetSelection(xid);
	var cellscount=sell.rangeCount;
	
	if (cellscount<2) return;
	
	for (var i=0;i<cellscount;i++) {
		var node=getRngNode(sell, i);
		if (node.colSpan>1 || node.rowSpan>1)  {
			alert('Chybný výber buniek tabuľky !');
			return;
		}
	}

	//get rows
	var oldrow=numrows=1;
	
	for (var i=0;i<cellscount;i++) {
		var trElm=sell.getRangeAt(i).startContainer;
		if(oldrow==1) oldrow=trElm;
		if (trElm!=oldrow) {
			oldrow=trElm;
			numrows++;
		}
	}
	
	// get cols
	var oldrow=numcols=0;
	
	for (var i=0;i<cellscount;i++) {
		var trElm=sell.getRangeAt(i).startContainer;
		if (oldrow==0) oldrow=trElm;
		if (trElm!=oldrow) break;
		numcols++;
	}
	
	//setup main cell
	var maintd=getRngNode(sell, 0);
	maintd.colSpan=numcols;
	maintd.rowSpan=numrows;
	
	//remove other cells
	for (i=1;i<cellscount;i++) {
		var tdelm=getRngNode(sell, i);
		tdelm.parentNode.removeChild(tdelm);
	}
}

function insertContent(xid, content) {
	var xc=getXContent(xid);
	if (!isIE) {
		xc.document.execCommand("insertimage", false, "#temp_url693#");
		elm = getElementByAttributeValue(xc.document.body, "img", "src", "#temp_url693#");

		if (elm) {
			var rng = elm.ownerDocument.createRange();
			rng.setStartBefore(elm);
			var fragment = rng.createContextualFragment(content);
			elm.parentNode.replaceChild(fragment, elm);
		}
	} else {
		var rng = xc.document.selection.createRange();

		if (rng.item)
			rng.item(0).outerHTML = content;
		else
			rng.pasteHTML(content);
	}
}


/* GUI functions */

function btnClassChange(obj, style) {
	if (obj.className=='xguiBtnActive' || obj.className=='xguiBtnDisabled') return;
	obj.className=style;
}

function btnClassChangeR(elid, style) {
	if (document.getElementById(elid)==null) return;
	document.getElementById(elid).className=style;
}

function setSelectValue(selid, value) {

	if(value==null) return;
	var selbox=document.getElementById(selid);
	
	if (!selbox) return;

	for(i=0;i<selbox.length;i++) {
		if (selbox.options[i].value==value) {selbox.selectedIndex=i;return;}
	}
	selbox.selectedIndex=0;
}

function refreshGUI(elm, xid) {

	if(getParentElement(elm, 'td') || getParentElement(elm, 'th')) {
		btnClassChangeR('chRow'+xid, 'xguiBtnActive');
		btnClassChangeR('chCell'+xid, 'xguiBtnActive');
		btnClassChangeR('addRowA'+xid,'xguiBtnNormal');
		btnClassChangeR('addRowB'+xid, 'xguiBtnNormal');
		btnClassChangeR('delRow'+xid, 'xguiBtnNormal');
		btnClassChangeR('addColA'+xid,'xguiBtnNormal');
		btnClassChangeR('addColB'+xid, 'xguiBtnNormal');
		btnClassChangeR('delCol'+xid, 'xguiBtnNormal');
		if (!isIE) {
			btnClassChangeR('mCells'+xid, 'xguiBtnNormal');
			if (XEdProps[xid].cell.rowSpan>1 || XEdProps[xid].cell.colSpan>1) btnClassChangeR('sCells'+xid, 'xguiBtnNormal'); else btnClassChangeR('sCells'+xid, 'xguiBtnDisabled');
		}
		
	} else {
		btnClassChangeR('chRow'+xid, 'xguiBtnDisabled');
		btnClassChangeR('chCell'+xid, 'xguiBtnDisabled');
		btnClassChangeR('addRowA'+xid,'xguiBtnDisabled');
		btnClassChangeR('addRowB'+xid, 'xguiBtnDisabled');
		btnClassChangeR('delRow'+xid, 'xguiBtnDisabled');
		btnClassChangeR('addColA'+xid,'xguiBtnDisabled');
		btnClassChangeR('addColB'+xid, 'xguiBtnDisabled');
		btnClassChangeR('delCol'+xid, 'xguiBtnDisabled');
		if (!isIE) btnClassChangeR('mCells'+xid, 'xguiBtnDisabled');
		if (!isIE) btnClassChangeR('sCells'+xid, 'xguiBtnDisabled');
	}

	if(getParentElement(elm,'b')) 
		btnClassChangeR('strong'+xid, 'xguiBtnActive');
	else
		btnClassChangeR('strong'+xid, 'xguiBtnNormal');
		
	if(getParentElement(elm,'i')) 
		btnClassChangeR('em'+xid, 'xguiBtnActive');
	else
		btnClassChangeR('em'+xid, 'xguiBtnNormal');
		
	if(getParentElement(elm,'u')) 
		btnClassChangeR('underl'+xid, 'xguiBtnActive');
	else
		btnClassChangeR('underl'+xid, 'xguiBtnNormal');
		
	if(getParentElement(elm,'strike')) 
		btnClassChangeR('strike'+xid, 'xguiBtnActive');
	else
		btnClassChangeR('strike'+xid, 'xguiBtnNormal');

	if(getParentElement(elm,'sup')) 
		btnClassChangeR('sup'+xid, 'xguiBtnActive');
	else
		btnClassChangeR('sup'+xid, 'xguiBtnNormal');
		
	if(getParentElement(elm,'sub')) 
		btnClassChangeR('sub'+xid, 'xguiBtnActive');
	else
		btnClassChangeR('sub'+xid, 'xguiBtnNormal');
		
	if(getParentElement(elm,'ul')) 
		btnClassChangeR('unorlist'+xid, 'xguiBtnActive');
	else
		btnClassChangeR('unorlist'+xid, 'xguiBtnNormal');
	
	if(getParentElement(elm,'ol')) 
		btnClassChangeR('orlist'+xid, 'xguiBtnActive');
	else
		btnClassChangeR('orlist'+xid, 'xguiBtnNormal');


// linka
	if(getParentElement(elm,'a')) 
		btnClassChangeR('mklnk'+xid, 'xguiBtnActive');
	else
		btnClassChangeR('mklnk'+xid, 'xguiBtnNormal');

// kotva
	if(getParentElement(elm,'img') && elm.className=='anchor') 
		btnClassChangeR('anchor'+xid, 'xguiBtnActive');
	else
		btnClassChangeR('anchor'+xid, 'xguiBtnNormal');

//baner
	if(getParentElement(elm,'img') && elm.className=='baner') 
		btnClassChangeR('ads'+xid, 'xguiBtnActive');
	else
		btnClassChangeR('ads'+xid, 'xguiBtnNormal');

//obrazok
	if(getParentElement(elm,'img') && elm.className!='anchor' && elm.className!='flash' && elm.className!='baner') 
		btnClassChangeR('img'+xid, 'xguiBtnActive');
	else
		btnClassChangeR('img'+xid, 'xguiBtnNormal');



	// zarovnavanie
	var alignNode = elm;
	var breakOut = false;
	// znulovanie stavu
	btnClassChangeR('Left'+xid, 'xguiBtnNormal');
	btnClassChangeR('Right'+xid, 'xguiBtnNormal');
	btnClassChangeR('Center'+xid, 'xguiBtnNormal');
	btnClassChangeR('Justify'+xid, 'xguiBtnNormal');
	
	do {
		if (!alignNode.getAttribute || !alignNode.getAttribute('align'))
			continue;

		switch (alignNode.getAttribute('align').toLowerCase()) {
			case "left":
				btnClassChangeR('Left'+xid, 'xguiBtnActive');
				breakOut = true;
			break;

			case "right":
				btnClassChangeR('Right'+xid, 'xguiBtnActive');
				breakOut = true;
			break;

			case "middle":
			case "center":
				btnClassChangeR('Center'+xid, 'xguiBtnActive');
				breakOut = true;
			break;

			case "justify":
				btnClassChangeR('Justify'+xid, 'xguiBtnActive');
				breakOut = true;
			break;
		}
	} while (!breakOut && (alignNode = alignNode.parentNode));

	//Styly
	
	breakOut=false;
	curNode=elm;
	
	if (curNode && curNode.nodeName.toLowerCase()!='body')
		do {
			var curNodeName=curNode.nodeName.toLowerCase();
			for(var i=0;i<pageStyles.length;i++) {
				if(curNodeName=='a') break;
			
				if(curNodeName==pageStyles[i][0]) {
				
					if (pageStyles[i][2] && curNode.className!=pageStyles[i][2])
						break;
	
					setSelectValue('xStyle'+xid,i);
					breakOut=true;
					break;
				}
			}
			curNode=curNode.parentNode;
		} while (!breakOut && curNode && curNode.nodeName.toLowerCase()!='body');
	
	if (breakOut==false) setSelectValue('xStyle'+xid,'0');
}

/* multi-browser functions */

function getXContent(xid) {
	if (!isIE)
		return document.getElementById('xfrm'+xid).contentWindow;
	else
		return document.frames['xfrm'+xid].window;
	
}

function getElementByAttributeValue(node, element, attr, attr_value) {
	var elm=getElementsByAttributeValue(node, element, attr, attr_value);
	
	if (elm.length==0) return null;
	
	return elm[0]; 
}

function getElementsByAttributeValue(node, element, attr, attr_value) {
	var elms=new Array();
	
	if (node && node.nodeName.toLowerCase()==element) {
		if(node.getAttribute(attr).indexOf(attr_value)!=-1) {
			elms[elms.length]=node;
		}
	}
	
	var xelms=node.getElementsByTagName(element);
	
	if (isIE) attr=attr=='class' ? 'classname':attr;
	
	for(i=0;i<xelms.length;i++) {
		if (xelms[i].getAttribute(attr) && xelms[i].getAttribute(attr).indexOf(attr_value)!=-1) elms[elms.length]=xelms[i];
	}
	
	return elms;
}

function getFocusedElement(XEditor) {
	if (isIE) {
		var range = XEditor.document.selection.createRange();
		var element = range.item ? range.item(0) : range.parentElement();
	} else {
		var sel = XEditor.getSelection();
		var element = sel.anchorNode;
	}
	return element;
}

function xaddEvent(obj, event, func) {
	if (isIE)
		obj.attachEvent('on'+event, func);
	else
		obj.addEventListener(event,func, false);
}

function XgetSelection(xid) {
	var cont=getXContent(xid);
	if (isIE) {
		var selection = cont.document.selection; 
		if (selection != null) return selection.createRange();
	} else {
		var selection = cont.getSelection();
//		return document.createRange();
//		return selection.getRangeAt(selection.rangeCount - 1);	}
	return selection;
}

function getParentElement(node,names) {
	var tags=names.split(',');
	
	if (node==null) return null;
	
	do {
		for (i=0;i<tags.length;i++) {if (tags[i].toLowerCase()==node.nodeName.toLowerCase()) return node;}
	} while (node=node.parentNode);
	
	return null;
}

/*  Ladiace funkcie */

function addLog(lt) {
	document.getElementById('ladic').value=lt;
}
/*
function show_props(obj, obj_name) {
var result = "";
for (var i in obj)
	result += obj_name + "." + i + " = " + obj[i] + "<br />"
	document.getElementById('ladic').value=result;
}
*/

