//dim appIcon as string ="http://static.teamwiki.net/img/icons/oxygen/info.png"


// ACHTUNG: neuer Server! Teamwiki.net  xxx
// ACHTUNG: neuer Server! Teamwiki.net

// alert("...ich bin scriptLib02.js  ++++ ")

// C:\yPara\scriptIDE4\scintillaConfig: [20:30:27] Max Weller : js.xml -> javascript.xml

//-->

quickTour_preload()

var el=findById("quickTourWindow")
if (el){
  // alert("onIniDone  2222")
  el.style.display="block"
}

cbb.init()


window.destroyEditor=function(){
  var oldEditor=findById("editorDiv")
  if(oldEditor) {
    removeElement(oldEditor)
  }
}//endFunction

window.editMenu=function() {
    wzOpenWindow("edit_wiki_menu")
    return
    
    
  destroyEditor()
  var q = window.glob_editorPara={}
  q.filetype="menu"
  q.id      =""
  q.user    =window.qqTW.pageInfo["user"]
  q.file    =""
  q.url     =""
  //  alert(q.url)
  var url= window.scriptRoot +"jsEd02.js"
  tWiki_loadScriptOnDemand(url)
}//endFunction

window.editFromId=function(id) {
  destroyEditor()
  var q = window.glob_editorPara={}
  q.filetype="page"
  q.id      =id
  q.user    =window.qqTW.pageInfo["user"]
  q.file    =""
  q.url     =""
  
  //  alert(q.url)
  var url= window.scriptRoot +"jsEd02.js"
  tWiki_loadScriptOnDemand(url)
}//endFunction




window.showEditor=function(){
  wzOpenWindow("edit_current_page");
  return
    
    
    // http://es.teamwiki..de/
  // alert("showEditor(lib02)")
  
  var id="useEd3"
  var state=wDesk_getCookie(id)
  var editorFile=window.scriptRoot +"jsEd02.js"
  if (state=="1"){
     // ...neuen editor testen
     // alert(state)
     editorFile=window.scriptRoot +"jsEd20.js"
  }
  
  if (window.qqTW.login.editallowed!="true") return
  
  var url= editorFile
  var el = findById("textareaEditor")
  if (el){
    // alert("showEditor-found")
    // ??? findById('grayout').style.display = "block";
    
    findById('editorwin').style.display  = "block";
    findById('textareaEditor').focus()
    // tWiki_loadScriptOnDemand(url)

  }else{
   tWiki_loadScriptOnDemand(url)
  }
}//endFunction  

window.hideEditor=function(){
  wzHideWindow()
  return
  
    var el
  el=findById('grayout'); if(el)el.style.display = "none";
  el=findById('editorwin'); if(el)el.style.display  = "none";
}//endFunction  


window.autostartEditor=function(){
  var cmd=window.location.search
  if (cmd.indexOf("editMode=1")>-1){
    // alert("autostartEditor")
    // window.location.search=""
    showEditor()
  }
}//endFunction  

autostartEditor()


//-->N O T F A L L - E D I T O R  -> Finger Weg!   ...garnicht wahr
window.onContainerDblClickPre=function(e){
  if(!e)e=window.event
  var target=resolveTarget(e)
  
  // alert("onContainerDblClickPre")
  // var action=findAttribute(target, "actionOnDblClick" )


  var such="dblclickaction"
  var el=findElementByAttribute(target, such)
  if(el){
    var action=el.getAttribute(such)
    if (action=="skipAll"){
      // alert("skipAll")                                      // ...skip
      return
    }
    if (action=="skipEditMe"){
      //alert("onContainerDblClickPre: skipEditMe")              // ...skip
      return
    }
    
    if (action=="editMe"){                                     // NEU: ...BlogItem editieren
      var id=el.getAttribute("pageid")
      // alert("dblclickaction: "+id+"<--")
      window.qqTW.login.editallowed="true"
      editFromId(id)
      return
    }
  }
  
  showEditor()
  return
  
  if (!e)e=window.event
  if (!e.ctrlKey && ! e.shiftKey){
    onContainerDblClick(e) 
    return
  }
  var curEditor=findById("domDialog_edit")
  alert(curEditor)
  if(curEditor)removeElement(curEditor)
  var el=document.body
  var req = document.createElement("SCRIPT");
  if (e.ctrlKey){
    var url = "http://teamwiki.de/static/js/webEditor_nf.js";
  }else{
    var url = "http://teamwiki.de/static/js/edit_html_dev.js";
    // var url = "http://teamwiki.de/static/js/webEditor_nf.js";
  }
  // alert("NOTFALL-EDITOR: "+url)
  req.src=url
  el.appendChild(req);
  // el.removeChild(req);// ie mag das nicht
}//endFunction  



//--> E V E N T S
document.body.ondblclick=onContainerDblClickPre;

document.onmousedown= function(e){
  // alert("onmousedown")
  onContainerMouseDown(e)
}//endFunction

document.onmouseup= function(e){
  // alert("onmouseup")
  onContainerMouseUp(e)
}//endFunction

document.onkeydown = function(e){
  if(!e) e=window.event;  
  if(e.ctrlKey && e.shiftKey) {
    window.globSkipAllIni=false
    // alert("skipAll") 
  }
  var target = resolveTarget(e);
  var key=e.keyCode
  var div = findById("twMicroDebugMonitor");
  if(div)div.innerHTML =key+" "+target.tagName+" ["+eventname+"]";
  printLine(1, key, "DOWN: "+target.tagName)

  keyboardMonitor("onkeydown", e);
}//endFunction


document.onkeyup = function(e){
  if(!e) e=window.event;
 var target = resolveTarget(e);
  var key=e.keyCode
  var div = findById("twMicroDebugMonitor");
  if(div)div.innerHTML =key+" "+target.tagName+" ["+eventname+"]";
  printLine(2,key, "UP: "+target.tagName)
  // keyboardMonitor("onkeyup", e);
}//endFunction


