

var httpRequest = false;
var selected = 1;
var modified = false;
var hyperlinking = false;
var loading = 'layout';
var validName = true;
var GLOBAL_caretPos;

function cancelLink() {
  document.getElementById('linkForm').style.display = 'none';
  document.getElementById(hyperlinking).focus();
  hyperlinking = false;
}



var currentDynamic = false;




function countContent() {
  cnt = document.getElementById("source1");
  txt = document.getElementById("ccount");
  txt.innerHTML = cnt.value.length;
  if( cnt.value.length > 65000 ) {
     cnt.value = field.value.substring(0,65000);
  }
}


function getSelectedText( elementID ) {

 var obj = document.getElementById( elementID );
 if( !obj )
  throw "Element " + elementID + " not found!";

 // Netscape, Mozilla, Firefox
 if( typeof(obj.selectionStart) != "undefined" )
 {

  obj.focus();
  var start_selection = obj.selectionStart;
  var end_selection = obj.selectionEnd;
  if (end_selection < start_selection)
  {
   var temp = end_selection;
   end_selection = start_selection;
   start_selection = temp;
  }

  return (obj.value).substring(start_selection, end_selection);

 }

 // Internet Explorer
 if( obj.createTextRange )
 {
  //Set global caretposition since it get's deselected when the window pops up.
  obj.focus( obj.caretPos );

  obj.caretPos = document.selection.createRange().duplicate();

  GLOBAL_caretPos = obj.caretPos;

  return obj.caretPos.text;

 }
}

function insertBreak(elementId) {
  txt = getSelectedText(elementId);
  setSelectedText(elementId, txt + '[break]\n');
  modify();
}

function hyperlink(elementId) {
  hyperlinking = elementId;
  txt = getSelectedText(elementId);
  document.getElementById('linkText').value = txt;
  document.getElementById('linkLocation').value = '';
  document.getElementById('openInNewWindow').checked = false;
  document.getElementById('linkForm').style.display = 'block';
  if( txt == '' ) {
    document.getElementById('linkText').focus();
  }
  else {
    document.getElementById('linkLocation').focus();
  }
}

function insertLink() {
  document.getElementById('linkForm').style.display = 'none';
  txt = document.getElementById('linkText').value;
  u = document.getElementById('linkLocation').value;
  w = document.getElementById('openInNewWindow');
  if( w.checked ) {
    tag = 'elink';
  }
  else {
    tag = 'link';
  }
  txt = '[' + tag + '=' + u + ']' + txt + '[/' + tag + ']';
  setSelectedText(hyperlinking, txt);
  modify();
  hyperlinking = false;
}


function markup(elementId, tag) {
 txt = getSelectedText(elementId);
 setSelectedText(elementId, '[' + tag + ']' + txt + '[/' + tag + ']');
  modify();
}

var enabledState = false;

function modify() {
  var d = document.getElementById('contentPreview');
  if( d.style.display != 'none' ) {
    refreshPreview();
  }
  if( modified && enabledState && validName ) {
    return;
  }
  if( validName ) {
    document.getElementById('enabled').style.display = 'block';
    document.getElementById('disabled').style.display = 'none';
    enabledState = true;
  }
  else {
    document.getElementById('enabled').style.display = 'none';
    document.getElementById('disabled').style.display = 'block';
    enabledState = false;
  }
  if( !modified ) {
    document.getElementById('noteModified').style.display = 'inline';
  }
  modified = true;
}

function processState() {
  if( httpRequest.readyState == 4 ) {
    txt = httpRequest.responseText;
    document.getElementById(loading + 'Attributes').innerHTML = txt;
    if( loading == 'layout' ) {
      loading = 'category';
      load();
    }
  }
}

function reset() {
  document.getElementById('editor').reset();
  document.getElementById('enabled').style.display = 'none';
  document.getElementById('disabled').style.display = 'block';
  document.getElementById('noteModified').style.display = 'none';
  modified = false;
  countContent();
  loadTypes();
}

function save(preview) {
  if( preview ) {
    document.getElementById('preview').value = 'true';
  }
  document.getElementById('editor').submit();
}

function select(tab) {
  document.getElementById('tab' + selected).style.display = 'none';
  document.getElementById('tl' + selected).className = 'backgroundTab';
  document.getElementById('tl' + selected + 'bgsel').style.display = 'none';
  document.getElementById('tl' + selected + 'bgbg').style.display = 'block';
  document.getElementById('tab' + tab).style.display = 'block';
  document.getElementById('tl' + tab).className = 'selectedTab';
  document.getElementById('tl' + tab + 'bgbg').style.display = 'none';
  document.getElementById('tl' + tab + 'bgsel').style.display = 'block';
  selected = tab;
}


function setSelectedText( elementID, text )
{

 var obj = document.getElementById( elementID );
 if( !obj )
  throw "Element " + elementID + " not found!";

 // Netscape, Mozilla, Firefox
 if( typeof(obj.selectionStart) != "undefined" )
 {

  obj.focus();
  var start_selection = obj.selectionStart;
  var end_selection = obj.selectionEnd;
  if (end_selection < start_selection)
  {
   var temp = end_selection;
   end_selection = start_selection;
   start_selection = temp;
  }

  // Sad, but true: You actually have to replace *all* of the text in
  // the text input to replace the selection in Mozilla browsers!
  var startText = (obj.value).substring(0, start_selection);
  var endText = (obj.value).substring(end_selection, obj.textLength);

  obj.value = startText + text + endText;
  obj.selectionStart = start_selection;
  obj.selectionEnd = start_selection + text.length;

 }

 // Internet Explorer
 if( obj.createTextRange )
 {

 // obj.focus( obj.caretPos );
 // obj.caretPos = document.selection.createRange().duplicate();
  GLOBAL_caretPos.text = text;
  GLOBAL_caretPos.moveStart( "character", text.length * -1 );
  GLOBAL_caretPos.select();

 }
 obj.focus();
 countContent();
}