var useRibbon = false;
var toolbars = null;
var objMenuBar = null;
var webRoot = document.location.href;
webRoot = webRoot.substring(0,webRoot.indexOf("application/main.aspx"));

var params = "";
var splitTop = 0;
var splitHeight = 0;
var splitLeft = 0;
var splitWidth = 0;
var newDivBack = null;
var splitStatus = false;
var selectedNode = null;
var currentContentID = "";
var firstEditor = true;
var firstTOC = true;
var firstRemote1 = true;
var firstRemote2 = true;
var tab1toolbarSection1 = null;
var userMode = 0;
var imagePath = webRoot + "application/images/";
var isHighlight = true;
var folderImageUrl = "";
var leafImageUrl = "";
var language = "2";
var dataLanguage = "2";
var languageStrings = "";
var isAdmin = false;
var synchronizeID = "";
var helpUrl = "";
var windowClose = true;
var isDemo = false;
var activeContainer = 1;
var checkSession = 0;
var productCode = "";
var tabStyle = 10;
var userModeBackgroundColor = "#BFDBF";

// ###CW###
var ext1 = false;
var ext2 = false;
var firstCW = true;
var firstCheck = true;

// REMOTE
var ext3 = false;

function onInit()
{
  try {
    productCode = document.getElementById("hidProductCode").value;
    // set language
    language = document.getElementById("hidLanguage").value;
    helpUrl = document.getElementById("hidHelpUrl").value;
    dataLanguage = document.getElementById("hidDataLanguage").value; 
    // ge language strings
    languageStrings = document.getElementById("hidLanguageStrings").value;
    // in which mode are we ?
    userMode = document.getElementById("hidMode").value;
    
    // set variables
    folderImageUrl = document.getElementById("hidFolderImage").value;
    leafImageUrl   = document.getElementById("hidLeafImage").value;
    debug          = document.getElementById("hidDebug").value == "1" ? true:false;
    isAdmin        = document.getElementById("hidAdmin").value == "1" ? true:false;
    isDemo         = document.getElementById("hidDemo").value == "1" ? true:false;
    
    // extensions
    ext1           = document.getElementById("hidExt1").value == "1" ? true:false;
    ext2           = document.getElementById("hidExt2").value == "1" ? true:false;
    ext3 = document.getElementById("hidExt3").value == "1" ? true : false;

    // User mode
    userModeBackgroundColor = document.getElementById("hidUMBKColor").value; //   "#BFDBFF"; //"#D5E4F3";
    tabStyle = document.getElementById("hidUMTabStyle").value;

    //if(userMode == "1")
    window.onbeforeunload = onUnload;

    // read language strings
    initLocalization(webRoot + "application/localization/" + language + ".xml", true);
    
    // init timer
    setInterval("setTime()", 1000);
    // init timer for image uploader

    if(userMode == 1)
      setInterval("setTimeImageUploader()", 3000);

  
    // init split handler
    if(browser.ie) {
      document.getElementById("split").onmousedown = splitMouseDown;
      document.getElementById("split").onmouseup = splitMouseUp;
      document.getElementById("split").onmousemove = splitMouseMove;
      document.getElementById("split").onmouseover = splitMouseOver;
      document.getElementById("split").onmouseout = splitMouseOut;
      if(userMode == 1) {
        document.getElementById("splitH").onmousedown = splitMouseDownH;
        document.getElementById("splitH").onmouseup = splitMouseUpH;
        document.getElementById("splitH").onmousemove = splitMouseMoveH;
        document.getElementById("splitH").onmouseover = splitMouseOverH;
        document.getElementById("splitH").onmouseout = splitMouseOutH;
      }
      document.getElementById("tree").onmousedown = handleMouseDown;
    } else {
      document.getElementById("split").addEventListener("mousedown", splitMouseDown, false);
      document.getElementById("split").addEventListener("mouseover", splitMouseOver, false);
      document.getElementById("split").addEventListener("mouseout", splitMouseOut, false);
      if(userMode == 1) {
        document.getElementById("splitH").addEventListener("mousedown", splitMouseDownH, false);
        document.getElementById("splitH").addEventListener("mouseover", splitMouseOverH, false);
        document.getElementById("splitH").addEventListener("mouseout", splitMouseOutH, false);
      }
      document.getElementById("tree").addEventListener("mousedown", handleMouseDown, false);
    }

    document.getElementById("split").style.backgroundColor = userModeBackgroundColor;
    document.getElementById("splitContainer").style.backgroundColor = userModeBackgroundColor;
    if(userMode == 1) {
      document.getElementById("splitH").style.backgroundColor = userModeBackgroundColor;
      document.getElementById("splitContainerH").style.backgroundColor = userModeBackgroundColor;
    }

    // Add key hanlder for property elements        
    if(userMode == 1) {
      addKeyHandler("txtKey",13,onPropertyFieldEnter);
      addKeyHandler("txtExternal",13,onPropertyFieldEnter);
      //addBlurHandler("txtKey",onPropertyFieldEnter);
      //addBlurHandler("txtExternal",onPropertyFieldEnter);
    }

    // Search
    addKeyHandler("txtSearch",13,onSearchEnter);
    //
    __add_event_handler(document.getElementById("display"),"load", onDisplayLoad);   
    
  } catch(e) {
    log("onInit",e,"");
  }  
}