document.onkeypress = function(e){
   if(!e) e=window.event;
  var target = resolveTarget(e);
  var key=e.keyCode
  var div = findById("twMicroDebugMonitor");
  if(div)div.innerHTML =key+" "+target.tagName+" ["+eventname+"]";
  printLine(3,key,"PRESS: "+target.tagName)
  // keyboardMonitor("onkeypress", e);
}//endFunction


window.keyboardMonitor = function(eventname, e) {

    //alert("keyboardMonitor")
  var target = resolveTarget(e);
  var key=e.keyCode
 
// ...der chrome mag mich nicht
//  if (key==27||key==112||key==113||key==114||key==115||  key==115  ||key==117||key==118||key==119||key==121){
    if (key==27||key==112||key==113||key==114||key==115||  key==115  ||key==117||key==118||key==119||key==121){
//    // alert("treffer")
      cancelEvent(e)
   }

  //NEU: es
  if (window.pinboard_keyboardHook) {
    var result=pinboard_keyboardHook(eventname,e)
    if (result==true) return result
  }

  // es:meinKeyboardHook -- > finger weg ;-)
  // try{eval("globKeyboardHook_"+key+"(e)")}catch(ex){}
  
  if(eventname != "onkeydown") return
  // alert(key)
  switch(key) {
     //  case 13:
      // alert("case 13:")
      // alert("ENTER")
      //  if (e.ctrlKey){
       //   alert("e.ctrlKey")
       //   cancelEvent(e)
       //    // alert("controlENTER")
       //    showEditor()
       //    break;
       //  }
    case 27: 
      // alert("case 27")   
      hideEditor()
      
      // bei Escape - Focus auf suchBox   ~mw
      var box = findById("searchinput");
      box.value = ''
      box.focus();
      box.value = ''
      
      break;
    case 77: //M  
      if (e.ctrlKey){
        // alert("case 77: //M")
        editMenu()
        cancelEvent(e)
        break;
      }
    case 121:
      // loadHelp();
      break;
    case 112:
     // alert("case 112")
     showEditor();
      break;
    case 113:
      // alert("case 113")
      editMenu()
      break;
    case 119:  // F8 -- adminMode
      if( mw_adminModus) mw_adminModus(e);
      cancelEvent(e);
      break;
    case 123:
      if (window.pinboardKeyHandler)pinboardKeyHandler(e);
      break;
  }
  // return false  
}//endFunction


//-->
//--> myFindInPage




window.myFindInPage={}

// * Find In Page Script -- Submitted/revised by Alan Koontz (alankoontz@REMOVETHISyahoo.com)
// * Visit Dynamic Drive (http://www.dynamicdrive.com/) for full source code
// * This notice must stay intact for use

//  revised by Alan Koontz -- May 2003

myFindInPage.TRange = null;
myFindInPage.dupeRange = null;
myFindInPage.TestRange = null;
myFindInPage.win = null;


//  SELECTED BROWSER SNIFFER COMPONENTS DOCUMENTED AT
//  http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html

myFindInPage.nom = navigator.appName.toLowerCase();
myFindInPage.agt = navigator.userAgent.toLowerCase();
myFindInPage.is_major   = parseInt(navigator.appVersion);
myFindInPage.is_minor   = parseFloat(navigator.appVersion);
myFindInPage.is_ie      = (myFindInPage.agt.indexOf("msie") != -1);
myFindInPage.is_ie4up   = (myFindInPage.is_ie && (myFindInPage.is_major >= 4));
myFindInPage.is_not_moz = (myFindInPage.agt.indexOf('netscape')!=-1)
myFindInPage.is_nav     = (myFindInPage.nom.indexOf('netscape')!=-1);
myFindInPage.is_nav4    = (myFindInPage.is_nav && (myFindInPage.is_major == 4));
myFindInPage.is_mac     = (myFindInPage.agt.indexOf("mac")!=-1);
myFindInPage.is_gecko   = (myFindInPage.agt.indexOf('gecko') != -1);
myFindInPage.is_opera   = (myFindInPage.agt.indexOf("opera") != -1);


//  GECKO REVISION

myFindInPage.is_rev=0
if (myFindInPage.is_gecko) {
  var temp = myFindInPage.agt.split("rv:")
  myFindInPage.is_rev = parseFloat(temp[1])
}


//  USE THE FOLLOWING VARIABLE TO CONFIGURE FRAMES TO SEARCH
//  (SELF OR CHILD FRAME)

//  If you want to search another frame, change from "self" to
//  the name of the target frame:
//  e.g., var frametosearch = 'main'

//var frametosearch = 'main';
myFindInPage.frametosearch = self;






