
  /***************************************************************************************
     filename:      DV.js
     version:       1.64
     last modified: 11.01.2008
     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.
                    - borderDV:      the width of the border around the picture in pixel.
                    - 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">';

   		    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="myPic.jpg" width="800" height="500">';
  		    dv.setAllImagesArray(myPicArray);

     example:       <a href="#" onClick="dv.showDV(myPic);return false;">click here</a>

     known "bugs": - z-index does not work propper 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:	   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.09.2006 - added functionality of alt (title)
		   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.

    **************************************************************************************/


  //attributes you may vary
  var closingSign = "x";                                            //the sign in the upper right corner which signs to close the viewer
  var loadingSign = "L.O.A.D.I.N.G";                                //the sign in the loading-div
  var beforeSign = "&lt;";					   //the sign to show the last image
  var nextSign = "&gt;";						   //the sign to show the next image
  var borderDV = 2;                                                 //border-width arround the viewer (in px)
  var spaceDV = 20;                                                 //space between the viewer and the inner-window (in px)
  var borderColorDV = "#ffffff";                                    //border color and the color of the closing-sign-text
  var bgColorDV = "#A7A8C7";                                        //background color for the closing sign
  var bgOpacity = 40;						   //opacity in percent
  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();
  }

  function DVObject() {
    //attributes
    this.htmlCode;
    this.parentDV;
    this.childDVCont;
    this.childDVClose;
    this.childDVLoad;
    this.childDVBeforeAndNext;
    this.childDVTblBeforeAndNext;
    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">'+closingSign+'</div>' +
                    '<div id="childDVBeforeAndNext">' +
                    ' <table id="childDVTblBeforeAndNext" cellspacing="0" cellpadding="0">' +
                    '  <tr>' +
                    '   <td><div id="childDVBefore" onClick="dv.showLastImage();" title="Vorheriges Bild"><b>'+beforeSign+'</b></div></td>' +
                    '   <td><div id="childDVNext" onClick="dv.showNextImage();" title="Nächstes Bild"><b>'+nextSign+'</b></div></td>' +
                    '  </tr>' +
                    ' </table>' +
                    '</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.childDVBeforeAndNext 	= getElem("id", "childDVBeforeAndNext", null);
    dv.childDVTblBeforeAndNext 	= getElem("id", "childDVTblBeforeAndNext", 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 = borderDV+"px";
      top = borderDV+"px";
      width = 25+"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.childDVBeforeAndNext.style) {
      position = "absolute";
      zIndex = baseZIndex+2;
      textAlign = "center";
      verticalAlign = "middle";
      top = borderDV+"px";
      left = borderDV+"px";
      height = 20+"px";
      border = borderDV+"px solid "+borderColorDV;
      padding = 2+"px";
      color = borderColorDV;
      backgroundColor = bgColorDV;
      visibility = "hidden";
    }
    dv.setOpacityStyle(dv.childDVBeforeAndNext.style);

    with(dv.childDVTblBeforeAndNext.style) {
      border = "none";
      height = 20+"px";
      borderSpacing = 0+"px";
      borderCollapse = "collapse";
      emptyCells = "show";
      padding = 0+"px";
      margin = 0+"px";
      textAlign = "center";
      verticalAlign = "middle";
    }

    with(dv.childDVBefore.style) {
      position = "relative";
      zIndex = baseZIndex+1;
      cursor = "pointer";
      textAlign = "center";
      verticalAlign = "middle";
      height = 20+"px";
      padding = 2+"px";
    }

    with(dv.childDVNext.style) {
      position = "relative";
      zIndex = baseZIndex+1;
      cursor = "pointer";
      textAlign = "center";
      verticalAlign = "middle";
      height = 20+"px";
      padding = 2+"px";
    }

    //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.childDVBeforeAndNext.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.childDVBeforeAndNext.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
    /*PAY ATTENTION: this characters are part of the character set "ISO-8859-1". If you plan to use to html-decode other certain characters
      which are part of another character-set you have to publish the script with the other certain character-set!!! */
    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.childDVBeforeAndNext.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;
    }
  };


  /**********************************************************************/
  /* 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
}