function afterLocalizationInit()
{
  try {
    // Create menu
    if (userMode == 0 && document.getElementById("hidUMMenu").value != "0")
      CreateMenu(webRoot);
    // Create ribbon
    if(userMode == 1)
      CreateRibbon(webRoot,userMode);
    // Create tab
    CreateTab(webRoot);

    // Create Editor toolbar
    if(userMode == 1) {
      document.getElementById("editor_bottom").src = webRoot + "components/toolbar/pinToolbar.html";
    } else {
      // user toolbar
      document.getElementById("user_toolbar").src = webRoot + "components/toolbar/pinToolbar.html";
    }
    if(ext1 || ext2)
      initLocalization(webRoot + "cweditor/localization/" + language + ".xml", false);
   
  } catch(e) {}
}

function dialogGetSelectedNodeID()
{
  var id = (selectedNode ? selectedNode.key : "");
  return id;
}

function handleMouseDown(e)
{
  resetPopup(0);
}



// 0 = ALL
// 1 = After Menu
function resetPopup(mode)
{
  try {
    if(toolbars)
      toolbars.reset();
    tree.hideContextMenu();
    if(objMenuBar && mode == 0) {
      var objMenu = objMenuBar.getActiveBarItem();
      if(objMenu)
        objMenu.reset();
    }
  } catch(e) {}
}

function onError(message)
{
  //alert(message);
}

function onSearchEnter()
{
  search();
}

// run search function
function search()
{
  try {
    document.getElementById("btnSearch").disabled = true; 
    var searchString = document.getElementById("txtSearch").value;
    // clear search
    comboClear(document.getElementById("cmbResult"));
    
    var ajax = new Ajax();
    ajax.callback = __ajax_callback;
    var aParams = new Array();
    aParams[0] = ajax.createParam("key","SEARCH");
    aParams[1] = ajax.createParam("param1",searchString);
    aParams[2] = ajax.createParam("param2",document.getElementById("chkTitle").checked ? "1":"0");
    aParams[3] = ajax.createParam("param3",document.getElementById("chkContent").checked ? "1":"0");
    ajax.request(webRoot + "application/server.aspx?r=" + Math.random(),aParams);
  } catch(e) {
    log("search",e,"");
  }
}

function selectSearchResult()
{
  try {
    var id = document.getElementById("cmbResult").value;

    if (userMode == "1") {
      // check if the content has been changed
      // author mode
      if (activeContainer == 1) {
        // check if document has changed
        if (editor.editHasChanged()) {
          if (confirm(getString(10021))) {
            // Now save document
            saveContent(true);
            return;
          }
        }
      }
      var ajax = new Ajax();
      ajax.callback = __ajax_callback;
      ajax.tag = selectedNode;
      // show that we are in search
      ajax.tag2 = true;
      var aParams = new Array();
      aParams[0] = ajax.createParam("key","READCONTENT");
      aParams[1] = ajax.createParam("param1",id);
      ajax.request(webRoot + "application/server.aspx?r=" + Math.random(),aParams);
    } else {
      document.getElementById("display").src = webRoot + "application/page.aspx?id=" + id + "&datalng=" + dataLanguage + "&synch=1&r=" + Math.random();
    }
  } catch(e) {
    log("selectSearchResult",e,"");
  }
}

function readContent(node)
{
  try {
    var ajax = new Ajax();
    ajax.callback = __ajax_callback;
    ajax.tag = node;
    var aParams = new Array();
    aParams[0] = ajax.createParam("key","READCONTENT");
    aParams[1] = ajax.createParam("param1",node.key);
    ajax.request(webRoot + "application/server.aspx?r=" + Math.random(),aParams);
  } catch(e) {
    log("readContent",e,"");
  }
}

function readAttributes(node)
{
  try {
    var ajax = new Ajax();
    ajax.callback = __ajax_callback;
    ajax.tag = node;
    var aParams = new Array();
    aParams[0] = ajax.createParam("key","READATTRIBUTES");
    aParams[1] = ajax.createParam("param1",node.key);
    ajax.request(webRoot + "application/server.aspx?r=" + Math.random(),aParams);
  } catch(e) {
    log("readContent",e,"");
  }
}