// function search(searchItem, whichform, whichframe) {
myFindInPage.search=function(searchItem) {

  //  TEST FOR IE5 FOR MAC (NO DOCUMENTATION)
  if (myFindInPage.is_ie4up && myFindInPage.is_mac) return;

  //  TEST FOR NAV 6 (NO DOCUMENTATION)
  if (myFindInPage.is_gecko && (myFindInPage.is_rev <1)) return;

  //  TEST FOR Opera (NO DOCUMENTATION)
  if (myFindInPage.is_opera) return;

  //  INITIALIZATIONS FOR FIND-IN-PAGE SEARCHES

  var str = searchItem;
  var win = window // document.body // whichframe;
  var frameval=false
  
  // if(whichform.findthis.value!=null && whichform.findthis.value!='') {
    // str = whichform.findthis.value;
    // str = searchItem;
    // win = document.body // whichframe;
    // var frameval=false;
    // if(win!=self) {
    //   frameval=true;  // this will enable Nav7 to search child frame
    //   win = parent.frames[whichframe];
    // }
  // }else{
  //    return;  //  i.e., no search string was entered
  // }
  var strFound;

  //  NAVIGATOR 4 SPECIFIC CODE
  if(myFindInPage.is_nav4 && (myFindInPage.is_minor < 5)) {
    strFound=win.find(str); // case insensitive, forward search by default

    //  There are 3 arguments available:
    //  searchString: type string and it's the item to be searched
    //  caseSensitive: boolean -- is search case sensitive?
    //  backwards: boolean --should we also search backwards?
    //  strFound=win.find(str, false, false) is the explicit
    //  version of the above
    //  The Mac version of Nav4 has wrapAround, but
    //  cannot be specified in JS
  }

  //  NAVIGATOR 7 and Mozilla rev 1+ SPECIFIC CODE (WILL NOT WORK WITH NAVIGATOR 6)
  if (myFindInPage.is_gecko && (myFindInPage.is_rev >= 1)) {
    
    // xxx if(frameval!=false) win.focus(); // force search in specified child frame
    
    strFound=win.find(str, false, false, true, false, frameval, false);

    //  The following statement enables reversion of focus 
    //  back to the search box after each search event 
    //  allowing the user to press the ENTER key instead
    //  of clicking the search button to continue search.
    //  Note: tends to be buggy in Mozilla as of 1.3.1
    //  (see www.mozilla.org) so is excluded from users 
    //  of that browser.

    
    
    // xxx if (myFindInPage.is_not_moz)  whichform.findthis.focus();

    //  There are 7 arguments available:
    //  searchString: type string and it's the item to be searched
    //  caseSensitive: boolean -- is search case sensitive?
    //  backwards: boolean --should we also search backwards?
    //  wrapAround: boolean -- should we wrap the search?
    //  wholeWord: boolean: should we search only for whole words
    //  searchInFrames: boolean -- should we search in frames?
    //  showDialog: boolean -- should we show the Find Dialog?
  }

  if (myFindInPage.is_ie4up) {
   // EXPLORER-SPECIFIC CODE revised 5/21/03
    if (myFindInPage.TRange!=null) {
      myFindInPage.TestRange=win.document.body.createTextRange();
      if (myFindInPage.dupeRange.inRange(myFindInPage.TestRange)) {
        myFindInPage.TRange.collapse(false);
        strFound=myFindInPage.TRange.findText(str);
        if (strFound) {
          //the following line added by Mike and Susan Keenan, 7 June 2003
          win.document.body.scrollTop = win.document.body.scrollTop + myFindInPage.TRange.offsetTop;
          TRange.select();
        }
      }else {
        myFindInPage.TRange=win.document.body.createTextRange();
        myFindInPage.TRange.collapse(false);
        strFound=myFindInPage.TRange.findText(str);
        if (strFound) {
           //the following line added by Mike and Susan Keenan, 7 June 2003
           win.document.body.scrollTop = myFindInPage.TRange.offsetTop;
           myFindInPage.TRange.select();
        }
      }
    }
    if (myFindInPage.TRange==null || strFound==0) {
      myFindInPage.TRange=win.document.body.createTextRange();
      myFindInPage.dupeRange = myFindInPage.TRange.duplicate();
      strFound=myFindInPage.TRange.findText(str);
      if (strFound) {
        //the following line added by Mike and Susan Keenan, 7 June 2003
       win.document.body.scrollTop = myFindInPage.TRange.offsetTop;
        myFindInPage.TRange.select();
      }
    }
  }
  if (!strFound) alert ("String '"+str+"' not found!") // string not found
}//endFunction

// <!--  EXAMPLE FORM OF FIND-IN-PAGE SEARCH USING SUBMIT (ALLOWING 'ENTER/RETURN' KEY PRESS EVENT) -->
// <form name="form1" onSubmit="search(document.form1, frametosearch); return false">
// <input type="text" name="findthis" size="15" title="Press 'ALT s' after clicking submit to repeatedly search page"> 
// <input type="submit" value="Find in Page" ACCESSKEY="s">
// </form>


//test: myFindInPage.search(searchItem)






//-->
//-->highlighter


window.highlightSearchItems=function(){ 
  var searchItem=findSearchItem()
  // alert(searchItem)
  if (!searchItem) return
  
  var navigator=createFindNavigator()
  
  var bgCOLORS=["yellow","#bbf","#bfb","#fbb","#ffb","#bff","#fbf","#99f","#9f9","#f99" ]
  searchItem=replaceAll(searchItem, "%20", " ")
  searchItem=replaceAll(searchItem, "+", " ")
  var DATA=searchItem.split(" ")
  var max=DATA.length
  for (var i=0; i < max; ++i){
    var item=DATA[i]
    var bgColor=bgCOLORS[i]
    var count=highlightItem(item, bgColor)
    addNavItem(navigator, item, bgColor, count)
    // alert(found)
  }
}//endFunction

window.addNavItem=function(container, item, bgColor, count){
  var div=document.createElement("DIV")
  div.className="FindNavigatorItem"
  // div.id="FindNavigator"
  container.appendChild(div)
  div.innerHTML='<span style="background-color: '+bgColor+'">'+item+'</span> ('+count+') '
}//endFunction


window.createFindNavigator=function(){
  var parent=document.body
  var div=document.createElement("DIV")
  div.className="FindNavigator"
  div.id="FindNavigator"
  parent.appendChild(div)

  // var template=toolWindow_propEditorTemplate()
  div.innerHTML="moveMe...<br>"

  var ss=div.style
  ss.textAlign="left"
  ss.position="fixed"
  ss.padding="5px"
  ss.border="1px outset #bbb"
  ss.left   = 100+"px"
  ss.top    = 100+"px"
  ss.backgroundColor="#eeeeee"
  ss.minimumWidth="200px"
  return div

}//endFunction



window.findSearchItem=function(){
  var paraName="highlight="
  var para =window.location.search+"&&"
  para=para.substr(1)
  var parts=para.split("&")
  for (var i=0; i<parts.length; i++){
    // alert(parts[i])
    var item=parts[i]
    // alert(item)
    if (item.indexOf(paraName)>-1){ 
      return item.substr(paraName.length)
      // alert(newDoc)
    }
  }  
  return false
}//endFunction



