/* ---------------------------------------------------------------------------------------------------
   ePages 5 - Scripts
   presentation_generalbofunctions.js $Revision: 1.3.2.4 $
   ---------------------------------------------------------------------------------------------------
   Required JavaScript Packages:
   presentation_event.js
   --------------------------------------------------------------------------------------------------- */

/* - general backoffice functions (MBO/TBO/PBO) ----------------------------------------------------- */

function changeSample(newdata, group) {
// this function replaces the data in samp tags (newdata) which are specified
// by their title attributes (group)
    if(!newdata) newdata="";
    sampletags = document.getElementsByTagName("samp");
    for(i=0; i < sampletags.length; i++) {
      if(sampletags[i].getAttribute("title") == group) {
        if(sampletags[i].firstChild) {
          sampletags[i].firstChild.data = newdata;
        } else {
          mydata = document.createTextNode(newdata);
          sampletags[i].appendChild(mydata);
        }
      }
    }
}

function changeDelimiter(DelimiterSymbol, SelectId){
    switch(DelimiterSymbol) {
        case ',' :
        document.getElementById(SelectId).options[0].selected = 'selected';
        break;
        case ';' :
        document.getElementById(SelectId).options[1].selected = 'selected';
        break;
        default :
        document.getElementById(SelectId).options[2].selected = 'selected';
        break;
    }
}

function toggleTreeNode(LinkNodeID, SubNodesId) {
    var oLinkNode=document.getElementById(LinkNodeID);
    var oSubNodes=document.getElementById(SubNodesId);

    if (oLinkNode.className.match(/NodeMinus/)) {
        oLinkNode.className = oLinkNode.className.replace(/NodeMinus/,'NodePlus');
        oSubNodes.className = 'HideElement';
    } else {
        oLinkNode.className = oLinkNode.className.replace(/NodePlus/,'NodeMinus');
        oSubNodes.className = 'ShowElement';
    }
}

function toggleNodes(className /* class of toggled elements */, clearSpace /* true = "display" else "visibility" */, classLimiter /* element that is been scanned for className */) {
  if(typeof className == "string") {
    if(typeof classLimiter == "undefined") {classLimiter = document}
    if(typeof classLimiter == "string") {classLimiter = document.getElementById(classLimiter)}
    var domElements = classLimiter.getElementsByTagName("*");
    for(var i = 0; i < domElements.length; i++) {
      if(domElements[i].attributes) {
        if(domElements[i].attributes["class"]) {
          if(domElements[i].attributes["class"].nodeValue.indexOf(className) > -1) {
            with(domElements[i].style) {
              if(clearSpace) {
                if(display == "none") {display = ""}
                if(domElements[i].className.match(/HideNode/)) {
                    domElements[i].className = domElements[i].className.replace(/HideNode/,'ShowNode');
                }else{
                  if(domElements[i].className.match(/ShowNode/)) {
                    domElements[i].className = domElements[i].className.replace(/ShowNode/,'HideNode');
                  }else{
                    domElements[i].className += " HideNode";
                  }
                }
                if(domElements[i].className.match(/HideElement/)) {
                    domElements[i].className = domElements[i].className.replace(/HideElement/,'ShowElement');
                }
              }else{
                if(visibility == "hidden") {
                  visibility = "visible";
                  if(display == "none") {display = ""}
                  domElements[i].className = domElements[i].className.replace(/HideNode/,'ShowNode');
                  domElements[i].className = domElements[i].className.replace(/HideElement/,'ShowElement');
                }else{
                  visibility = "hidden";
                }
              }
            }
          }
        }
      }
    }
  }
}

/* - Dialog Area ------------------------------------------------------------------------------------ */

var actualDialogArea = "";
var epagesDialog = new DialogArea();

