function wikiPreviewAjax(url, formObjId, previewBox) {
    var wikitext = encodeURIComponent($(formObjId).value);
    //var wikitext = escape($(formObjId).value);

  new Ajax.Request(url,
		   {
		   method: 'post',
		       parameters: 'wikitext=' + wikitext,
		       evalScripts: true,
		       evalJS: 'force',
		       onSuccess: function(transport) {
		       wikiPreviewAjaxSuccess(transport, formObjId, previewBox);
		     },
		       onFailure: function() { alert('hiba'); }
		   });
    
}

function wikiPreviewAjaxSuccess(data, formObjId, previewBox) {
  try {
    previewBoxNode = $(previewBox);
    previewBoxContent = $(previewBox + '-content');
    previewBoxNode.clonePosition($(formObjId).parentNode, {setWidth: true, setHeight: false});

    previewBoxContent.innerHTML = data.responseText;
    runinnerjs(previewBoxContent);

    previewBoxNode.style.display = 'block';

  } catch(e) {
    alert(e);
  }
}

function addResponseHtmlToElement(responseData, targetElement, responseId) {
  var newNode = null, tempNode = null, importedNode = null;
  responseId = responseId ? responseId : 'ajaxResponse';

  /* IE is "special" */
  if (responseData.responseXML.childNodes.length == 0) {
    var tempString = responseData.responseText;

    /*						var start = 0, end = 0;
						start = tempString.indexOf('<ajaxResponsediv id="' + responseId + '"');
						end = tempString.indexOf('<div id="documentFooter"');
						tempString = tempString.substring(start, end);*/
    tempNode = new ActiveXObject('Microsoft.XMLDOM');
    tempNode.async = false;
    tempNode.loadXML(tempString);
    tempNode = tempNode.getElementsByTagName('div');
  } else {
    tempNode = responseData.responseXML.getElementsByTagName('div');
  }
  for (var i = 0, il = tempNode.length; i < il; i++)
    if (tempNode[i].getAttribute('id') == responseId) {
      newNode = tempNode[i];
      break;
    }
  if (newNode.nodeType != document.ELEMENT_NODE)
    newNode = newNode.nextSibling;
  if (newNode) {
    importedNode = document._importNode(newNode, true);
    targetElement.innerHTML = '';
    targetElement.appendChild(importedNode);
    if (!document.importNode)
      targetElement.innerHTML = targetElement.innerHTML;
  }
}

function addToSelectionPictureLink(formObjId, tagOpen, tagClose, force) {
  var link = promptForLink();
  return addToSelection(formObjId, tagOpen,  '|url:' + link + tagClose, force);
}

function addToSelectionPictureTextLink(formObjId, tagOpen, tagClose, force) {
  var text = promptForText();
  return addToSelectionPictureLink(formObjId, tagOpen,  '|text:' + text + tagClose, force);
}

function promptForLink() {
  return prompt("Adja meg a linket:" , "http://");
}

function promptForText() {
  return prompt("Adja meg a szöveget:");
}

function addToSelection(formObjId, tagOpen, tagClose, force) {
  var formObj = document.getElementById(formObjId);
  if (!formObj) {
    alert('Hiba!');
    return false;
  }
  var sampleText = force ? false : '';
  insertTags(formObj, tagOpen, tagClose, sampleText);
  return true;
}

function addToSelectionText(formObjId, tagOpen, tagClose, force) {
  var text = promptForText();
  return addToSelection(formObjId, tagOpen, '|text:' + text + tagClose, force);
}


function addToSelectionLink(formObjId, tagOpen, tagClose, force) {
  var link = promptForLink();
  return addToSelection(formObjId, tagOpen + link + ' ', tagClose, force);
}