window.highlightItem=function(item, bgColor){
  var count=0, dv;
  if(item==null || item.length==0)
    return;
  dv=document.defaultView;

  window.status="Searching for '"+item+"'...";
  searchWithinNode(document.body, item.toUpperCase(), item.length);
  window.status="Found "+count+" occurrence"+(count==1?"":"s")+" of '"+item+"'.";


  function searchWithinNode(node, te, len){
    var pos, skip, spannode, middlebit, endbit, middleclone;
    skip=0;
    if( node.nodeType==3 ){
      pos=node.data.toUpperCase().indexOf(te);
      if(pos>=0){
        // spannode=document.createElement("SPAN");
        // spannode=document.createElement("STRONG");
        spannode=document.createElement("tt");
        spannode.style.backgroundColor=bgColor;
        spannode.style.font="inherit"
        spannode.style.color="#000000"
        middlebit=node.splitText(pos);
        endbit=middlebit.splitText(len);
        middleclone=middlebit.cloneNode(true);
        spannode.appendChild(middleclone);
        middlebit.parentNode.replaceChild(spannode,middlebit);
        ++count;
        skip=1;
      }
    }
    else if( node.nodeType==1 && node.childNodes && node.tagName.toUpperCase()!="SCRIPT" && node.tagName.toUpperCase!="STYLE"){
      for (var child=0; child < node.childNodes.length; ++child){
        child=child+searchWithinNode(node.childNodes[child], te, len);
      }
    }
    return skip;
  }
  return count
}//endFunction




highlightSearchItems()

//-->
//-->loadWikifyer

window.LoadWikifyer=function() {
  var url= window.scriptRoot +"wikifyer.js"
  tWiki_loadScriptOnDemand(url)
}//endFunction

window.loadMacroHelper=function() {
  var url= window.scriptRoot +"macros.js"
  tWiki_loadScriptOnDemand(url)
}//endFunction



window.wikifyEx=function(content) {
  var newDiv=document.createElement("DIV")
  wikify(content, newDiv)
  return newDiv.innerHTML
}//endFunction

window.setTimeout("LoadWikifyer()",33);
window.setTimeout("loadMacroHelper()",444);





//-->
//-->Profiler/INI
window.globStartTime2=new Date()

if (window.onIniDone){
  // alert("onIniDone ???")
  // alert("window.onIniDone - FOUND")
  if (window.globSkipAllIni==true){
    alert("skipIni")
  }else{
    onIniDone()
  }
}

// addEvent(window.document, "mousemove", onMouseMove)
// alert("scriptLib02")




//-->
//-->KOMMENTARE

window.commentForm_htmlTemplate = function(reply_to){
  var LF=String.fromCharCode(10); var q=''
  // q+=LF+' <div id="send_comment"> '
  q+=LF+'<p id="reply_to_block"><label for="in_reply_to2">Antwort auf Kommentar:</label> '
  q+=LF+'<input type="text" name="in_reply_to2" id="in_reply_to2" disabled="disabled" value="-" /></p> '
  
  q+=LF+' '
  q+=LF+'<form action="/php/send_wikimail.php" method="post" id="add-comment-form" name="addcommentform"> '
  q+=LF+'<input type="hidden" name="to_uid" value="||to_uid||" /> '
  q+=LF+' '
  q+=LF+'<input type="hidden" name="to_pid" value="||to_pid||" /> '
  q+=LF+'<input type="hidden" name="put_comment" value="1" /> '
  q+=LF+'<input type="hidden" name="in_reply_to" value="" /> '
  q+=LF+' '
  q+=LF+'<label for="comment-from">Von:</label> '
  q+=LF+'<input type="text" name="from" id="comment-from" ||COMMENT_FROM_DISABLED|| value="||USER_NAME||" /><br> '
  q+=LF+' '
  q+=LF+'<label for="comment-title">Betreff:</label> '
  q+=LF+'<input type="text" name="title" id="comment-title" value="" /><br><br> '
  q+=LF+' '
  q+=LF+'<p>Hier einen <b>Kommentar-Text</b> eingeben ... <br /> '
  q+=LF+' '
  q+=LF+'<textarea name="bodysource" id="comment-textbox" style="width:100%; height:200px;"></textarea> '
  q+=LF+'<textarea name="wikified" id="comment-wikified" style="display:none"></textarea><br> '
  q+=LF+'<small>(Formatierung per wikiText m&ouml;glich, bitte Bilder nicht unberechtigt verwenden)</small></p> '
  q+=LF+' '
  q+=LF+'<p><b>Spam-Schutz</b> - Bitte geben Sie alle Zeichen aus dem Bild ein: '
  q+=LF+'<br> '
  q+=LF+'<img src="http://teamwiki.net/php/inc/captcha/securimage_show.php" alt="Captcha" />'
  q+=LF+' &nbsp; &nbsp; &nbsp; <input type="text" name="spam_schutz" size="10" style="width:90px;" /> (nicht ausgewertet)</p>'
  q+=LF+' '
  q+=LF+'<p><input type="button" value="    Absenden    " onclick="submitCommentForm();" /> '
  q+=LF+'<input type="button" value="    Abbrechen   " onclick="commentForm_create();" /></p> '
  q+=LF+'</form> '
  q+=LF+' '
  //q+=LF+'</div> '  //send_comment
  q+=LF+' '
  q+=LF+'  '
  q=replaceAll(q, '_|APO|_', "'")
  q=replaceAll(q, '||to_uid||', qqTW.pageInfo.user)
  q=replaceAll(q, '||to_pid||', qqTW.pageInfo.id)
  q=replaceAll(q, '||USER_NAME||', qqTW.login.fullname)
  q=replaceAll(q, '||COMMENT_FROM_DISABLED||', qqTW.login.username==''?'':'disabled="disabled"')
  return q
}//endFunction

