// htmleditablearea.js
// client-side script for EBlock HtmlEditableArea control

var browser_ie4 = (navigator.appVersion.indexOf("MSIE 4") != -1);
var browser_ie55 = (navigator.appVersion.indexOf("MSIE 5.5") != -1);
var browser_ie5 = (navigator.appVersion.indexOf("MSIE 5") != -1) && !browser_ie5;
var browser_ie6 = (navigator.appVersion.indexOf("MSIE 6") != -1);
var browser_moz = (navigator.appVersion.indexOf("Mozilla/5.0") != -1) ||
  ((navigator.appVersion.indexOf("5.0") != -1) && !browser_ie5); // for phoenix
var browser_safari = (navigator.appVersion.indexOf("Safari") != -1);
  
// global array for storing event handlers for all html editors on the page
var ebHtmlEditorFields = new Object();
var ebHtmlEditorWindows = new Object();

function ebEnableHtmlEditor(controlId, toolbar, assetKey, settings) {
  ebEnableHtmlEditor2(controlId, toolbar, assetKey, settings);
  }

function ebEnableHtmlEditor2(controlId, toolbar, assetKey, settings) {
  // get event handlers for the textarea to be turned into a html editor
  var thisArea = document.getElementById(controlId);
  ebHtmlEditorFields[controlId] = thisArea;

  // initialise editor
  var editor = new FCKeditor(controlId);
  editor.BasePath = "/eblock/newadmin/components/fckeditor2/";

  if (thisArea.className.indexOf("expand") >= 0) { editor.Height = "100%"; }
  editor.ToolbarSet = toolbar;
  if (assetKey != "") {
    editor.Config["ImageBrowserURL"] = editor.BasePath + "../image_pick.aspx?asset=" + assetKey
  } else {
    editor.Config["ImageBrowser"] = false;
  }

  // copy configuration settings
  for (var key in settings) {
    editor.Config[key] = settings[key];
    }
  editor.Config["ProcessHTMLEntities"] = true;
  editor.Config["ProcessNumericEntities"] = true;

  //editor.Config["ebAssetSessionKey"] = assetKey;
  editor.ReplaceTextarea();

  // find IFRAME preceeding text area and set css class
  if (thisArea.previousSibling.tagName == 'IFRAME') {
    thisArea.previousSibling.className = thisArea.className;
    thisArea.previousSibling.style.border = "";
  }
}

// attach generic focus and blur event handlers to each editor instance once loaded
function FCKeditor_OnComplete(instance) {
  ebHtmlEditorWindows[instance.name] = instance.EditorWindow;
  instance.Events.AttachEvent('OnFocus', ebHtmlEditorFocusHandler);
  instance.Events.AttachEvent('OnBlur', ebHtmlEditorBlurHandler);
  // override styles added by fckeditor on root iframe
  instance.EditorWindow.parent.frameElement.style.borderColor = "";
  instance.EditorWindow.parent.frameElement.style.borderStyle = "";
  instance.EditorWindow.parent.frameElement.style.borderWidth = "";
  instance.EditorWindow.parent.frameElement.style.width = "";
  instance.EditorWindow.parent.frameElement.style.height = "";
}
  
// generic focus event handler -- fires focus event for a specific editor instance
function ebHtmlEditorFocusHandler(instance) {
  var instanceHandlers = ebHtmlEditorFields[instance.Name];
  if (instanceHandlers.onfocus) { instanceHandlers.onfocus(); }
  }

// generic blur event handler -- fires blur and change events for a specific editor instance  
function ebHtmlEditorBlurHandler(instance) {
  var instanceHandlers = ebHtmlEditorFields[instance.Name];
  if (instanceHandlers.onblur) { instanceHandlers.onblur(); }
  if (instanceHandlers.onchange && instance.IsDirty()) { instanceHandlers.onchange(); }
  }
  
function ebHtmlEditorFindForWindow(w) {
  for (var key in ebHtmlEditorWindows) {
    if (ebHtmlEditorWindows[key].EditorWindow == w) return ebHtmlEditorWindows[key];
    }
  return null;
}

  
function HTMLEncode(text) {
 	text = text.replace(/&/g, "&amp;");
	text = text.replace(/"/g, "&quot;");
	text = text.replace(/</g, "&lt;");
	text = text.replace(/>/g, "&gt;");
	text = text.replace(/'/g, "&#146;");
	return text;
	}


