
  /***************************************************************************************
     filename:      DV.js (DV-1.71-20090402.js)
     version:       1.71
     last modified: 02.04.2009
     author:        Axel Schneider
     mail:          mail@axelschneider.info
     www:	   	   http://javascript.axelschneider.info
     description:   This JavaScript is showing a picture in a
                    division-container. This procedure substitutes
                    the ordinary way to open a new window. The Pic
                    is shown in the middle of the current window. If the
                    screen-resolution is smaller than the width
                    and/or height it is resized to the largest
                    possible size.
     advantages:    - there occure no problems with pop-up-blockers.
                    - picture is shown independently of the screen-resolution as one item
                    - customizable settings
     customization: you may vary some settings
     - closingSign:   the sign which is shown in the upper right corner to close/hide the picture.
                                     you could use text or an image.
  	- loadingSign:   the sign which is shown at the bottom in the left corner. 
                                     it is visible as long as the picture is loading. 
						  you could use text or an image.
     - beforeSign     the sign which will be shown in slideshows to show the previous image
     - nextSign       the sign which will be shown in slideshows to show the next image
     - borderDV:      the width of the border around the picture in pixel.
     - paddingClosingSign the padding closing sign to outer border spacing
     - spaceDV:       the minimal space which should be between the shown image and the (inner) browser-border.
     - borderColorDV: color of the border which is around the picture.
     - bgColorDV:     background-color for the closing-sign. if it is set to empty the background is transparent.
  	- bgOpacity:     degree of transparancy (0-100)
  	- baseZIndex:    minimum z-index -> used to bring the DivViewer to the front

     usage:     append the function "dv.showDV('<img ...>')" to a certain event.
                the image-tag needs to consist of the width and height-attribute. to avoid the problem of
                multi-nested single and double apostrophe use a javascript variable for the image-tag. eg.:
         var myPic = '<img src="myPic.jpg" width="800" height="500">';
	   or
	    var myPic = '<img src="myPic.jpg" width="800" height="500" alt="S&uuml;&szlig;es Baby mit Obst">';
     example:   <a href="#" onClick="dv.setAllImagesArray(); dv.showDV(myPic);return false;">click here</a>
	    To use the before-next-functionality you have to provide an array which consists of all img-tags to the dv-instance. eg.:
	    var myPic = new Array();
         myPic[0] = '<img src="myPic1.jpg" width="800" height="500">';
	    myPic[1] = '<img src="myPic2.jpg" width="800" height="500">';
	    dv.setAllImagesArray(myPicArray);
     example:   <a href="#" onClick="dv.setAllImagesArray(myPic); dv.showDV(myPic[0]);return false;">click here</a>

     known "bugs": - z-index does not work for IE when you do have some form-elements on the site. 
				The form-elements will be rendered to the front always.
     hints:	   - This script has a function to html-decode special characters. Actually the
		     character-set fits to "ISO-8859-1". So it would be better to implement/reference
		     the script with the hint that this script has this character set. You could do
		     this in the following way:
                <script src="DV.js" type="text/javascript" charset="ISO-8859-1"></script>
 		   - If you plan to html-decode other certain characters than the characters which are
                specified in the decodeHtml-function, you have to publish the script with another charset-value.
		   - If you want to call the DivViewer from a frame (e.g. an iframe) you have to declare
		     and call the showDV-Function in the window/frame where it should be displayed.
		     For Example: You have a page (a) with an iframe-page (b). The link to display the
		     big image with the DivViewer is within (b). But to get the biggest possible
		     browser-resolution you want to display the big image in (a) - it lays over (b). Therefore
  		     one have to declare the initialization of the DivViewer in (a) and adjust the call in
		     (b) from dv.showDV("...") to window.parent.dv.showDV("...")
     history: 22.09.2006 - added functionality of alt (title)
              11.02.2007 - added opacity for loading, closing and before-next-signs
  			        - added functionality to navigate to the last and next image
  		   20.04.2007 - added the option to vary z-index of the DivViewer
  		   22.04.2007 - fixed bug with not cleared error-message
  		   19.05.2007 - fixed a bug with strict-doctype (thx to Lois Riesebieter)
		   20.05.2007 - added hint to use character-set "ISO-8859-1" (thx to Ramy)
			        - added hint for possibility to use alt-attribute in the img-tags
		   22.12.2007 - fixed the bug, that ie does not support doctypes properly
                           (when the page has to scroll and it implements the doctype strict
                           one have to use document.documentElement instead of document.body
                           see: http://www.quirksmode.org/js/doctypes.html or http://javascript.about.com/library/bliebug.htm)
                           Thanks Hans Stad for the hint.
	    	   23.12.2007 - added a hint if one wants to use the DivViewer within frames
		   11.01.2008 - fixed a mistake in hints. in the a-tag one have to call
				"return false;"after "dv.showDB(...)"
				Thanks to Stefan Lingscheidt for the hint.
     		   19.05.2008 - added functionality to handle some key-events
                 		  - esc || del -> hide image
                         - arrow-left -> show previous image (for slideshows only)
                         - arrow-right -> show next image (for slideshows only)
     		   02.04.2009 - allow white-spaces in src-attribute of img-tag (tnx to Ingo Bastiaan)

    **************************************************************************************/
  //attributes you may vary
  var closingSign = "<b>CLOSE</b>";  //the sign or image in the upper right corner which signs to close the viewer
  var loadingSign = "L.O.A.D.I.N.G"; //the sign or image in the loading-div
  var beforeSign = "BACK";		  //the sign or image to show the last image "&lt;"
  var nextSign = "NEXT";		  //the sign or image to show the next image "&gt;"
  var borderDV = 5;                  //border-width arround the viewer (in px)
  var paddingClosingSign = 10;  	  //padding closing sign to outer border spacing
  var spaceDV = 25;                  //space between the viewer and the inner-window (in px)
  var borderColorDV = "#9F0C26";     //border color and the color of the closing-sign-text
  var bgColorDV = "#FFFFFF";         //background color for the closing sign-text
  var bgOpacity = 60;			  //opacity in percent, default 40
  var baseZIndex = 1000;		  //z-Index -> show the DivViewer at the front

  //DO NOT CHANGE ANYTHING IF YOU ARE NOT FAMILIAR WITH JAVASCRIPT NOW

  /**********************************************************************/
  /* DivViewer                                                          */
  /**********************************************************************/

  //create DV-Object
  var dv = new DVObject();

  function initDV() {
    //write html code to the document
    dv.writeHtmlCode();

    //initialize the dhtml-library
    DHTML_init();

    //set attributes
    dv.setAttributes();

    //set key-down-event
    RegisterKeyEvents();
  }

  function DVObject() {
    //attributes
    this.htmlCode;
    this.parentDV;
    this.childDVCont;
    this.childDVClose;
    this.childDVLoad;
    this.childDVBefore;
    this.childDVNext;
    this.errorMessage;
    this.img = new DVImg();
    this.swapImg;
    this.allImages;
    this.currentDisplayedImage;

    //general functions for the div-viewer
    // # writeHtmlCode()
    // # setAttributes()
    // # showDV()
    // # hideDV()
    // # showLoadDV()
    // # checkImgParameter()
    // # checkLoad()
    // # regSearch()
    // # regSearchNumber()
    // # getMiddlePosition()
    // # getScreenSize()
    // # decodeHtml()
    // # setOpacityStyle()
    // # getOpacityValue()

    //functions for a before-next-functionality
    // # setAllImagesArray()
    // # checkBeforeAndNextImages()
    // # showLastImage()
    // # showNextImage()
    // # getPositionOfImage()
  }
  function DVImg() {
    this.src;
    this.width;
    this.height;
    this.border;
    this.alt;
  }
  // # writeHtmlCode()
  DVObject.prototype.writeHtmlCode = function() {
    //the DV-Object consists of two inner divs
    // # content-div
    // # close-div
    //build the html code
    dv.htmlCode = '<div id="parentDV">\n' +
                    '<div id="childDVCont"><img src="" width="10" height="10" border="0" alt="" title="" name="picDV"></div>\n' +
                    '<div id="childDVLoad">'+loadingSign+'</div>' +
                    '<div id="childDVClose" onClick="dv.hideDV();" title="Close Viewer!">'+closingSign+'</div>' +
                    '<div id="childDVBefore" onClick="dv.showLastImage();" title="Previous Photo"><b>'+beforeSign+'</b></div>' +
                    '<div id="childDVNext" onClick="dv.showNextImage();" title="Next Photo"><b>'+nextSign+'</b></div>' +
                    '</div>' +
                  '</div>';
    //write the code to the document
    window.document.writeln(dv.htmlCode);
  };
  // # setAttributes()
  DVObject.prototype.setAttributes = function() {
    //get the html-object of the divs to change their attributes
    dv.parentDV 			= getElem("id", "parentDV", null);
    dv.childDVCont 		= getElem("id", "childDVCont", null);
    dv.childDVClose 		= getElem("id", "childDVClose", null);
    dv.childDVLoad 		= getElem("id", "childDVLoad", null);
    dv.childDVBefore 		= getElem("id", "childDVBefore", null);
    dv.childDVNext 		= getElem("id", "childDVNext", null);

    //set the style attributes to the divs
    with(dv.parentDV.style) {
      position = "absolute";
      zIndex = baseZIndex+100;
      border = borderDV+"px solid "+borderColorDV;
      visibility = "hidden";
    }
    with(dv.childDVCont.style) {
      position = "relative";
      zIndex = baseZIndex+1;
      visibility = "hidden";
    }
    with(dv.childDVClose.style) {
      position = "absolute";
      zIndex = baseZIndex+2;
      cursor = "pointer";
      right = paddingClosingSign+"px";
      top = paddingClosingSign+"px";
  		    width = 80+"px";
      height = 20+"px";
      textAlign = "center";
      verticalAlign = "middle";
      border = borderDV+"px solid "+borderColorDV;
      padding = 2+"px";
      color = borderColorDV;
      backgroundColor = bgColorDV;
      visibility = "hidden";
    }
    dv.setOpacityStyle(dv.childDVClose.style);

    with(dv.childDVLoad.style) {
      position = "absolute";
      zIndex = baseZIndex+2;
      left = borderDV+"px";
      bottom = borderDV+"px";
      height = 20+"px";
      textAlign = "center";
      verticalAlign = "middle";
      border = borderDV+"px solid "+borderColorDV;
      padding = 2+"px";
      color = borderColorDV;
      backgroundColor = bgColorDV;
      visibility = "hidden";
    }
    dv.setOpacityStyle(dv.childDVLoad.style);

    with(dv.childDVBefore.style) {
      position = "absolute";
      zIndex = baseZIndex+1;
      top = paddingClosingSign+"px";
      left = paddingClosingSign+"px";
      cursor = "pointer";
      textAlign = "center";
      verticalAlign = "middle";
      height = 20+"px";
      padding = 2+"px";
      border = borderDV+"px solid "+borderColorDV;
      color = borderColorDV;
      backgroundColor = bgColorDV;
      visibility = "hidden";
    }
    dv.setOpacityStyle(dv.childDVBefore.style);

    var wNext = 2*paddingClosingSign+parseInt(dv.childDVClose.style.width);
    if(!document.all)
      wNext = wNext + 4*borderDV;
    with(dv.childDVNext.style) {
      position = "absolute";
      zIndex = baseZIndex+1;
      top = paddingClosingSign+"px";
      right = wNext+"px";
      cursor = "pointer";
      textAlign = "center";
      verticalAlign = "middle";
      height = 20+"px";
      padding = 2+"px";
      border = borderDV+"px solid "+borderColorDV;
      color = borderColorDV;
      backgroundColor = bgColorDV;
      visibility = "hidden";
    }
    dv.setOpacityStyle(dv.childDVNext.style);

    //set swap-image-object
    this.swapImg = document.images["picDV"];

    //set error message
    dv.errorMessage = "";
  };
  // # showDV()
  DVObject.prototype.showDV = function(imgString) {
    //first of all clear the error-message
    dv.errorMessage="";

    //hide the old image
    dv.hideDV();

    //does the parameter consist of the correct values
    dv.checkImgParameter(imgString);
    if(dv.errorMessage=="") {
      //calculate the dimension of parentDV and childDVContent
      var width = dv.img.width + 2*borderDV + 2*spaceDV;
      var height = dv.img.height + 2*borderDV + 2*spaceDV;
      var mid = dv.getMiddlePosition(width, height);

      //swap the default-image
      with(dv.swapImg) {
        src = dv.img.src;
        title = dv.img.alt;
        alt = dv.img.title;
        width = mid["width"] - (2*borderDV + 2*spaceDV);
        height = mid["height"] - (2*borderDV + 2*spaceDV);
      }
      with(dv.parentDV.style) {
        width = (mid["width"] - (2*borderDV + 2*spaceDV))+"px";
        height = (mid["height"] - (2*borderDV + 2*spaceDV))+"px";
        top = (mid["top"] + borderDV + spaceDV)+"px";
        left = (mid["left"] + borderDV + spaceDV)+"px";
        visibility = "visible";
      }
      with(dv.childDVCont.style) {
        visibility = "visible";
      }
      with(dv.childDVClose.style) {
        visibility = "visible";
      }
      with(dv.childDVBefore.style) {
        visibility = "visible";
      }
      with(dv.childDVNext.style) {
        visibility = "visible";
      }
      dv.showLoadDV();
      dv.checkBeforeAndNextImages(imgString);
    } else alert(dv.errorMessage);
  };
  // # hideDV()
  DVObject.prototype.hideDV = function() {
    with(dv.parentDV.style) {
      visibility = "hidden";
    }
    with(dv.childDVCont.style) {
      visibility = "hidden";
    }
    with(dv.childDVClose.style) {
      visibility = "hidden";
    }
    with(dv.childDVLoad.style) {
      visibility = "hidden";
    }
    with(dv.childDVBefore.style) {
        visibility = "hidden";
    }
    with(dv.childDVNext.style) {
        visibility = "hidden";
    }
    with(dv.swapImg) {
        src = "";
        width = 10;
        height = 10;
      }
  };
  // # showLoadDV()
  DVObject.prototype.showLoadDV = function() {
    with(dv.childDVLoad.style) {
      visibility = "visible";
    }
    dv.checkLoad();
  };
  // # checkLoad
  DVObject.prototype.checkLoad = function() {
    if(document.images["picDV"].complete==false || dv.img.src=="") {
      window.setTimeout("dv.checkLoad()", 200);
    } else {
      with(dv.childDVLoad.style) {
        visibility = "hidden";
      }
    }
  };
  // # checkImgParameter
  DVObject.prototype.checkImgParameter = function(imgString) {
    if(imgString) {
      var regSearchSrc = /src=["]?[a-zA-Z0-9.:_\-\/ ]+["]?/;
      var regSearchWidth = /width=["]?\d+["]?/;
      var regSearchHeight = /height=["]?\d+["]?/;
      var regSearchAlt = /alt=["]?[a-zA-Z0-9._\/&; ]*["]?/;
      var regSearchString = /[a-zA-Z0-9._\/]+/;

      //check if the principle values are given
      // # src
      if(dv.regSearch(imgString, regSearchSrc, "test")) {
        dv.img.src = dv.regSearch(imgString, regSearchSrc, "exec")+"";
        dv.img.src = dv.img.src.substring(5, dv.img.src.length-1);
      } else dv.errorMessage += "# The given Parameter within the dv.showDV-call does not consist of an src='...'!\n";
      // # width
      if(dv.regSearch(imgString, regSearchWidth, "test")) {
        dv.img.width = parseInt(dv.regSearchNumber(dv.regSearch(imgString, regSearchWidth, "exec")));
      } else dv.errorMessage += "# The given Parameter within the dv.showDV-call does not consist of an width='...'!\n";
      // # height
      if(dv.regSearch(imgString, regSearchHeight, "test")) {
        dv.img.height = parseInt(dv.regSearchNumber(dv.regSearch(imgString, regSearchHeight, "exec")));
      } else dv.errorMessage += "# The given Parameter within the dv.showDV-call does not consist of an hidth='...'!\n";
      //check optional values
      // # alt | title
      if(dv.regSearch(imgString, regSearchAlt, "test")) {
        dv.img.alt = dv.regSearch(imgString, regSearchAlt, "exec")+"";
        dv.img.alt = dv.img.alt.substring(5, dv.img.alt.length-1);
        dv.img.alt = dv.decodeHtml(dv.img.alt);
        dv.img.title = dv.img.alt;
      }
    } else dv.errorMessage += "# The Parameter within the dv.showDV-call is null!\n";
  };
  // # decodeHtml()
  DVObject.prototype.decodeHtml = function(encodedString) {
    //exchanges some html-decoded signs
    encodedString = encodedString.replace(/&auml;/, "ä");
    encodedString = encodedString.replace(/&Auml;/, "Ä");
    encodedString = encodedString.replace(/&uuml;/, "ü");
    encodedString = encodedString.replace(/&Uuml;/, "Ü");
    encodedString = encodedString.replace(/&ouml;/, "ö");
    encodedString = encodedString.replace(/&Ouml;/, "Ö");
    encodedString = encodedString.replace(/&szlig;/, "ß");
    return encodedString;
  };
  // # regSearch()
  DVObject.prototype.regSearch = function(regString, regSearch, fct) {
    if(fct=="exec") return regSearch.exec(regString);
    else if(fct=="test") return regSearch.test(regString);
    else dv.errorMessage += "There is no fct-parameter given in the regSearch-call!";
  };
  // # regSearchNumber()
  DVObject.prototype.regSearchNumber = function(paramString) {
    if(!isFinite(paramString)) {
      return dv.regSearch(paramString, /[-]?\d+([,.]\d+)?/, "exec");
    } else dv.errorMessage += "The given string ("+paramString+") does not consist of a number!\n";
  };
  // # getMiddlePosition()
  DVObject.prototype.getMiddlePosition = function(ow, oh) {
    var sw = dv.getScreenSize("width", "inner");
    var sh = dv.getScreenSize("height", "inner");
    var mid = new Array(4);
    //look if the picture is bigger than the screen resolution
    if(sw<ow || sh<oh) {
      //which dimension is relatively bigger in comparison to the screen resolution
      if(sw/ow > sh/oh) {    //height is bigger
        var tmp = oh;
        oh = sh;
        ow = oh*ow/tmp;
      } else {               //width is bigger (or both)
        var tmp = ow;
        ow = sw;
        oh = ow*oh/tmp;
      }
    }

    mid["width"] = Math.round(ow);
    mid["height"] = Math.round(oh);
    if(sw/ow < sh/oh) mid["top"] = Math.round((sh-oh)/2); else mid["top"] = Math.round((sh-oh)/2);
    if(sw/ow > sh/oh) mid["left"] = Math.round((sw-ow)/2); else mid["left"] = Math.round((sw-ow)/2);

    //if you have scrollbars, you have to add the scrolled-pixel
    if(MS) {
      if(document.documentElement.scrollTop)
         mid["top"] += document.documentElement.scrollTop;
      else
      	mid["top"] += document.body.scrollTop;
      if(document.documentElement.scrollLeft)
         mid["left"] += document.documentElement.scrollLeft;
      else
         mid["left"] += document.body.scrollLeft;
    } else {
      mid["top"] += window.pageYOffset;
      mid["left"] += window.pageXOffset;
    }
    return mid;
  };
  // # getScreenSize()
  DVObject.prototype.getScreenSize = function(whichSize, whichWindow) {
    var agt       = navigator.userAgent.toLowerCase();
    var isIE     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    var isW3C    = (window.document.getElementById) ? true : false;
    var size;
    if(whichWindow=="inner") {
      if(isIE) {
        if(whichSize=='width') size = document.documentElement.offsetWidth?document.documentElement.offsetWidth:document.body.offsetWidth;
        else size = document.documentElement.offsetHeight?document.documentElement.offsetHeight:document.body.offsetHeight;
      } else if(isW3C) {
        if(whichSize=='width') size = window.innerWidth;
        else size = window.innerHeight;
      } else BrowserFailure();
    } else if(whichWindow=="outer") {
      if(whichSize=='width') size = screen.availWidth;
      if(whichSize=='height') size = screen.availHeight;
    } else if(whichWindow=="max") {
      if(whichSize=='width') size = screen.width;
      if(whichSize=='height') size = screen.height;
    } else ParameterFailure();
    return size;
  };
  // # setAllImagesArray()
  DVObject.prototype.setAllImagesArray = function(allImagesArray) {
    dv.allImages = allImagesArray;
  };
  // # checkBeforeAndNextImages()
  DVObject.prototype.checkBeforeAndNextImages = function(imgString) {
    //is an image-array provided by the page and are there more than 1 images in it
    if(!dv.allImages || !dv.allImages.length || dv.allImages.length<2)
    {
      with(dv.childDVBefore.style) {
        visibility = "hidden";
      }
      with(dv.childDVNext.style) {
        visibility = "hidden";
      }
      return;
    }

    //check position of the current-displayed image
    dv.currentDisplayedImage = dv.getPositionOfImage(imgString);

    //show before-sign
    if(parseInt(dv.currentDisplayedImage)==0)
      dv.childDVBefore.style.visibility = "hidden";
    else
      dv.childDVBefore.style.visibility = "visible";

    //show next-sign
    if(parseInt(dv.currentDisplayedImage)==parseInt(dv.allImages.length)-1)
      dv.childDVNext.style.visibility = "hidden";
    else
      dv.childDVNext.style.visibility = "visible";
  };
  // # showLastImage()
  DVObject.prototype.showLastImage = function() {
    var tmp = dv.allImages[parseInt(dv.currentDisplayedImage)-1];
    dv.showDV(tmp);
  };
  // # showNextImage()
  DVObject.prototype.showNextImage = function() {
    var tmp = dv.allImages[parseInt(dv.currentDisplayedImage)+1];
    dv.showDV(tmp);
  };
  // # setOpacityStyle()
  DVObject.prototype.setOpacityStyle = function(styleObject) {
    with(styleObject)
    {
      opacity = dv.getOpacityValue("opacity");		//".50";
      filter = dv.getOpacityValue("filter");		//"alpha(opacity=50)"
      mozOpacity = dv.getOpacityValue("mozOpacity");	//"0.5";
    }
  };
  // # getOpacityValue()
  DVObject.prototype.getOpacityValue = function(opacityStyle) {
    if(opacityStyle=="opacity")
      return "."+bgOpacity;
    else if(opacityStyle=="filter")
      return "alpha(opacity="+bgOpacity+")";
    else if(opacityStyle=="mozOpacity")
    {
      var v = bgOpacity/100;
      return ""+v;
    }
    else
    {
      alert("Unknown kind of opacityStyle! Could not set opacity.");
      return bgOpacity;
    }
  };
  // # getPositionOfImage()
  DVObject.prototype.getPositionOfImage = function(imgString) {
    for(var index in dv.allImages)
    {
      if(dv.allImages[index]==imgString)
        return index;
    }
  };

  // # RegisterKeyEvents
  function RegisterKeyEvents()
  {
    var tagToRegisterEvent = document.getElementsByTagName("body")[0];

    //register if no other event has been registered yet
    if(tagToRegisterEvent.onkeydown==null)
    {
      tagToRegisterEvent.onkeydown = OKD;
    }
  }
  function OKD(ThrownEvent)
  {
    //return if the image is hidden
    if(dv.parentDV.style.visibility=="hidden")
      return;

    var IsSlideshow = (dv.allImages && dv.allImages.length && dv.allImages.length>1);

    //evaluate which key has been pressed
    var keyPressed = null;
    if (!ThrownEvent) ThrownEvent = window.event;
    if (ThrownEvent.which) keyPressed = ThrownEvent.which;
    else if (ThrownEvent.keyCode) keyPressed = ThrownEvent.keyCode;

    //do something considering the pressed key
    if(keyPressed!=null)
    {
      if(IsSlideshow)
      {
        //arrow-left -> show previous image
        if(keyPressed==37 && dv.childDVBefore.style.visibility=="visible")
          dv.showLastImage();
        //arrow-right -> show next image
        else if(keyPressed==39 && dv.childDVNext.style.visibility=="visible")
          dv.showNextImage();
      }

      //esc || del -> hide image
      if(keyPressed==27 || keyPressed==46)
        dv.hideDV();
    }
  }

  /**********************************************************************/
  /* DHTML-Bibliothek (www.teamone.de/selfhtml)                         */
  /**********************************************************************/
  var DHTML = 0, DOM = 0, MS = 0, NS = 0, OP = 0;
  function DHTML_init() {
   if (window.opera) {
       OP = 1;
   }
   if(document.getElementById) {
     DHTML = 1;
     DOM = 1;
   }
   if(document.all && !OP) {
     DHTML = 1;
     MS = 1;
   }
   if(document.layers && !OP) {
     DHTML = 1;
     NS = 1;
   }
  }
 function getElem(p1,p2,p3) {
 var Elem;
 if(DOM) {
   if(p1.toLowerCase()=="id") {
     if (typeof document.getElementById(p2) == "object")
     Elem = document.getElementById(p2);
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="name") {
     if (typeof document.getElementsByName(p2) == "object")
     Elem = document.getElementsByName(p2)[p3];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="tagname") {
     if (typeof document.getElementsByTagName(p2) == "object" ||
        (OP && typeof document.getElementsByTagName(p2) == "function"))
     Elem = document.getElementsByTagName(p2)[p3];
     else Elem = void(0);
     return(Elem);
   }
   else return void(0);
 }
 else if(MS) {
   if(p1.toLowerCase()=="id") {
     if (typeof document.all[p2] == "object")
     Elem = document.all[p2];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="tagname") {
     if (typeof document.all.tags(p2) == "object")
     Elem = document.all.tags(p2)[p3];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="name") {
     if (typeof document[p2] == "object")
     Elem = document[p2];
     else Elem = void(0);
     return(Elem);
   }
   else return void(0);
 }
 else if(NS) {
   if(p1.toLowerCase()=="id" || p1.toLowerCase()=="name") {
   if (typeof document[p2] == "object")
     Elem = document[p2];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="index") {
    if (typeof document.layers[p2] == "object")
     Elem = document.layers[p2];
    else Elem = void(0);
     return(Elem);
   }
   else return void(0);
 }
}

//the code for the view-div is written above the body-tag.. hope this does not matter
initDV();

function checkLoad() {
  //do nothing
}