window.commentForm_create = function(target) {
  commentForm_destroy()
  location.hash = '#comments';
  var template=commentForm_htmlTemplate()
  
  var newDiv=document.createElement("DIV")
  newDiv.id="comEditorWINDOW"
  newDiv.innerHTML=template
  newDiv.style.display="block"
  target.appendChild(newDiv)
  target.style.display="block"
  return newDiv
}//endFunction

window.commentForm_destroy = function() {
  var oldEditor=findById("comEditorWINDOW")
  // alert(oldEditor)
  if (oldEditor != null) removeElement(oldEditor)
}//endFunction

window.openCommentForm = function() {
  target=findById("send_comment")
  var comEditor=commentForm_create(target)
  comEditor.className="editorMainComment"
  // alert(target.className)
  // var el = findById('send_comment');
  // if (el.style.display=='block') {
  //   el.style.display='none';
  // } else {
  //   el.style.display='block';
  // }
  
  //findById('send_comment_btn').disabled='disabled';
  //findById('send_comment_btn2').disabled='disabled';
}//endFunction


window.replyToComment = function(sender, rep_id, rep_num, rep_title) {
  // alert(sender)
  if (qqTW.pageInfo.cankom != "true"){
    alert("SORRY - Du bist nicht berechtigt, diese Seite zu kommentieren")
    return
  }
  var target=findParentNodeByClass(sender, "main-comment-outerdiv",true)
  // target.style.backgroundColor="#ff0000"
  // alert(target.className)
  var comEditor=commentForm_create(target)
  comEditor.className="editorSubComment"
  
  // return

  document.forms.addcommentform.in_reply_to.value = rep_id;
  findById('in_reply_to2').value = "[ " + rep_num + " ]   "+ rep_title;
  findById('comment-title').value = "RE: "+ rep_title;
  findById('reply_to_block').style.display = 'block';
}//endFunction

window.submitCommentForm = function() {
  var tx = findById("comment-textbox");
  var txwiki = findById("comment-wikified");
  
  var wikitext = wikifyEx( tx.value);
  txwiki.value = wikitext;
  
  var form = findById("add-comment-form");
  form.submit();
}

//->
//->KOMMENTARE-inlineEditor


window.onCommentDblClick=function(e){
  if (!e)e=window.event
  var target=resolveTarget(e)
  e.cancelDefault = true;
  e.cancelBubble=true; 
  if (e.stopPropagation)e.stopPropagation();
  // trace("type: ", e.type)
  // alert("cancelEvent ???", e.type)
  
  // alert(target.className)
  inlineEditor(target, '145', '4', 'inlineEditor testSeite 4')
  return false
}//endFunction


window.commentInlineEditorTemplate=function(){
  var LF=String.fromCharCode(10); var q=''
  q+=LF+'<form name="editcommentform"action="/php/send_wikimail.php" onkeydown="inlineEditorKeyDown(event)" method="post"> '
  q+=LF+'<input type="hidden" name="m" value="edit_comment" /> '
  q+=LF+'<input type="hidden" name="id" value="CONTENT.id" /> '
  q+=LF+' '
  q+=LF+'<p> <input type="text" name="subject" style="width:100%" VALUE="CONTENT.subject" /> </p>'
  q+=LF+' '
  q+=LF+'<textarea name="wikified" style="display:none" >CONTENT.body</textarea> '
  q+=LF+'<p> <textarea id="commentTextArea" name="bodysource" style="width:100%; height:150px; " >CONTENT.body_source</textarea> </p>'
  q+=LF+' '
  q+=LF+'<input type="button" onclick="commentContentSubmit()" value="Speichern" /> '
  q+=LF+'<input type="button" onclick="commentInlineEditorDestroy(this)" value="Abbrechen" /> '
  q+=LF+' '
  q+=LF+'</form> '
  q+=LF+' '
  q=replaceAll(q, '_|APO|_', '***')
  return q
}//endFunction


window.inlineEditorKeyDown = function(e) {
  if(!e)e=window.event
  var target=resolveTarget(e)
  var key=e.keyCode
  // alert(key)
  var comment=findParentNodeByClass(target, "comment-block",true)

  switch(key) {
    case 27:
      showHideCommentIten(comment,true);
      commentInlineEditorDestroy(target)
     break;
    case 13:
      if(e.ctrlKey){
        commentContentSubmit();
        break;
    }
  }
  return false  


}//endFunction



window.inlineEditor = function(sender, rep_id, rep_num, rep_title) {
  // alert(sender)

  if (findById("comEditorInline")) return

  if (qqTW.pageInfo.cankom != "true"){
    alert("SORRY - Du bist nicht berechtigt, diese Seite zu kommentieren")
    return
  }

  var target=findParentNodeByClass(sender, "comment-block",true)
  var fromUser=target.getAttribute("fromUser")
  if (fromUser != window.qqTW.login.username || fromUser == "") {
     alert ("ERROR: ... nicht berechtigt")
     return
  }

  // var target=sender
  showHideCommentIten(target, false)

  var newDiv=document.createElement("DIV")
  var template=commentInlineEditorTemplate()
  newDiv.id="comEditorInline"
  newDiv.innerHTML=template
  newDiv.style.display="block"
  target.appendChild(newDiv)
  target.style.display="block"

  // alert(target.getAttribute("commentID"))

  var id=target.getAttribute("commentID")

  var url=window.editorService
  url=url+"?filetype=comment"
  url=url+"&m=read"
  url=url+"&id="+id
  url=url+"&destFuncName="+"commentContentLoaded"  
  tWiki_loadScriptOnDemand(url)
  findById("commentTextArea").focus()
  return


  // target.style.backgroundColor="#ff0000"
  // alert(target.className)
  // var comEditor=commentForm_create(target)
  
  // comEditor.className="editorSubComment"
  

  document.forms.addcommentform.in_reply_to.value = rep_id;
  findById('in_reply_to2').value = "[ " + rep_num + " ]   "+ rep_title;
  findById('comment-title').value = "RE: "+ rep_title;
  findById('reply_to_block').style.display = 'block';
}//endFunction