function DialogArea() {
//  this function is used as constructor for an DialogArea-Object
  this.areaName = new Array();
  this.areaId = new Array();
  this.areaDisplayName = new Array();
  this.areaActivated = new Array();          // false = area disabled    ; true = area is a activated

  this.addArea = function(areaName, areaId) {
  //  this function is used to register the areas in a dialog
    this.areaName.push(areaName);
    this.areaId.push(areaId);
    if(this.addArea.arguments.length>3) {
      this.areaDisplayName.push(this.addArea.arguments[2]);
      this.areaActivated.push(this.addArea.arguments[3]);
    } else {
      this.areaDisplayName.push("");
      this.areaActivated.push(true);
    }
  }

  this.createAreaLinks = function() {
      for(var i=0; i<this.areaName.length; i++) {
          if(this.areaActivated[i]) {
              var oAreaLink=document.createElement("a");
              oAreaLink.href="javascript:epagesDialog.toggleArea('"+this.areaName[i]+"');";
              oAreaLink.name=this.areaName[i];
              oAreaLink.id=this.areaName[i];
              oAreaLink.className="HideArea";
          } else {
              var oAreaLink=document.createElement("span");
              oAreaLink.name=this.areaName[i];
              oAreaLink.id=this.areaName[i];
              oAreaLink.className="disabled";
          }
          var oLinkText=document.createTextNode(this.areaDisplayName[i]);
          oAreaLink.appendChild(oLinkText);
          document.getElementById("ToggleTabpageArea").appendChild(oAreaLink);
      }
  }

  this.showArea = function(areaName) {
  //  this function is used to show an Area
    areaId="";
  // search for the AreaName in the epagesDialog Object
    for(i=0; i < this.areaName.length; i++) {
      if(this.areaName[i] == areaName) areaId = this.areaId[i];
    }
    try{
        document.getElementsByName(areaName)[0].className = 'ShowArea';   // this somehow does not work in ms ie when the elements were generated dynamicly
    } catch(ex) {
        document.getElementById(areaName).className = 'ShowArea';
    }
    document.getElementById(areaId).className='ShowElement';
    if(browser.isIE) {
        // workaround silly MSIE display errors (elements with position:relative are still hidden after setting them visible)
        setTimeout("document.getElementById('"+areaId+"').className='ShowElement';", 10);
    }
    actualDialogArea = areaName;
  }

  this.hideArea = function(areaName) {
  //  this function is used to show an Area
    areaId="";
  // search for the AreaName in the epagesDialog Object
    for(i=0; i < this.areaName.length; i++) {
      if(this.areaName[i] == areaName) areaId = this.areaId[i];
    }
    document.getElementsByName(areaName)[0].className = 'HideArea';
    document.getElementById(areaId).className='HideElement';
    actualDialogArea = "";
  }

  this.toggleArea = function(areaName) {
  //  this function is used to toggle the view of an area
  //  and to hide all unselected areas
    this.showArea(areaName);

  // loop through all dialog areas and hide them
    for(i=0; i<this.areaName.length; i++) {
      tempName=this.areaName[i]; tempId=this.areaId[i];
      if(areaName != tempName) {
        if(this.areaActivated[i]) {
            document.getElementsByName(tempName)[0].className = 'HideArea';
            document.getElementById(tempId).className = 'HideElement';
        }
      }
    }
  }

  this.toggleAreaDisplay = function(areaName) {
  // this function is used to toggle the view of the specified area
  // display settings of other areas remain
    if(document.getElementsByName(areaName)[0].className == 'HideArea') {
      this.showArea(areaName);
    } else {
      this.hideArea(areaName);
    }
  }

  this.selectArea = function(areaName) {
  //  this function is used to show the selected area
  //  and to hide all the other areas
    this.showArea(areaName);
  // loop through all dialog areas and hide them
    for(i=0; i<this.areaName.length; i++) {
      tempName=this.areaName[i]; tempId=this.areaId[i];
      if(areaName != tempName) {
        document.getElementsByName(tempName)[0].className = 'HideArea';
        document.getElementById(tempId).className = 'HideElement';
      }
    }
  }

}

function appendDialogArea(formElement) {
  if(actualDialogArea!="") {
    formElement.action += "&DialogArea="+actualDialogArea;
  }
}

function toggleLink(LinkName){
  if(document.getElementsByName(LinkName)[0].className == 'ShowLink')
    {document.getElementsByName(LinkName)[0].className = 'HideLink';}
  else
    {document.getElementsByName(LinkName)[0].className = 'ShowLink';}
}

/* - Switch Wizard Pages ----------------------------------------------------------------------------- */
var ActualWizardPage = 0;
var WizardPages= new WizardPages();
var tplHelpTopic="";