function __ajax_callback(ajax)
{
  var selNode = null;
  var aMessage = null;
  
  try {
    var aKey = ajax.xml.getElementsByTagName("key");
    try {
      selNode = ajax.tag;
      aMessage = ajax.xml.getElementsByTagName("errormessage")[0];
      if(aMessage.firstChild) {
        errorMessage = aMessage.firstChild.data;
        if(errorMessage == "99") {
          if(userMode == 1) {
            // save current content to clipboard
            editor.editSelectAll();
            editor.editCopy();
            alert(getString(10033));
          //} else {
          //  alert(getString(10001));
          }

          sessionExpired();
          return;        
        } else if(errorMessage != "") {
          alert(getString(10000) + errorMessage);
          if (aKey[0].firstChild.data == "CHANGEPROPERTY") {
            if (ajax.tag2 == "NODEKEY") {
              document.getElementById("txtExternal").focus(); 
            }
          }

          return;
        }
      }
    } catch(e) {}

    

    // session timeout
    if(aKey[0].firstChild.data == "SESSION") {
      var expired = ajax.xml.getElementsByTagName("expired")[0];
      if(expired.firstChild.data == "1")
        sessionExpired();
    }

    // logoff
    if(aKey[0].firstChild.data == "LOGOFF") {
      top.location.href = webRoot + "login.aspx?r=" + Math.random();
    }
    
    // read
    if(aKey[0].firstChild.data == "READCONTENT") {
      var data = ajax.xml.getElementsByTagName("data");
      var node = ajax.xml.getElementsByTagName("node")[0];
      editor.editSetMode("EDIT");
      btnEdit.setStatus(true);
      btnHtml.setStatus(false);
      btnPreview.setStatus(false);
      if(data[0].firstChild) {
        var html = "";
        if(browser.ie)
          html = data[0].firstChild.data;
        else
            html = data[0].textContent;

        //html = html.replace(/&amp;/gi,"&");
        //html = html.replace(/&lt;/gi,"<");
        //html = html.replace(/&gt;/gi,">");
        if(userMode == 1) {
          if(node.getAttribute("type") == "1"){
            editor.editWrite(html);
          } else {
            editor.editWrite("");
          }
//          if(document.getElementById("display").src != "") {
//            document.getElementById("display").src = "";
//            return;
//          } else {
//            onDisplayLoad(null,html);
//          }
        }
      } else {
        if(userMode == 1) {
          //if(node.getAttribute("type") == "1")
            editor.editWrite("");
//        } else {
//          if(document.getElementById("display").src != "") {
//            document.getElementById("display").src = "";
//            return;
//          } else {
//            onDisplayLoad(null,"");
//          }
        }
        
      }

      if(userMode == 1) {
        // draw node icon and text
        document.getElementById("imgNodeIcon").src = node.getAttribute("imageUrl");
        document.getElementById("lblNodeText").innerHTML = node.getAttribute("text");;

/*        
        // define
        if(node.getAttribute("type") == "1"){
          document.getElementById("txtExternal").disabled = true;
        } else {
          document.getElementById("txtExternal").disabled = false;
        }
*/

        // set properties
        var node = ajax.xml.getElementsByTagName("node")[0];
        // Save the current id of page that has been read
        if (!selNode.folder)
          currentContentID = node.getAttribute("id");
        //alert(node.getAttribute("id"));
        document.getElementById("txtID").innerHTML = node.getAttribute("id"); 
        comboSet(document.getElementById("cmbVisible"),node.getAttribute("visible"));
        document.getElementById("txtKey").value = node.getAttribute("key"); 
        if(node.getAttribute("type") == "1")
          document.getElementById("txtExternal").value = node.getAttribute("url"); 
        document.getElementById("txtFormat").innerHTML = node.getAttribute("text");; 
        document.getElementById("txtFormat").style.cssText = node.getAttribute("style"); 
        document.getElementById("txtImage").innerHTML = node.getAttribute("image"); 
        document.getElementById("txtChangeDate").innerHTML = node.getAttribute("changedate") + "<br>" + node.getAttribute("changeuser"); 
        document.getElementById("txtCreationDate").innerHTML = node.getAttribute("creationdate") + "<br>" + node.getAttribute("creationuser"); 
        //document.getElementById("txtChangeUser").innerHTML = node.getAttribute("changeuser"); 
        //document.getElementById("txtCreationUser").innerHTML = node.getAttribute("creationuser"); 
      }
      // sync when in search result
      if(ajax.tag2) {
        setSynchronizeID(node.getAttribute("id"));
      }      
    }


    // read
    if(aKey[0].firstChild.data == "READATTRIBUTES") {
      var data = ajax.xml.getElementsByTagName("data");
      var node = ajax.xml.getElementsByTagName("node")[0];
      if(userMode == 1) {
        // draw node icon and text
        document.getElementById("imgNodeIcon").src = node.getAttribute("imageUrl");
        document.getElementById("lblNodeText").innerHTML = node.getAttribute("text");;
        // set properties
        var node = ajax.xml.getElementsByTagName("node")[0];
        //alert(node.getAttribute("id"));
        document.getElementById("txtID").innerHTML = node.getAttribute("id"); 
        comboSet(document.getElementById("cmbVisible"),node.getAttribute("visible"));
        document.getElementById("txtKey").value = node.getAttribute("key"); 
        if(node.getAttribute("type") == "1")
          document.getElementById("txtExternal").value = node.getAttribute("url"); 
        document.getElementById("txtFormat").innerHTML = node.getAttribute("text");; 
        document.getElementById("txtFormat").style.cssText = node.getAttribute("style"); 
        document.getElementById("txtImage").innerHTML = node.getAttribute("image"); 
        document.getElementById("txtChangeDate").innerHTML = node.getAttribute("changedate") + "<br>" + node.getAttribute("changeuser"); 
        document.getElementById("txtCreationDate").innerHTML = node.getAttribute("creationdate") + "<br>" + node.getAttribute("creationuser"); 
        //document.getElementById("txtChangeUser").innerHTML = node.getAttribute("changeuser"); 
        //document.getElementById("txtCreationUser").innerHTML = node.getAttribute("creationuser"); 
      }
//      // sync when in search result
//      if(ajax.tag2) {
//        setSynchronizeID(node.getAttribute("id"));
//      }      
    }


    // save
    if(aKey[0].firstChild.data == "SAVECONTENT") {
      editor.editResetChanged();
    }
    
    // property
    if(aKey[0].firstChild.data == "CHANGEPROPERTY") {
      // change external link
      if(ajax.tag2 == "TAG") {
        if(ajax.tag3 != "") {
          ajax.tag.tag = ajax.tag3;
          showContainer(2,ajax.tag3);
        } else {
          ajax.tag.tag = "";
          showContainer(1,"");
        }
      }
      // Change visibility
      if(ajax.tag2 == "VISIBLE") {
        // change icon
        if(ajax.tag3 == "1")
          selNode.setIcon2(webRoot + "application/images/green.png");
        else
          selNode.setIcon2(webRoot + "application/images/red.png");
      }
      // Change visibility
      if(ajax.tag2 == "IMAGE") {
        document.getElementById("txtImage").innerHTML = ajax.tag3;
        if(ajax.tag3 != ""){
          selectedNode.setIcon(ajax.tag4);
        } else {
          if(selNode.folder)
            selNode.setIcon(folderImageUrl);
          else
            selNode.setIcon(leafImageUrl);
        }
      }
      if(ajax.tag2 == "TAG2") {
        document.getElementById("txtFormat").innerHTML = selectedNode.text;
        document.getElementById("txtFormat").style.cssText = ajax.tag3;
        selectedNode.setStyle(ajax.tag3);
      }
    }

    // search
    if(aKey[0].firstChild.data == "SEARCH") {
      var items = ajax.xml.getElementsByTagName("item");
      var searchResult = document.getElementById("cmbResult");
      for(var i=0;i<items.length;i++) {
        var item = items[i];
        var type = item.getAttribute("type");
        comboAdd(searchResult,item.getAttribute("text"),item.getAttribute("id"), (type == "0" ? "color:#0899ed":"color:#ff6600"));
      }
      document.getElementById("btnSearch").disabled = false; 
    }
    
    if(aKey[0].firstChild.data == "LANGUAGE") {
      // set language
      dataLanguage = ajax.xml.getElementsByTagName("language")[0].firstChild.data;
      // now reload tree
      tree.init();

      if(userMode == 1) {
        // init property window
        propertyInit();
        clearEditWindow();
        // clear selection
        selectedNode = null;
        var dict = ajax.xml.getElementsByTagName("dict")[0].firstChild.data;
        // change dictionary
        editor.spellSetDictFile(dict);
      }
    }
    
    if(aKey[0].firstChild.data == "SYNC") {
      var path = ajax.xml.getElementsByTagName("path")[0].firstChild.data;
      tree.openNode(path);
      // now we ahve selected node
      selectedNode = tree.getSelectedNodes()[0];
    }
    
  } catch(e) {
    log("__ajax_callback",e,"");
  }
}