window.jsRequest_commentContentLoaded=function(HEADER, CONTENT){
 // alert(CONTENT["info"]["body_source"])
document.forms.editcommentform.id.value=CONTENT["info"]["id"]
document.forms.editcommentform.subject.value=specialUnmask(CONTENT["info"]["subject"])
document.forms.editcommentform.bodysource.value=specialUnmask(CONTENT["info"]["body_source"])

}//endFunction

window.commentContentSubmit=function(){
  document.forms.editcommentform.wikified.value=wikifyEx(document.forms.editcommentform.bodysource.value)
  document.forms.editcommentform.submit()
}//endFunction

window.commentInlineEditorDestroy=function(ref){
  var outerDiv=findParentNodeByClass(ref, "comment-block",true)
  showHideCommentIten(outerDiv, true)
  var editor=findById("comEditorInline")
  if (editor)removeElement(editor)
}//endFunction


window.showHideCommentIten=function(outerDiv, state){
  var ss1=findChildByClass(outerDiv,"comment-user",true).style
  var ss2=findChildByClass(outerDiv,"comment-cont",true).style
  if (state==true){
    display="block"
  }else{
    display="none"
  } 
  ss1.display=display  
  ss2.display=display  
}//endFunction






//-->
//-->toggle


window.twiki_toggleDevTools=function(){
  var el=findById("domDialog_devTools")
  if(el){
    var ss=el.style
    if (ss.display=="none"){
      ss.display=""
    }else{
      ss.display="none"
    }
  }else{
    tWiki_loadScriptOnDemand("http://teamwiki.de/static/js/dev_tools.js") 
  }
}//endFunction


window.twiki_toggleMicroIde=function(){
  var el=findById("rendarMain")
  if(el){
    twiki_toggleMicroIde2()
  }else{
    tWiki_loadScriptOnDemand("http://teamwiki.de/static/js/web_ide.js") 
  }
}//endFunction

window.twiki_toggleMicroDomViewer=function(){
  var el=findById("domDialog_domViewer2007")
  if(el){
    var ss=el.style
    if (ss.display=="none"){
      ss.display=""
    }else{
      ss.display="none"
    }
  }else{
    tWiki_loadScriptOnDemand('http://teamwiki.de/static/js/html_domViewer.js')
    window.setTimeout("tWiki_loadScriptOnDemand('http://teamwiki.de/static/js/html_domViewer.js')",1555)    
  }
}//endFunction


//-->
//-->tabSlider


window.onSliderClick=function(target){
  var container=findParentNodeByClass(target, "sliderContainer",true)
  // alert("container: "+container.tagName+" "+container.className)

  var imgTag=findChildByClass(container,"sliderUpDownImage")
  // if(imgTag) alert("imgTag : "+imgTag.tagName+" "+imgTag.className)

  var sliderBody=findChildByClass (container,"sliderBody",true)
  var className=sliderBody.className
  
  if (className=="sliderBodyCollapsed"){
    sliderBody.className="sliderBodyExpanded"
    sliderBody.style.display="block"
    if(imgTag) imgTag.src = "/static/icons/pfeil03up.gif ";
  }else{
    sliderBody.className="sliderBodyCollapsed"
    sliderBody.style.display="none"
    if(imgTag) imgTag.src = "/static/icons/pfeil03.gif";
  }
  var action=container.getAttribute("action1")
  // alert(action)
  if (action && action !="NO-ACTION") {
    // alert(action)
    var execute=eval(action)
    execute(container)
  }
  var runOnce=container.getAttribute("action_runOnce")
  // alert(runOnce)
  if (runOnce && runOnce !="NO-ACTION") {
    // alert(action)
    var execute=eval(runOnce)
    execute(container)
  }
}//endFunction



window.onTabSliderClick2=function(target){
  var sliderIndex=target.getAttribute("tabSliderIndex")
  
  // alert("onTabSliderClick2")
  // alert(sliderIndex)
  var container=findParentNodeByClass(target, "tabSliderOuterDiv",true)
  
  
  // alert("onTabSliderClick2 container: "+container.tagName+" "+container.className)

  var imgTag=findChildByClass(container,"sliderUpDownImage")
  // if(imgTag) alert("imgTag : "+imgTag.tagName+" "+imgTag.className)
  
  // var TABS=findAllChildsByClass(container,"wEditSel",true,false,false)
  var TABS=findAllChildsByClass(container,"twiki-tabslider-tab",true,false,false)
  var max=TABS.length
  
  
  // alert(max)
  for (var index in TABS){
    TABS[index].className="twiki-tabslider-tabunselected"
    // alert(sliderIndex,(parseInt(index)+1))
    if (sliderIndex==(parseInt(index)+1)){
      TABS[index].className="twiki-tabslider-tabactive"
    }
  }

  // var SLIDERS=findAllChildsByClass(container,"sliderContainer",true,false,false)
  //                           ...(startNode,childName,partial,firstChildsOnly,includeContainer)
  var SLIDERS=findAllChildsByClass(container,"tabSliderContainer",true,false,false)
  var max=SLIDERS.length
  
  // alert("FOUND: "+max)
  
  for (var index in SLIDERS){
    var tabSliderItem=SLIDERS[index]
    if (typeof(tabSliderItem)=='function') continue
    
    // alert(tabSliderItem) 
    // alert(typeof(tabSliderItem))
    var sIndex=tabSliderItem.getAttribute("tabSliderIndex")
    // alert("sIndex",sIndex)
    if (sIndex==sliderIndex){
            
      tabSliderItem.style.display="block"
      var action=tabSliderItem.getAttribute("action1")
      // alert(action)
      if (action && action !="NO-ACTION") {
        // alert(action)
        //tabSliderItem.setAttribute("action1")
        var execute=eval(action)
        execute(container)
      }
      var textarea=findChildByClass(tabSliderItem, "permaeditor_textarea", true)
      if (textarea){
        // alert(textarea)
        var filespec=textarea.getAttribute("filespec")
        alert(filespec)
      }
    }else{
      tabSliderItem.style.display="none"
    }
  }
}//endFunction