function WizardPages() {
  //  constructor for wizard pages
  this.TabId = new Array();
  this.AreaId = new Array();

  this.addPage = function(TabId, AreaId) {
    this.TabId.push(TabId);
    this.AreaId.push(AreaId);
  }

  this.showStep = function(Index) {
  //  this function is used to show the selected page of the wizard
    ActualWizardPage=Index;

    window.scrollTo(0,0);
    // delete current helptopic from tab
    try{document.getElementById("HelpTopic").parentNode.removeChild(document.getElementById("HelpTopic"));} catch(ex) {}
    // prepare helptopic for new tab
    tplHelpTopic=document.getElementById("HelpTopicTemplate").firstChild.data;
    var oHelpTopic=document.createElement("span");
    oHelpTopic.innerHTML=tplHelpTopic;
    oHelpTopic=oHelpTopic.getElementsByTagName("a")[0];
    if(oHelpTopic) oHelpTopic.setAttribute("id","HelpTopic");

    // change tab
    document.getElementById(this.TabId[Index]).className="selected";
    document.getElementById(this.TabId[Index]).getElementsByTagName("span")[0].firstChild.className="selected";
    try{document.getElementById(this.TabId[Index]).getElementsByTagName("span")[0].appendChild(oHelpTopic);} catch(ex) { }
    document.getElementById(this.AreaId[Index]).className="ShowElement";
    for(i=0; i<this.TabId.length; i++) {
      if(i != Index) {
        document.getElementById(this.TabId[i]).className="unselected";
        document.getElementById(this.TabId[i]).getElementsByTagName("span")[0].firstChild.className="disabled";
        document.getElementById(this.AreaId[i]).className = 'HideElement';
      }
    }
  }
}

/* - MBO Search (Toolbar) --------------------------------------------------------------------------- */
function toggleExtender(object){
  // toggles between the image file names of the extend button
  // object => image node
  splittedFilename=object.src.split("/");
  lastItemNo=splittedFilename.length-1;
  lastItem=splittedFilename[lastItemNo];

  if(lastItem=="toolbar_ico_s_extend.gif") {
    splittedFilename[lastItemNo]="toolbar_ico_s_extend_open.gif";
  } else {
    splittedFilename[lastItemNo]="toolbar_ico_s_extend.gif";
  }
  object.src=splittedFilename.join("/");
}

/* - insert TLE ------------------------------------------------------------------------------------- */

  function addTLE( tlename, elementId ) {
      insertAtCursor( window.document,
                      window.document.getElementById( elementId ),
                      "#" + tlename );
  }
  function addString( str, elementId ) {
      insertAtCursor( window.document,
                      window.document.getElementById( elementId ),
                      str );
  }
  function insertAtCursor(myDoc, myField, myValue) {
    //IE support
    if (myDoc.selection) {
      myField.focus();
      sel = myDoc.selection.createRange();
      sel.text = myValue;
    }
    //MOZILLA/NETSCAPE support
    else if (myField.selectionStart || myField.selectionStart == '0') {
      var startPos = myField.selectionStart;
      var endPos = myField.selectionEnd;
      myField.value = myField.value.substring(0, startPos)
                    + myValue
                    + myField.value.substring(endPos, myField.value.length);
      myField.selectionStart = startPos + myValue.length;
      myField.selectionEnd = startPos + myValue.length;
    } else {
      myField.value += myValue;
    }
		ep_fireEvent('change', myField);
  }

/* - Image as radioboxes / checkboxes ------------------------------------------------------------- */

function checkMe(imageElement, checkElementName, imageURLactive, imageURLinactive) {
  checkID=imageElement.getAttribute("name");
  checkElements=document.getElementsByName(checkElementName);
  for(i=0; i< checkElements.length; i++) {                        // scan all checkElements in a group
    if(checkElements[i].getAttribute("id") == checkID) {          // change "checked" value
      ep_fireEvent("change", checkElements[i]);
      if(checkElements[i].checked==true) {
        checkElements[i].checked=false;
      } else {
        checkElements[i].checked=true;
      };
      if(checkElements[i].type=="checkbox" && (PlayerStatus==0 || PlayerStatus==1)) {
        SlideShowStop();
      }

    }
  }

  for(i=0; i< checkElements.length; i++) {                        // this time scan all imagesElements in a group
    imageName=checkElements[i].getAttribute("id");
    imageInGroup = document.getElementsByName(imageName)[0];
    if(checkElements[i].checked == true) {
      imageInGroup.src=imageURLactive;
    } else {
      imageInGroup.src=imageURLinactive;
    }
  }
}