// apply tagOpen/tagClose to selection in textarea,
// use sampleText instead of selection if there is none
function insertTags(formObj, tagOpen, tagClose, sampleText) {
  var selectionError = 'Hiba: nincs kijelölve szövegrész!';
  var selText, isSample = false;

  if (document.selection  && document.selection.createRange) { // IE/Opera

    //save window scroll position
    if (document.documentElement && document.documentElement.scrollTop)
      var winScroll = document.documentElement.scrollTop
      else if (document.body)
	var winScroll = document.body.scrollTop;
    //get current selection  
    formObj.focus();
    var range = document.selection.createRange();
    selText = range.text;
    //insert tags
    var checkResult = checkSelectedText();
    if (!checkResult) {
      alert(selectionError);
      return false;
    }
    range.text = tagOpen + selText + tagClose;
    //mark sample text as selected
    if (isSample && range.moveStart) {
      if (window.opera)
	tagClose = tagClose.replace(/\n/g,'');
      range.moveStart('character', - tagClose.length - selText.length); 
      range.moveEnd('character', - tagClose.length); 
    }
    range.select();   
    //restore window scroll position
    if (document.documentElement && document.documentElement.scrollTop)
      document.documentElement.scrollTop = winScroll
      else if (document.body)
	document.body.scrollTop = winScroll;

  } else if (formObj.selectionStart || formObj.selectionStart == '0') { // Mozilla

    //save textarea scroll position
    var textScroll = formObj.scrollTop;
    //get current selection
    formObj.focus();
    var startPos = formObj.selectionStart;
    var endPos = formObj.selectionEnd;
    selText = formObj.value.substring(startPos, endPos);
    //insert tags
    var checkResult = checkSelectedText();
    if (!checkResult) {
      alert(selectionError);
      return false;
    }

    formObj.value = formObj.value.substring(0, startPos)
      + tagOpen + selText + tagClose
      + formObj.value.substring(endPos, formObj.value.length);
    //set new selection
    if (isSample) {
      formObj.selectionStart = startPos + tagOpen.length;
      formObj.selectionEnd = startPos + tagOpen.length + selText.length;
    } else {
      formObj.selectionStart = startPos + tagOpen.length + selText.length + tagClose.length;
      formObj.selectionEnd = formObj.selectionStart;
    }
    //restore textarea scroll position
    formObj.scrollTop = textScroll;
  } 

  function checkSelectedText() {
    if (!selText) {
      if (sampleText === false) {
	return false;
      }
      selText = sampleText;
      isSample = true;
    } else if (selText.charAt(selText.length - 1) == ' ') { //exclude ending space char
      selText = selText.substring(0, selText.length - 1);
      tagClose += ' '
	} 
    return true;
  }

  return true;
}

function wikiPictureUpload(formObjId) {
  openNWCWindowSimple(webroot +  '/picturesadd.html?', formObjId, 500, 500, true, 100, 30); return false;
}

function addPicturesToOpener(formObjId, data) {
  formObj = opener.document.getElementById(formObjId);
  insertTags(formObj, data, '', '');
  window.close();
  return true;
}

function addToSelectionList(formObjId, tagOpen, tagClose, force) {
  var selectionError = 'Hiba: nincs kijelölve szövegrész!';
  var selText, isSample = false;
var formObj = document.getElementById(formObjId);
  if (document.selection  && document.selection.createRange) { // IE/Opera

    //save window scroll position
    if (document.documentElement && document.documentElement.scrollTop)
      var winScroll = document.documentElement.scrollTop
      else if (document.body)
	var winScroll = document.body.scrollTop;
    //get current selection  
    formObj.focus();
    var range = document.selection.createRange();
    selText = range.text;
  
  } else if (formObj.selectionStart || formObj.selectionStart == '0') { // Mozilla
    //save textarea scroll position
    var textScroll = formObj.scrollTop;
    //get current selection
    formObj.focus();
    var startPos = formObj.selectionStart;
    var endPos = formObj.selectionEnd;
    selText = formObj.value.substring(startPos, endPos);

  }

  var checkResult = checkSelectedText();
  if (!checkResult) {
    alert(selectionError);
    return false;
  }

  var  selectionlines = selText.split(/\r|\n/);
  selText = "\n";
  for(i = 0;i < selectionlines.length;i++) {
    var line = tagOpen + ' ' + selectionlines[i] + "\n";
    selText = selText + line;
  }
  selText = selText + "\n"

    if (document.selection  && document.selection.createRange) { // IE/Opera
      range.text = selText;
      //mark sample text as selected
      if (isSample && range.moveStart) {
	if (window.opera)
	  tagClose = tagClose.replace(/\n/g,'');
	range.moveStart('character', - tagClose.length - selText.length); 
	range.moveEnd('character', - tagClose.length); 
      }
      range.select();   
      //restore window scroll position
      if (document.documentElement && document.documentElement.scrollTop)
      document.documentElement.scrollTop = winScroll
      else if (document.body)
	document.body.scrollTop = winScroll;

  } else if (formObj.selectionStart || formObj.selectionStart == '0') { // Mozilla
    formObj.value = formObj.value.substring(0, startPos)
      + selText + formObj.value.substring(endPos, formObj.value.length);
    //set new selection
    if (isSample) {
      formObj.selectionStart = startPos + tagOpen.length;
      formObj.selectionEnd = startPos + tagOpen.length + selText.length;
    } else {
      formObj.selectionStart = startPos + tagOpen.length + selText.length + tagClose.length;
      formObj.selectionEnd = formObj.selectionStart;
    }
    //restore textarea scroll position
    formObj.scrollTop = textScroll;
  } 

  function checkSelectedText() {
    if (!selText) {
      if (sampleText === false) {
	return false;
      }
      selText = sampleText;
      isSample = true;
    } else if (selText.charAt(selText.length - 1) == ' ') { //exclude ending space char
      selText = selText.substring(0, selText.length - 1);
      tagClose += ' '
	} 
    return true;
  }
}