window.permaEdit_onFocus= function(e){
  if(!e)e=window.event; var target=resolveTarget(e)
  var id=target.id
  // saveTextarea(id)
}//endFunction


window.permaEdit_onBlur= function(e){
  if(!e)e=window.event; var target=resolveTarget(e)
  var id=target.id
  var isDirty=target.getAttribute("isDirty")
  
  // alert("isDirty: "+isDirty)
  if (isDirty=="TRUE"){
    target.setAttribute("isDirty","FALSE")
    saveTextarea(id)
  }
}//endFunction




window.onTextareaDirtyState=function(target){
  var lastDirtyState=target.getAttribute("isDirty")
  target.setAttribute("isDirty","TRUE")
  if (lastDirtyState != "TRUE") {
    // alert("... ich schalte jetzt um auf editierModus")
    var indicator=findById("webEditorActivityIndicator")
    // indicator.src="http://teamwiki.de//static/icons/nuvola/16x16/actions/ledyellow.png"
    indicator.src="http://teamwiki.de//static/icons/nuvola/16x16/actions/ledorange.png"
    // window.setTimeout("loadTiddlyWikiInHiddenIframe()",111)
        
    // ...entfällt:  preloadWikifier(11)
  }
}//endFunction    

 
window.onTextareaResetDirtyState=function(MES){
  var target=findById("wikiText_webEditor")  //...provisorisch
  target.setAttribute("isDirty","FALSE")
  var indicator=findById("webEditorActivityIndicator")
  indicator.src="http://teamwiki.de/static/icons/nuvola/16x16/actions/ledlightgreen.png"
}//endFunction  

window.onTextareaKeyUp=function(e){
  //alert("onTextareaKeyUp")
  if (!e) var e = window.event;
  target=resolveTarget(e)  
  if (target.readOnly==true && e.ctrlKey==false){
    target.selectionEnd=target.selectionStart
    target.readOnly=false
  }
  var processed=function(ev) { ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); return false; } //@@-
  var tRef=target

  var checkDirty=true
  var key=e.keyCode
  if(key==33)checkDirty=false
  if(key==34)checkDirty=false
  if(key==35)checkDirty=false
  if(key==36)checkDirty=false
  if(key==37)checkDirty=false
  if(key==38)checkDirty=false
  if(key==39)checkDirty=false
  if(key==40)checkDirty=false
  if(key==16)checkDirty=false
  if(key==17)checkDirty=false
  if (checkDirty==true) onTextareaDirtyState(target)
 
}//endFunction


window.onTextareaDoubleClick2=function(e){
  // alert("onContainerDoubleClick2")
  if(!e)e=window.event
  e.cancelBubble=true; 
  if (e.stopPropagation)e.stopPropagation();
  var target=resolveTarget(e)
  var textarea=target;
  var curLine=getCurrentLineFromTextarea(target)
  var startPos=textarea.selectionStart;
  var controlKeys=e.ctrlKey;
  //alert(controlKeys)
  executeCommand(curLine[0],startPos,e.keyCode,controlKeys,curLine,textarea); 
  // toggleDomWindowState(e); 
  return false; 
}//endFunction  

  
window.getCurrentLineFromTextarea=function(textarea) {
  trace("getCurrentLineFromTextarea","!!!")
  var tVALUE=textarea.value+String.fromCharCode(10)
  // Attempt to create a text range (IE).
  if (typeof(textarea.caretPos) != "undefined"){
    //alert("IE");
    textarea.createTextRange;
    var caretPos = textarea.caretPos;
    //caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
    //caretPos.select();
  }
  
  // Mozilla text range replace.
  else if (typeof(textarea.selectionStart) != "undefined"){
    //alert("mozilla");
    var startPos=textarea.selectionStart;
    var endPos=textarea.selectionEnd;
    var selection= tVALUE.substr(startPos, endPos-startPos)
    // var begin = textarea.value.substr(0, textarea.selectionStart);
    
    //???
    //var begin = tVALUE.substr(0, textarea.selectionStart);
    var begin = tVALUE.substr(0, startPos+0);
    var end = tVALUE.substr(endPos);
    
    // trace("==1b selection...:",selection+"<--", ".sys_tText")
    // trace ("startPos...==2a ",startPos);
    // trace ("endPos...==2b ",endPos);
    
    //find lineStart...
    //var lineStart=(begin).lastIndexOf(String.fromCharCode(10));
    var lineStart=(begin).lastIndexOf(String.fromCharCode(10))+1;
    // trace ("== ==3 lineStart...:",lineStart, ".sys_tText");
    var lineEnd=tVALUE.indexOf(String.fromCharCode(10),lineStart+1);
    // trace (" lineEnd:==4",lineEnd, ".sys_tText");
    
    var curLine= tVALUE.substr((lineStart+0), (lineEnd-lineStart-0));
    // trace (" getCurrentLine...==5",curLine, ".sys_tText");
    if(findById("tWiki-zoom"))findById("tWiki-zoom").value=curLine+"<--"
    var lineNr=0;
    lines=tVALUE.slice(0,(lineStart+1)).split(LF)
    lineNr=lines.length
    lineNr=lines.length // ???
        
    //var scrollPos = textarea.scrollTop;
    //brauch ich nicht! ...textarea.value = begin + text + end;
    //textarea.value += text;
    
    //if (textarea.setSelectionRange) {
      //textarea.focus();
      //brauch ich nicht! textarea.setSelectionRange(begin.length+text.length,begin.length+text.length);
      //textarea.value += text;
      //textarea.focus(textarea.value.length - 1);
    //}
        
    //textarea.scrollTop = scrollPos;
  }
  // Just put it on the end.
  else {
    //textarea.value += text;
    //textarea.focus(textarea.value.length - 1);
  }
  //alert("done2222");
  //textarea.value += text;
  //textarea.scrollTop = textarea.value.length - 5;
  var result=new Array();
  // trace("createNewArray 1...","...", ".sys_tText")
  result[0]=curLine;
  result[1]=startPos;
  result[2]=endPos;
  result[3]=lineStart;
  result[4]=lineEnd;
  //alert (lineStart)
  //alert(lineEnd)
  result[5]=startPos-lineStart; //=cursorPos(eins zuviel)
  result[6]=selection;
  result[7]=lineNr;
  result[8]=tVALUE;
  result[9]=textarea;
  
  // printLine(2,lineNr)
  // trace("== ==5selection ???",result[6], ".sys_tText");
  //trace("createNewArray 2...", "",".sys_tText")
  return result
}//endFunction