function onSave() 
{
    saveContent();
}

function saveContent(synchronous)
{
  try {
      if (selectedNode != null) {
          if (selectedNode.folder)
              return;
      }

      if (currentContentID == "") {
          alert(getString(10008));
          return;
      }

    var html = editor.editGetHtmlBody();
    var ajax = new Ajax();
    if(synchronous)
        ajax.asynchron = false;
    else 
        ajax.callback = __ajax_callback;
    var aParams = new Array();
    aParams[0] = ajax.createParam("key","SAVECONTENT");
    aParams[1] = ajax.createParam("param1", currentContentID);
    aParams[2] = ajax.createParam("param2",html);
    ajax.request(webRoot + "application/server.aspx?r=" + Math.random(),aParams);

    if (synchronous) {
      editor.editResetChanged();
    }

  } catch(e) {
    log("saveContent",e,"");
  }
}

function onDisplayLoad(evt)
{
  try {
    // Highlight search result
    var searchText = document.getElementById("txtSearch").value;
    // is highlight on
    if(isHighlight && searchText != "") {
      var doc = document.getElementById("display").contentWindow.document;
      highlightWords(doc, searchText,true);
    }
  } catch (e) {
  }
}

function showContainer(value, url)
{
  activeContainer = value;
  
  try {
    if(value == 2) {
      // disable editor
      document.getElementById("containerEditor").style.position = "absolute";
      document.getElementById("containerEditor").style.left = -5000;

      // disable remote
      document.getElementById("containerRemote1").style.position = "absolute";
      document.getElementById("containerRemote1").style.left = -5000;
      document.getElementById("containerRemote2").style.position = "absolute";
      document.getElementById("containerRemote2").style.left = -5000;
      
      // set display true
      document.getElementById("containerDisplay").style.width = "100%";
      document.getElementById("containerDisplay").style.height = "100%";
      document.getElementById("containerDisplay").style.position = "";
      document.getElementById("containerDisplay").style.left = 0;
      document.getElementById("containerDisplay").style.top = 0;
      document.getElementById("display").src = url;
      
      // set standard tab active
      objTabMain.setActiveTab(0);
      // call event
      activateTab(objTabMain.getTabItemByIndex(0));
      // disable editor
      var tabItem = objTabMain.getTabItemByIndex(2);
      tabItem.setEnabled(false);
      
    } else if( value == 3) {
      // REMOTE1
      // disable editor
      document.getElementById("containerEditor").style.position = "absolute";
      document.getElementById("containerEditor").style.left = -5000;
      // disable display
      document.getElementById("containerDisplay").style.position = "absolute";
      document.getElementById("containerDisplay").style.left = "-5000";
      //document.getElementById("containerDisplay").style.width = "1";
      document.getElementById("display").src = "";
      
      // set display true
      document.getElementById("containerRemote1").style.width = "100%";
      document.getElementById("containerRemote1").style.height = "100%";
      document.getElementById("containerRemote1").style.position = "";
      document.getElementById("containerRemote1").style.left = 0;
      document.getElementById("containerRemote1").style.top = 0;
      document.getElementById("containerRemote2").style.position = "absolute";
      document.getElementById("containerRemote2").style.left = -5000;
      if(document.getElementById("remote1").src.indexOf("wp1.html") <= 0)
        document.getElementById("remote1").src = webRoot + "application/remote/wp1.html";
      
      var tabItem = objTabMain.getTabItemByIndex(2);
      tabItem.setEnabled(true);
      
    } else if( value == 4) {
      // REMOTE2
      // disable editor
      document.getElementById("containerEditor").style.position = "absolute";
      document.getElementById("containerEditor").style.left = -5000;
      // disable display
      document.getElementById("containerDisplay").style.position = "absolute";
      document.getElementById("containerDisplay").style.left = "-5000";
      //document.getElementById("containerDisplay").style.width = "1";
      document.getElementById("display").src = "";
      
      // set display true
      document.getElementById("containerRemote2").style.width = "100%";
      document.getElementById("containerRemote2").style.height = "100%";
      document.getElementById("containerRemote2").style.position = "";
      document.getElementById("containerRemote2").style.left = 0;
      document.getElementById("containerRemote2").style.top = 0;
      document.getElementById("containerRemote1").style.position = "absolute";
      document.getElementById("containerRemote1").style.left = -5000;
      if(document.getElementById("remote2").src.indexOf("ss1.html") <= 0)
        document.getElementById("remote2").src = webRoot + "application/remote/ss1.html";
      
      var tabItem = objTabMain.getTabItemByIndex(2);
      tabItem.setEnabled(true);
    
    } else {
      // HTML EDITOR
      // disable display
      document.getElementById("containerDisplay").style.position = "absolute";
      document.getElementById("containerDisplay").style.left = "-5000";
      //document.getElementById("containerDisplay").style.width = "1";
      document.getElementById("display").src = "";

      // disable remote
      document.getElementById("containerRemote1").style.position = "absolute";
      document.getElementById("containerRemote1").style.left = -5000;
      document.getElementById("containerRemote2").style.position = "absolute";
      document.getElementById("containerRemote2").style.left = -5000;

      // display editor
      document.getElementById("containerEditor").style.position = "";
      document.getElementById("containerEditor").style.left = 0;
      //document.getElementById("containerEditor").style.width = "100%";

      var tabItem = objTabMain.getTabItemByIndex(2);
      tabItem.setEnabled(true);
    }
  } catch(e) {
  }
}

