/***************************************************************************
*   ed.wiki 3.0
*   Copyright 2002-2008 Daniel Wrana
*   http://www.edwiki.selbstlernarchitekturen.info
*   Distributed under the terms of the GNU General Public License v2
****************************************************************************/

// helper functions

function beforeFormChangePlugin(formName, el) {
}

function validWikiPageName(pageName) {
  if (pageName == "") {
    alertModal(emptyFunction, getLang('lang_please_notempty'));
    return false;
  } else if (pageName.length > 150) {
    alertModal(emptyFunction, getLang('lang_please_toolong'));
    return false;
  } else if (pageName.match(/[\;\,\.\:\#\'\"\*\+\}\]\[\{\(\)\&\%\$\§\!\~\<\>\=\?\\\/]/)) {
    alertModal(emptyFunction, getLang('lang_please_nospecial'));
    return false;
  }
  return true;
}

function changeWikiName(el) {
  ele = el;
  valid = validWikiPageName (ele.value);
  if (valid==false) {
    return false;
  } else {
    renamePageAjax = new ajax();
    renamePageAjax.successCallback = renamePageResponse;
    var data = "ajaxAction=testPageExistence&name=" + encodeURIComponent(ele.value);
    renamePageAjax.request(pathBase + "ajax.php", data);
  }
}

function renamePageResponse() {
  var response = renamePageAjax.getSimpleResponse();
  if (response == "OK") {
    formChange (transFormName, ele, ele.lang);
  } else {
    alertModal(emptyFunction, response, 200);
    return false;
  }
}

// open and save pages

function editPage() {
  if ((browser.indexOf("msie 5"))!=-1 || GECKO && navigator.productSub < 20030210) {
    alertModal(emptyFunction, getLang("lang_isOldBrowser",200));
    return false;
  }
  if (browser.indexOf("khtml") != -1 
     || browser.indexOf("safari") != -1 
     || browser.indexOf("opera") != -1) {
    confirmModal(editPageConfirmed, getLang('isOtherBrowser'), 200);
  } else {
    editPageConfirmed();
  }
}

function editPageConfirmed(result) {
  if (result==false) return false;
  editPageAjax = new ajax();
  editPageAjax.successCallback = responseEditPage;
  location.href = pathBase + "wiki.php?wiki=" + encodeURIComponent(elementName) + "&action=edit";
}

function responseEditPage() {
  if (editPageAjax.getSimpleResponse() == 'TRUE') {
    alertModal(emptyFunction, getLang("lang_isBlocked", 200));
  } else {
    location.href = pathBase + "wiki.php?wiki=" + encodeURIComponent(elementName) + "&action=edit";
  }
}

alertContentSaveFlag = true;

function alertContentSave () {
  if (MSIE) return false;
  if (alertContentSaveFlag==false) return false;
  var contentData = getContentFromEditors();
  contentSaveAjax = new ajax();
  contentSaveAjax.successCallback = emptyFunction;
  if (elementName=="") return false;
  doit = confirm(getLang('lang_ask_save_urgently'));
  if (!doit) return false;
  var data = "ajaxAction=savePageContent&name=" + elementName + contentData;
  contentSaveAjax.request(pathBase + "ajax.php", data);
}

function saveAllCards() {
  alertContentSaveFlag = false;
  var contentData = getContentFromEditors();
  contentSaveAjax = new ajax();
  contentSaveAjax.successCallback = cardSaveResponse;
  var data = "ajaxAction=savePageContent&name=" + elementName + contentData;
  contentSaveAjax.request(pathBase + "ajax.php", data);
}

function cardSaveResponse () {
  location.href =  pathBase + "wiki.php?wiki=" + elementName;
}

function saveComment() {
  alertContentSaveFlag = false;
  var inst = tinyMCE.getInstanceById("comment");
  commentContent = inst.getHTML();
  commentSaveAjax = new ajax();
  commentSaveAjax.successCallback = commentSaveResponse;
  var data = "ajaxAction=addComment&name=" + encodeURIComponent(elementName)
                                + "&storeValue=" +  encodeURIComponent(commentContent);
  commentSaveAjax.request(pathBase + "ajax.php", data);
}

function commentSaveResponse () {
  location.href = pathBase + "wiki.php?wiki=" + encodeURIComponent(elementName) 
                   + "&showComments=true#Comments";
  location.reload();
}

function cancelEditor () {
  location.href =  pathBase + "wiki.php?wiki=" + encodeURIComponent(elementName);
}

// delete pages

function setPageCurrent(version) {
  setcurrentPageAjax = new ajax();
  setcurrentPageAjax.successCallback = responseSetcurrentPage;
  var data = 'ajaxAction=setPageCurrent&name=' + encodeURIComponent(elementName) + '&id=' + version;
  setcurrentPageAjax.request(pathBase + "ajax.php", data);
}

function responseSetcurrentPage() {
  location.href =  pathBase + "wiki.php?wiki=" + encodeURIComponent(elementName);
}

function deletePage (text, version) {
  deleteVersion = (typeof(version) != "undefined") ? version : "";
  confirmModal(deletePageConfirmed, text);
}

function deletePageConfirmed (result) {
  if (result==false) return false;
  deletePageAjax = new ajax();
  deletePageAjax.successCallback = responseDeletePage;
  var data = 'ajaxAction=deletePage&name=' + encodeURIComponent(elementName) + '&delVersion=' + deleteVersion;
  deletePageAjax.request(pathBase + "ajax.php", data);
}

function responseDeletePage() {
  var newPage = deletePageAjax.getSimpleResponse();
  location.href =  pathBase + "wiki.php?wiki=" + encodeURIComponent(newPage);
}

// page buttons functions

function printVersion () {
  printWindow = window.open(pathBase + "wiki.php?wiki=" + encodeURIComponent(elementName ) + "&action=print",
       "print", 'top=20,left=20,width=900,height=600,menubar=yes,scrollbars=yes');
  printWindow.focus();
}

function openPageOptions() {
  openPopupWindow('pageOptions', 'pageOptions', 'page=' + elementName);
}

function openPageVersions() {
  openPopupWindow('pageVersions', 'pageVersions', 'page=' + elementName);
}

function openRelatedPages() {
  openPopupWindow('relatedPages', 'relatedPages', 'page=' + elementName);
}

// process bookmarks

function bookmark() {
  bookmarkAjax = new ajax();
  bookmarkAjax.successCallback = responseBookmark;
  var data = 'ajaxAction=bookmark&page=' + encodeURIComponent(elementName);
  bookmarkAjax.request(pathBase + "ajax.php", data);
}

function responseBookmark() {
  var result = bookmarkAjax.getSimpleResponse();
  var iconButton = document.getElementById("bookmarkIconButton");
  var textButton = document.getElementById("bookmarkTextButton");
  if (result=="added") {
    if (iconButton) {
      iconButton.firstChild.src = urlIcons + "bookmark_add.png";
    } else {
      var bookmarkHint = document.createElement("img");
      bookmarkHint.id = "bookmarkHint";
      addClass(bookmarkHint, 'bookmarkHint');
      setSrc(bookmarkHint, "bookmark-set.png");
      textButton.appendChild(bookmarkHint);
    }
  } else {
    if (iconButton) {
      setSrc(iconButton.firstChild, "bookmark.png");
    } else {
      var eleme = document.getElementById("bookmarkHint");
      eleme.parentNode.removeChild(eleme);
    }
  }
}

// process commments

function writeComment() {
  openPopupWindow('writeComment', 'writeComment', 'page=' + elementName);
}

function deleteComment (commentId) {
  deleteCommentAjax = new ajax();
  deleteCommentAjax.successCallback = responseDeleteComment;
  var data = 'ajaxAction=deleteComment&id=' + encodeURIComponent(commentId);
  deleteCommentAjax.request(pathBase + "ajax.php", data);
}

function responseDeleteComment() {
  location.href =  pathBase + "wiki.php?wiki=" + elementName;
}

// others

function wikiLink(pageName, addUrl) {
  if (typeof(addUrl)=="undefined") addUrl = "";
  location.href = pathBase + "wiki.php?wiki=" + pageName + addUrl;
}

function wikiIdLink(id) {
  namefromidAjax = new ajax();
  namefromidAjax.successCallback = responseNamefromid;
  var data = 'ajaxAction=getNameFromId&id=' + id;
  namefromidAjax.request(pathBase + "ajax.php", data);
}

function responseNamefromid() {
  var pageName = namefromidAjax.getSimpleResponse();
  location.href = pathBase + "wiki.php?wiki=" + encodeURIComponent(pageName);
}

function literatur (shorty) {
    lit = window.open(pathBase + "literatur.php?shorty=" + encodeURIComponent(shorty),
          "Literaturfenster", "width=400, height=100, left=30, top=30, dependent=yes, menubar=no");
    lit.focus();
}

function onCancel() {
  self.close();
  return false;
};

/*
url = http://www.erwachsenenbildung.uni-giessen.de/searchplugins/
url = http://mycroft.mozdev.org/external.php/
*/
function addSearchPlugin(name,url,extension, cat) {
  if ((typeof window.sidebar == "object") 
    && (typeof window.sidebar.addSearchEngine == "function")) {
      window.sidebar.addSearchEngine(
        url + name + ".src",
        url + name + extension, name, cat);
  } else {
    alert(getLang('lang_searchplugin_gecko'));
  }
}

/*
url = "http://mycroft.mozdev.org/installos.php/" + pid + "/"
*/
function addOpenSearch(name,url,meth) {
  if ((typeof window.external == "object") 
     && ((typeof window.external.AddSearchProvider == "unknown")
       || (typeof window.external.AddSearchProvider == "function"))) {
    if ((typeof window.external.AddSearchProvider == "unknown") && meth == "p") {
      alert(getLang('lang_searchplugin_post'));
    } else {
      window.external.AddSearchProvider(url + "/" + name + ".xml");
    }
  } else {
    alert(getLang('lang_searchplugin_browser'));
  }
}

function showUser(realName) {
  location.href = pathBase + "wiki.php?wiki=" + encodeURIComponent(realName);
}

function showGroup(name) {
  location.href = pathBase + "wiki.php?wiki=" + encodeURIComponent(name);
}

function createGroup () {
  promptModal(createGroupProcess, getLang('lang_insertgroupname'), '');
}

function createGroupProcess(groupName) {
  if (groupName==null || groupName=="") return false;
  creategroupAjax = new ajax();
  creategroupAjax.successCallback = createGroupResponse;
  var data = "ajaxAction=groupAdmin&mode=create&storeValue=" + encodeURIComponent(groupName);
  creategroupAjax.request(pathBase + "ajax.php", data);
}

function createGroupResponse() {
  result = creategroupAjax.getSimpleResponse();
  if (result=='doubleEntry') {
    alertModal(createGroupReload, getLang("lang_doubleentry"));
  } else if (result=='notallowedValue') {
    alertModal(createGroupReload, getLang("lang_notallowedvalue"));
  } else {
    alertModal(createGroupReload, getLang("lang_groupcreated"));
  }
}

function createGroupReload() {
  location.href = 'owndata.php?userAction=groupsareas';
}

function changeMailMode () {
  mailMode       = document.getElementById('adminOptmailMode').value;
  setDisplayMode ("none", "adminOptsendmailPath,adminOptsmtpHost,adminOptsmtpPort,adminOptsmtpUser", true);
  setDisplayMode ("none", "smtpPass", false);
  if (mailMode=="sendmail") {
    setDisplayMode ("block", "adminOptsendmailPath", true);
  } else {
    setDisplayMode ("block", "adminOptsmtpHost,adminOptsmtpPort,adminOptsmtpUser", true);
    setDisplayMode ("inline", "smtpPass", false);
  }
}

// functions for publications

function formChangePlugin () {
}

function changeBiblio () {
  newType       = document.getElementById('valuestype').value;
  setDisplayMode ("none", "hostinfos,placepub,article,onlinearticle,"
                        + "serialspecialissue,conferencepaper,workingpaper", false);
  if (newType=="incollection") {
    setDisplayMode ("block", "hostinfos", false);
  } else if (newType=="article") {
    setDisplayMode ("block", "article", false);
  } else if (newType=="onlinearticle") {
    setDisplayMode ("block", "onlinearticle", false);
  } else if (newType=="serialspecialissue") {
    setDisplayMode ("block", "serialspecialissue", false);
  } else if (newType=="conferencepaper") {
    setDisplayMode ("block", "conferencepaper", false);
  } else if (newType=="workingpaper") {
    setDisplayMode ("block", "workingpaper,placepub", false);
  } else {
    setDisplayMode ("block", "placepub", false);
  }
}

function openCreateAreaWizard() {
  openPopupWindow('createarea', 'createarea');
}

function createNewArea() {
  var areaName = document.getElementById('createareaareaname').value;
  var startPage = document.getElementById('createareastartPage').value;
  var areaOwner = document.getElementById('createareaareaOwner').value;
  var areaAccess = document.getElementById('createareaareaAccess_hiddenValue').value;
  createareaAjax = new ajax();
  createareaAjax.successCallback = responseCreateNewArea;
  var data = 'ajaxAction=createArea' + '&storeValue=' + areaName + '&startPage=' + startPage + '&areaOwner=' + areaOwner + '&areaAccess=' + areaAccess;
  createareaAjax.request(pathBase + 'ajax.php', data);
}

function responseCreateNewArea() {
  location.href = 'admin.php?action=areashowlist';
}

function choosen() {
  document.getElementById('spanGroup');
  document.getElementById('span' + itemListName[1]).innerHTML
}

function addLexikonEntry(category) {
  categoryType = category;
  promptModal(addLexikonEntryProcess, getLang('lang_addlexikonentry'), '');
}

function addLexikonEntryProcess(entryName) {
  if (entryName==null || entryName=="") return false;
  addlexikonentryAjax = new ajax();
  addlexikonentryAjax.successCallback = addLexikonEntryResponse;
  var data = "ajaxAction=createPage&storeValue=" + encodeURIComponent(entryName)
                                + "&category=" + encodeURIComponent(categoryType)
                                + "&parentPage=" + encodeURIComponent(elementName);
  addlexikonentryAjax.request(pathBase + "ajax.php", data);
}

function addLexikonEntryResponse() {
  response = addlexikonentryAjax.getSimpleResponse();
  if (response=="OK") {
    alertModal(emptyFunction, getLang("lang_lexikonentrycreated"));
    location.href = pathBase + "wiki.php?wiki=" + encodeURIComponent(elementName);
  } else {
    alertModal(emptyFunction, response);
  }
}