window.executeCommand=function(curLine,cursorPos,keyCode,controlKeys,lineData,textarea){
  // alert("executeCommand")
  // var cmdType=cmdEditGetDocType(lineData)
  var cmdType="SCRIPT"
  var cmdType="TEXT"
  if(cmdType=="SCRIPT"){
    executeScriptCommand(curLine,cursorPos,keyCode,controlKeys,lineData,textarea)
  }else{
    executeTextCommand(curLine,cursorPos,keyCode,controlKeys,lineData,textarea)
  }
}//endFunction


  
window.executeTextCommand=function(curLine,cursorPos,keyCode,controlKeys,lineData,textarea){
  trace ("executeCommand:",curLine, ".sys_tText");
  var selection=lineData[6];
  trace("selection???","-->"+selection+"<--", ".sys_tText");
  trace("curLine???","-->"+curLine+"<--", ".sys_tText");

  if (curLine.slice(0,2)=="=<"){
    textareaCollaps(curLine,cursorPos,keyCode,controlKeys,lineData,textarea);
    //var newSelection="=>= ";
    //trace("newSelection=Collapse",newSelection);
    //replaceSelection2(textarea,lineData,newSelection,-1);
    return
  }
  
  
  if (selection=="[_] "){
    var newSelection="[x] ";
    trace("newSelection",newSelection, ".sys_tText");
    replaceSelection2(textarea,lineData,newSelection,-1);
    return
  }
  if (selection=="[x"){
    var newSelection="[_";
    replaceSelection2(textarea,lineData,newSelection,-1);
    return
  }
  if (selection=="x] "){
    var newSelection="_] ";
    replaceSelection2(textarea,lineData,newSelection,-1);
    return
  }
  var isUrl=instr(curLine, "http://")
  trace("isURL ???",isUrl, ".sys_tText");
  if (isUrl>=0){
    var newUrl=curLine.substr(isUrl);
    trace("newUrl",newUrl, ".sys_tText");
    wDesk_navigateDefaultBrowser(newUrl);
    return
  }
  var isUrl=instr(curLine, "https://")
  trace("isURL ???",isUrl);
  if (isUrl>=0){
    var newUrl=curLine.substr(isUrl);
    trace("newUrl",newUrl, ".sys_tText");
    wDesk_navigateDefaultBrowser(newUrl);
    return
  }
  var isTiddler=instr(curLine, "[[")
  trace("isTiddler???",isTiddler, ".sys_tText");
  if (isTiddler>=0){
    var bisPos=instr(curLine, "]]")
    trace("bisPos",bisPos, ".sys_tText");
    var newTiddler=curLine.substr(isTiddler+2,(bisPos - isTiddler-2));
    trace("newTiddler",newTiddler+"<--", ".sys_tText");
    showTiddler(newTiddler);
    return
  }
  var isFile=instr(curLine, "file://")
  if (isFile>=0){
     var newFile=curLine.substr(isFile);
     trace("newFile",newFile, ".sys_tText");
     wDesk_navigateDefaultBrowser(newFile);
     return 
  }
  // // trim spaces/tabs/[_]/[X]
  // // check auf http
  // // split auf L?cke
  // // check auf # bzw. ##
  // // split auf L?cke
  // // l?nge erstes wort 
  // // check auf bekannter Befehl
    // // if klammer --> run script
    // // erg?nze klammern/apos -->script
  try { 
    var out = eval(curLine); 
    return "execute javaScript = OK";
  }catch(e) { out = e.description?e.description:e.toString(); }
  if (out && out.length)trace("ergebnis(execute):", out)
  var twCommand=esTrim(curLine)
  //alert("-->"+twCommand+"<--")
  // !!! showTiddler(twCommand)
}//endFunction
  


window.instr = function(searchIn, searchFor, startPos) {
  var RESULT=-1;
  if (searchIn.length>=0){
    RESULT=searchIn.toUpperCase().indexOf(searchFor.toUpperCase());
  }
  return RESULT;
}//endFunction

window.esTrim=function(curLine){
  var checkChar=""
  for (var i = 0; i < curLine.length; i++) {
    checkChar=curLine.substr(i,1);
    if (checkChar!=" " && checkChar!=String.fromCharCode(9)){
      var foundPos=i;
      break;
    }
  }
  curLine=curLine.substr(foundPos)
  for (var i = curLine.length; i > 0; i--) {
    checkChar=curLine.substr(i,1);
    if (checkChar!=" " && checkChar!=String.fromCharCode(9)){
      foundPos=(i);
      //trace("==>autoIndentKeyDown 444",foundPos, ".sys_tText");
      // ??? !!! --> irrl?ufer ???break;createGlobFunctionList(tagNames)
      break;
    }
  }
  curLine=curLine.substr(0,(foundPos))
  return curLine
}//endFunction


window.onTextareaKeyPress=function(e){
}//endFunction