// mode: 1 = EDIT
function createLink(mode)
{
  try {
    var width = 600;
    var height = 500;

    // prepare link process
    if(!editor.editLink(1))
      return;

    // read parameters
    var editorParams = editor.editGetParameter();

    if(editorParams[3] == "0")
      mode = "1";
    else
      mode = "0";

    // pass link
    //params["link"] = editorParams[5]; 
    // pass editor
    //params["editor"] = editor; 
    // 1 = EDIT link
    //params["linkmode"] = (mode == 1) ? true:false; 

    // CREATE internal link
    if(mode != "1") {
      openDialogWindow("700","600",webRoot + "application/selectpage.aspx?type=2&r=" + Math.random());
    } else {
      //EDIT
      // do we have internal or external link ?
      if(editorParams[5].href.indexOf("/page.aspx?id") < 0) {
        // external
        var save = editor.globalUserMode;
        editor.globalUserMode = "1";
        editor.editLink();
        editor.globalUserMode = save;
      } else {
        // internal - we need id
        var link = editorParams[5].href;
        var id = link.substring(link.indexOf("/page.aspx?id=") + 14);
        openDialogWindow("700","600",webRoot + "application/selectpage.aspx?type=2&id=" + id + "&r=" + Math.random());
      }
    }
  } catch(Error) {
    log("createLink",e,"");
  }
};

function dialogLinkSave(id)
{
  try {
    editor.editLink(1);
    // read parameters
    var editorParams = editor.editGetParameter();
    var mode = "";
    if(editorParams[3] == "0")
      mode = "1";
    else
      mode = "0";

    if(mode == "0") {
      // create
      editor.editCreateLink("../application/page.aspx?id=" + id,"","");
    } else {
      // edit
      editor.__editRelativeSetUrl(editorParams[5],"../application/page.aspx?id=" + id);
    }
  } catch(e) {
    log("dialogLinkSave",e,"");
  }
}

function insertText()
{
  openDialogWindow("700","600",webRoot + "application/insert.aspx?r=" + Math.random());
}


function dialogInsertText(text)
{
  try {
    var html = editor.__editRelativeHtml(text);
    editor.editInsertHtml(html);
  } catch(e) {
  }
}

function setSynchronizeID(id)
{
  synchronizeID = id;
  synchronize();
}

function synchronize()
{
  try {
    if(synchronizeID != "") {
      // read id path from server
      var ajax = new Ajax();
      ajax.callback = __ajax_callback;
      var aParams = new Array();
      aParams[0] = ajax.createParam("key","SYNC");
      aParams[1] = ajax.createParam("param1",synchronizeID);
      ajax.request(webRoot + "application/server.aspx?r=" + Math.random(),aParams);
    }
  } catch(e) {
    log("synchronize",e,"");
  }
}

function importData()
{
  var width = "600";
  var height = "170";
  var url = webRoot + "application/import.aspx?r=" + Math.random();
  var left = screen.width/2 - width/2;
  var top = screen.height/2 - height/2;
  var win = window.open(url,"","left=" + left + ",top=" + top + ",height=" + height + ",width=" + width + ",resizable=0,status=0,scrollbars=0");
  win.focus();
}

function exportData()
{
  openDialogWindow("460","130",webRoot + "application/export.aspx?r=" + Math.random());
}

function showHelp()
{
  window.open(helpUrl,"","resizable=1,status=0,scrollbars=0");
}

function showAbout()
{
  openDialogWindow("520","350",webRoot + "application/about.aspx?r=" + Math.random());
}


function sessionExpired()
{
  setTimeout("sessionExpired_delay()",50);
}

function sessionExpired_delay()
{
  // Session expired - redirect
  if(userMode == 0) {
    top.location.href = webRoot + "default.aspx?r=" + Math.random();
  } else {
    top.location.href = webRoot + "login.aspx?r=" + Math.random();
  }
}

function logoff()
{
  windowClose = false;

//  // REMOTE
//  if(ext3) {
//    var rc = document.getElementById("remote1").contentWindow.rc;
//    rca.Exit();
//  }
//  
   
  try {
    var ajax = new Ajax();
    ajax.callback = __ajax_callback;
    var aParams = new Array();
    aParams[0] = ajax.createParam("key","LOGOFF");
    ajax.request(webRoot + "application/server.aspx?r=" + Math.random(),aParams);
  } catch(e) {
    log("logoff",e,"");
  }
}


function setTimeImageUploader()
{
  try {
    var ajax = new Ajax();
    ajax.asynchron = false;
    var aParams = new Array();
    aParams[0] = ajax.createParam("key", "INSERTIMAGE");
    ajax.request(webRoot + "application/server.aspx?r=" + Math.random(), aParams);
    ajax.xml = ajax.httpRequest.responseXML;
    if (ajax.xml.getElementsByTagName("path")[0].firstChild) {
      var path = ajax.xml.getElementsByTagName("path")[0].firstChild.data;
      if (path != "") {
        if (confirm(getString(10037))) {
          editor.editRelativeCreateImage(path);
        }
      }
    }
  } catch (e) {
    log("setTimeImageUploader", e, "");
  }
}


function setTime()
{

  try {
    var date = new Date();
    var h = date.getHours();
    var m = date.getMinutes() + "";
    if(m.length == 1)
      m = "0" + m;
    var s = date.getSeconds() + "";
    if(s.length == 1)
      s = "0" + s;
    document.getElementById("lblStatus3").innerHTML = h + ':' + m + ':' + s;
    
    checkSession++;
    if(checkSession > 60) {
      checkSession = 0;
      // check session timeout
      var ajax = new Ajax();
      ajax.callback = __ajax_callback;
      var aParams = new Array();
      aParams[0] = ajax.createParam("key","SESSION");
      ajax.request(webRoot + "application/server.aspx?r=" + Math.random(),aParams);
    }


  } catch(e) {
  }
}

var __editHighlightSeparator = ";";
var __editHighlightCaseSensitive = false;
var __editHighlightColor = "orange";

function highlightWords(doc, value, highlightAll)
{

  try {
    var fontElements = new Array();

    // search for all font tags
    var allFont = doc.body.getElementsByTagName("font");
    for(var i=0;i<allFont.length;i++) {
      var color = allFont[i].style.backgroundColor.toLowerCase();
      if(browser.ns)
        color = rgbToHex(color).toLowerCase();
      if(color == __editHighlightColor) {
        // this has the right color
        fontElements[fontElements.length] = allFont[i];
      }
    }
    // replace the tag with its content
    for(var i=0;i<fontElements.length;i++) {
      var curNode = fontElements[i];
			var frag = curNode.ownerDocument.createDocumentFragment();
			for(var j=0;j<curNode.childNodes.length;j++) {
				var subNode = curNode.childNodes[j].cloneNode(true);
        if(subNode.nodeType == 3) {
					var newNode = curNode.ownerDocument.createTextNode(subNode.nodeValue);
					frag.appendChild(newNode);
        } else {
					var newNode = subNode;
					frag.appendChild(newNode);
				}
      }
		  if(browser.ie) {
			  fontElements[i].replaceNode(frag);
		  } else {
			  fontElements[i].parentNode.replaceChild(frag,fontElements[i]);
      }
    }

    if(!value || value == "")
      return;

    // parse value
    // a;b;c   or a\;b;c
    
    // replace / char first
    value = value.replace(/\/;/gi,"##");
    var aValues = value.split(__editHighlightSeparator);
    for(var i=0;i<aValues.length;i++) {
      aValues[i] = aValues[i].replace(/##/gi,";");
    }

    var isDone = false;
    // highlight all values
    for(var i=0;i<aValues.length;i++) {
      var value = aValues[i];
      if(value != "") {
        
        // check if value has already been processed
        for(var j=0;j<i;j++) {
          if(aValues[j] == value) {
            isDone = true;
            break;
          }
        }
        if(!isDone) {
          // now search for values
          if(browser.ie) {
            var curRange = doc.body.createTextRange();

	          while(curRange.findText(value,1,__editHighlightCaseSensitive ? 4:0)){
	            try {
	              //curRange.select();
	              var currentHtml = curRange.htmlText;
                var space = ""; 
                curRange.pasteHTML("<font style='background-color:" + __editHighlightColor + "'>" +  currentHtml + "</font>" + space);
                if(!highlightAll)
                  break;
              } catch(Error) {break;}
            }
          } else {
            __editFFFindTextMatches = new Array();
		        __editFFFindText(doc, doc.body, value, !__editHighlightCaseSensitive, false);
		        if(__editFFFindTextMatches.length > 0) {
	            __editFFHighlightText(doc, value);
            }		        
          }
        }
      }
    }
	} catch (e) {
  }
};


var __editFFFindTextMatches = new Array();

function __editFFFindText(doc, body, query, ignoreCase, wholeWord) 
{
	__editFFFindTextMatches.length = 0;
	if (ignoreCase)
		query = query.toLowerCase();

	var tw = body.ownerDocument.createTreeWalker(body, NodeFilter.SHOW_TEXT, { acceptNode: function(node) {	return NodeFilter['FILTER_' + (RegExp(query, (ignoreCase ? 'i' : '')).test(node.nodeValue) ? 'ACCEPT' : 'REJECT')] } }, true);

	var offsets = [];
	offsets[-1] = query.length * -1;
	var totalMatches, trueOffsetDiff;
	var range = body.ownerDocument.createRange();

	while (tw.nextNode()) {
		totalMatches = tw.currentNode.nodeValue.split(RegExp(query, (ignoreCase ? 'i' : ''))).length - 1;
		for (var i = 0; i < totalMatches; i++) {
		  var checkWord = true;
		  if(wholeWord) {
		    if(tw.currentNode.nodeValue.length != query.length)
		      checkWord = false;
		  }
      if(checkWord) {
			  trueOffsetDiff = offsets[offsets.length - 1] + query.length;
			  offsets[offsets.length] = tw.currentNode.nodeValue.substr(trueOffsetDiff)[ignoreCase ? 'toLowerCase' : 'toString']().indexOf(query) + trueOffsetDiff;

			  range.selectNode(tw.currentNode);
			  range.setStart(tw.currentNode, offsets[offsets.length - 1]);
			  range.setEnd(tw.currentNode, range.startOffset + query.length);
			  __editFFFindTextMatches[__editFFFindTextMatches.length] = range.cloneRange();
      }
		}
		offsets.length = 0;
	}
	return (tw.currentNode != body);
};

function __editFFHighlightText(doc, value) 
{
	if (__editFFFindTextMatches.length > 0) {
	  while (__editFFFindTextMatches.length > 0) {
	    var sel = document.getElementById('display').contentWindow.getSelection(); 
      with (sel) {
			  removeAllRanges();
			  addRange(__editFFFindTextMatches.shift());
			  __FFInsertHtml(sel , doc, "<font style='background-color:" + __editHighlightColor + "'>" + value + "</font>");
		  }
    }
  }
};

function __FFInsertHtml(sel, doc, html)
{
  try {
    var buffer = doc.createElement("div");
    var range = sel.getRangeAt(0);
    buffer.innerHTML = html;
    range.deleteContents();
    var bufferRange = doc.createRange();
    bufferRange.selectNodeContents(buffer);
    var frag = bufferRange.cloneContents();
    range.insertNode(frag);
    range.detach();
  } catch (e) {
  }
}

function rgbToHex(rgbColor)
{
  var RGB = new Array(256);
  var k = 0;
  var hex = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
  var temp2 = "";

  if (rgbColor.indexOf("(") < 0)
    return rgbColor;
  if (rgbColor.indexOf(")") < 0)
    return rgbColor;

  try {
    for (var i = 0; i < 16; i++) {
      for (var j = 0; j < 16; j++) {
        RGB[k] = hex[i] + hex[j];
        k++;
      }
    }
    rgbColor = rgbColor.replace(/\(/, "<");
    rgbColor = rgbColor.replace(/\)/, ">");

    var reg = new RegExp("<[^>]+>", "gi");
    var result = rgbColor.match(reg);

    rgbColor = result[0];
    rgbColor = rgbColor.substring(1, rgbColor.length - 1);
    rgbColor = rgbColor.replace(/ /gi, "");
    var temp = rgbColor.split(",");
    temp2 = "#" + RGB[temp[0]] + RGB[temp[1]] + RGB[temp[2]];
  } catch (e) { };

  return temp2;
};

// Is called when the browser window is closed
// This function is not used as there are issues with session handling 22.3.2011
function onUnload(e)
{
  return;

  if(userMode == "1") {
    if(windowClose) {
      try {

//        // REMOTE
//        if(ext3) {
//          var rc = document.getElementById("remote1").contentWindow.rc;
//        }
//        
        var ajax = new Ajax();
        ajax.asynchron = false;
        var aParams = new Array();
        aParams[0] = ajax.createParam("key","LOGOFF");
        ajax.request(webRoot + "application/server.aspx?r=" + Math.random(),aParams);
        //document.location.href = document.location.href + "?f5=1";
      } catch(e) {
      }
      alert(getString(10031));
    }
  }
}

function onF5()
{
  windowClose = false;
}

//------------------------------------------------------------------------------------------------------------
// REMOTE
//------------------------------------------------------------------------------------------------------------
function openContent(node)
{
  if(node.text.indexOf(".doc") > 0) {
    if(document.getElementById("remote1").contentWindow.rca) {
      document.getElementById("remote1").contentWindow.rca.Open(node.key);
    } else {
      setTimeout("__temp_remote_delay_1()",5000);
    }
  }
  if(node.text.indexOf(".xls") > 0) {
    if(document.getElementById("remote2").contentWindow.rca) {
      document.getElementById("remote2").contentWindow.rca.Open(node.key);
    } else {
      setTimeout("__temp_remote_delay_2()",5000);
    }
  }
}

function __temp_remote_delay_1()
{
  try {
    document.getElementById("remote1").contentWindow.rca.Open(selectedNode.key);
  } catch(e) {}
}

function __temp_remote_delay_2()
{
  try {
    document.getElementById("remote2").contentWindow.rca.Open(selectedNode.key);
  } catch(e) {}
}

function showRemote(mode) 
{
  try {
    if(mode == 1) {
      // set editor tab hidden
      var itemEditor = objTabMain.getTabItemByIndex(2);
      var itemWP1 = objTabMain.getTabItemByIndex(3);
      var itemSS1 = objTabMain.getTabItemByIndex(4);
      itemEditor.setVisible(false);
      itemSS1.setVisible(false);
      itemWP1.setVisible(true);
      // call event
      objTabMain.setActiveTab(3);
      activateTab(itemWP1);
      showContainer(3);
    }
    if(mode == 2) {
      // set editor tab hidden
      var itemEditor = objTabMain.getTabItemByIndex(2);
      var itemWP1 = objTabMain.getTabItemByIndex(3);
      var itemSS1 = objTabMain.getTabItemByIndex(4);
      itemEditor.setVisible(false);
      itemWP1.setVisible(false);
      itemSS1.setVisible(true);
      // call event
      objTabMain.setActiveTab(4);
      activateTab(itemSS1);
      showContainer(4);
    }

  } catch(e) {}
}

function RCAEvent(message, params)
{
  try {
    if(message == "RCA_TOOLBARUPDATE") {
      if(params.indexOf("|") >=0) {
        var idx = params.indexOf("|");
        var bold = params.substring(idx +1 ,idx+2);
	      btnBold.setStatus(bold != 0 ? true:false);
      }
    }
    if(message == "RCA_DISCONNECTED") {
      // 
      if(activeContainer == 3) {
        document.getElementById("remote1").src = "about:blank";
      }
      if(activeContainer == 4) {
        document.getElementById("remote2").src = "about:blank";
      }
    }
  } catch(e) {
  }
}
