home *** CD-ROM | disk | FTP | other *** search
/ PC Active 2009 April / PCA224.ISO / intface / interactie.js < prev    next >
Encoding:
JavaScript  |  2009-03-06  |  31.3 KB  |  960 lines

  1. /*
  2. versie 1.5 dHTML: Andre van Groenestein
  3. versie 2.0: algemene scripts toegevoegd (popupVenster)
  4. versie 2.5: idem (rollovers)
  5. 6 - 9 - 00 functies dw en ldw: write vervangen door writeln
  6. versie 3.0: compatibiteit met DOM tbv Netscape 6
  7. versie 4.0: navigatie via toetsenbord toegevoegd
  8. */
  9.  
  10. var pcaNummer = 224;
  11. // Is dit de DVD- of de cd-versie. De functie laadDVDContent() bepaalt vervolgens wat er gebeurt.
  12. var dvd = false;
  13. var ebook = false;
  14.  
  15. // debugging... functie onderaan pagina
  16. debug = false;
  17.  
  18. // Voor opslaan van image-directives
  19. if (document.images)
  20. {    img1on  = new Image(); img1on.src  = "../../media/images/sw_inst1.gif";
  21.     img2on  = new Image(); img2on.src  = "../../media/images/sw_info1.gif";
  22.     img3on  = new Image(); img3on.src  = "../../media/images/sluit_software1.gif";
  23.     img1off = new Image(); img1off.src = "../../media/images/sw_inst.gif";
  24.     img2off = new Image(); img2off.src = "../../media/images/sw_info.gif";
  25.     img3off = new Image(); img3off.src = "../../media/images/sluit_software.gif";
  26.     KnoppenGeladen = true;
  27. }
  28.  
  29. var isIE     = (navigator.appName.indexOf('Microsoft')   != -1);
  30. var isIE4    = (navigator.appVersion.indexOf('MSIE 4')   != -1);
  31. var isIE55   = (navigator.appVersion.indexOf('MSIE 5.5') != -1);
  32. var Netscape = (navigator.appName == 'Netscape');
  33.  
  34. var dom1, dom2; dom1 = dom2 = false;
  35. if (document.getElementById)
  36. {    dom1 = dom2 = true;
  37. }
  38.  
  39. var drag = false; // bij bepaalde objecten wordt deze true tijdens een mousedown event
  40. var X; // positie van het drag & drop venster
  41. var Y;
  42. var objX; // uitgangspositie v/h object tijdens mousedown
  43. var objY;
  44. var mouseX; // uitgangspositie v/d muis tijdens mousedown
  45. var mouseY;
  46. var huidigObject; // het venster dat getoond/verplaatst moet worden
  47.  
  48. LAYERS    = (isIE) ? "document.all"             : "document.layers";
  49. HIDDEN    = (isIE) ? "hidden"                   : "hide";
  50. VISIBLE   = (isIE || dom1) ? "visible"          : "show";
  51. ZICHTBAAR = (isIE || dom1) ? "style.visibility" : "visibility";
  52.  
  53. // DOM controle (NS => 5.0, IE => 5.0)
  54. if (dom1)
  55. {    LAYERS = document.getElementById;
  56. }
  57.  
  58. /*
  59. laadDVDContent krijgt twee argumenten: frame en pagina
  60. Voorbeeld: laadDVDContent('parent', '../tip1/index.htm')
  61. - inladen in het parentframe
  62. - directory is ../tip1 -> ten opzicht van de huidige locatie
  63. */
  64.  
  65. function resizeThis(){
  66.    if(document.images["thisImg"]){
  67.     plusX = (document.images["thisImg"].width-100)/steps;
  68.     plusY = (document.images["thisImg"].height-85)/steps;
  69.     timer = window.setInterval("stretchOut()",10);
  70.    }
  71. }
  72.  
  73.  
  74. function laadDVDContent(frame, pagina)
  75. {
  76.     locatie = eval(frame + '.location');
  77.  
  78.     // is dit cd- of dvd-versie
  79.     if (dvd)
  80.     {
  81.         locatie.href = pagina;
  82.     }
  83.     else
  84.     {
  85.         toonCDVersiePopup(locatie, pagina);
  86.     }
  87.  
  88. }
  89.  
  90. function toonCDVersiePopup(locatie, pagina)
  91. {
  92.     if (pagina.indexOf('/dvd/') == -1)
  93.     {    // dit is het DVD menu
  94.         locatie.href = 'nietopcd.htm';
  95.     }
  96.     else
  97.     {    // een pagina vanaf cd die linkt naar een DVD onderdeel
  98.         pagina = pagina.substring(0, pagina.indexOf('/dvd/') + 5)
  99.         locatie.href = pagina + 'nietopcd.htm';
  100.     }
  101. }
  102.  
  103. // breedte van het huidige venster
  104. function getVensterBreedte()
  105. {    if (debug)
  106.     {    dbg_functie     = arguments.callee.toString();
  107.         eind            = dbg_functie.indexOf("{") - 1;
  108.         dbg_functieNaam = dbg_functie.substr(0, eind);
  109.         dbg('<b>' + dbg_functieNaam + '</b>')
  110.         for (var i = 0; i < arguments.length; i++)
  111.         {    dbg('  argument ' + i + ': ' + arguments[i])
  112.         }
  113.         dbg('');
  114.     }
  115.     
  116.     if (isIE) return document.body.clientWidth;
  117.     else      return window.innerWidth;
  118. }
  119.  
  120. // hoogte van het huidige venster
  121. function getVensterHoogte()
  122. {    if (debug)
  123.     {    dbg_functie     = arguments.callee.toString();
  124.         eind            = dbg_functie.indexOf("{") - 1;
  125.         dbg_functieNaam = dbg_functie.substr(0, eind);
  126.         dbg('<b>' + dbg_functieNaam + '</b>')
  127.         for (var i = 0; i < arguments.length; i++)
  128.         {    dbg('  argument ' + i + ': ' + arguments[i])
  129.         }
  130.         dbg('');
  131.     }
  132.  
  133.     if (isIE) return document.body.clientHeight;
  134.     else      return window.innerHeight;
  135. }
  136.  
  137. // breedte van het huidige object
  138. function getObjectBreedte(obj)
  139. {    if (debug)
  140.     {    dbg_functie     = arguments.callee.toString();
  141.         eind            = dbg_functie.indexOf("{") - 1;
  142.         dbg_functieNaam = dbg_functie.substr(0, eind);
  143.         dbg('<b>' + dbg_functieNaam + '</b>')
  144.         for (var i = 0; i < arguments.length; i++)
  145.         {    dbg('  argument ' + i + ': ' + arguments[i])
  146.         }
  147.         dbg('');
  148.     }
  149.  
  150.     // Mozilla/NS6 kan de width van een object niet bepalen. Onderstaande werkt dus niet.
  151.     if (dom1 && !isIE) return parseInt(obj.style.width);
  152.     else if (isIE) return obj.clientWidth + 2; // 2 bij optellen, want width klopt niet...?
  153.     else      return obj.clip.width + 2;  // heeft mogelijk met de padding te maken!
  154. }
  155.  
  156. // lengte van het huidige object
  157. function getObjectHoogte(obj)
  158. {    if (debug)
  159.     {    dbg_functie     = arguments.callee.toString();
  160.         eind            = dbg_functie.indexOf("{") - 1;
  161.         dbg_functieNaam = dbg_functie.substr(0, eind);
  162.         dbg('<b>' + dbg_functieNaam + '</b>')
  163.         for (var i = 0; i < arguments.length; i++)
  164.         {    dbg('  argument ' + i + ': ' + arguments[i])
  165.         }
  166.         dbg('');
  167.     }
  168.  
  169.     // Mozilla/NS6 kan de height van een object niet bepalen. Onderstaande werkt dus niet.
  170.     if (dom1 && !isIE) return parseInt(obj.style.height);
  171.     else if (isIE) return obj.clientHeight + 2; // 2 bij optellen, want height klopt niet...?
  172.     else      return obj.clip.height + 2;  // heeft mogelijk met de padding te maken!
  173. }
  174.  
  175. // plaats object op positie x, y
  176. function setPositie(obj, x, y)
  177. {    if (debug)
  178.     {    dbg_functie     = arguments.callee.toString();
  179.         eind            = dbg_functie.indexOf("{") - 1;
  180.         dbg_functieNaam = dbg_functie.substr(0, eind);
  181.         dbg('<b>' + dbg_functieNaam + '</b>')
  182.         for (var i = 0; i < arguments.length; i++)
  183.         {    dbg('  argument ' + i + ': ' + arguments[i])
  184.         }
  185.         dbg('');
  186.     }
  187.  
  188.     if(dom2)
  189.     {    obj.style.left = x + 'px';
  190.         obj.style.top  = y + 'px';
  191.     }
  192.     else if (Netscape) obj.moveTo(x, y);
  193.     else
  194.     {    obj.style.pixelLeft = x;
  195.         obj.style.pixelTop  = y;
  196.     }
  197. }
  198.  
  199. function getPositieX(obj)
  200. {    if (debug)
  201.     {    dbg_functie     = arguments.callee.toString();
  202.         eind            = dbg_functie.indexOf("{") - 1;
  203.         dbg_functieNaam = dbg_functie.substr(0, eind);
  204.         dbg('<b>' + dbg_functieNaam + '</b>')
  205.         for (var i = 0; i < arguments.length; i++)
  206.         {    dbg('  argument ' + i + ': ' + arguments[i])
  207.         }
  208.         dbg('');
  209.     }
  210.  
  211.     // if(dom2)
  212.     //{    return obj.style.left; // plaatst 'px' achter het getal...
  213.     //}
  214.     if (Netscape) // code...?
  215.     {}
  216.     else
  217.     {    return obj.style.pixelLeft;
  218.     }
  219.  
  220. }
  221.  
  222. function getPositieY(obj)
  223. {    if (debug)
  224.     {    dbg_functie     = arguments.callee.toString();
  225.         eind            = dbg_functie.indexOf("{") - 1;
  226.         dbg_functieNaam = dbg_functie.substr(0, eind);
  227.         dbg('<b>' + dbg_functieNaam + '</b>')
  228.         for (var i = 0; i < arguments.length; i++)
  229.         {    dbg('  argument ' + i + ': ' + arguments[i])
  230.         }
  231.         dbg('');
  232.     }
  233.  
  234.     // if(dom2)
  235.     //{    return obj.style.top; // plaatst 'px' achter het getal...
  236.     //}
  237.     if (Netscape) // code...?
  238.     {}
  239.     else
  240.     {    return obj.style.pixelTop;
  241.     }
  242. }
  243.  
  244. function setBoundaries(obj)
  245. {    if (debug)
  246.     {    dbg_functie     = arguments.callee.toString();
  247.         eind            = dbg_functie.indexOf("{") - 1;
  248.         dbg_functieNaam = dbg_functie.substr(0, eind);
  249.         dbg('<b>' + dbg_functieNaam + '</b>')
  250.         for (var i = 0; i < arguments.length; i++)
  251.         {    dbg('  argument ' + i + ': ' + arguments[i])
  252.         }
  253.         dbg('');
  254.     }
  255.  
  256.     objectBreedte = getObjectBreedte(obj);
  257.     objectHoogte  = getObjectHoogte(obj);
  258.     if (objectBreedte > (getVensterBreedte() - X) )
  259.         X = getVensterBreedte() - objectBreedte - 5;
  260.     if (objectHoogte > (getVensterHoogte()  - Y) )
  261.         Y = getVensterHoogte() - objectHoogte - 5;
  262.  
  263.     dbg('objectBreedte: ' + objectBreedte);
  264.     dbg('objectHoogte: ' + objectHoogte);
  265.     dbg('getVensterBreedte(): ' + getVensterBreedte());
  266.     dbg('X: ' + X);
  267. }
  268.  
  269. function sluitPopup(nummer)
  270. {    if (debug)
  271.     {    dbg_functie     = arguments.callee.toString();
  272.         eind            = dbg_functie.indexOf("{") - 1;
  273.         dbg_functieNaam = dbg_functie.substr(0, eind);
  274.         dbg('<b>' + dbg_functieNaam + '</b>')
  275.         for (var i = 0; i < arguments.length; i++)
  276.         {    dbg('  argument ' + i + ': ' + arguments[i])
  277.         }
  278.         dbg('');
  279.     }
  280.  
  281.     var popup = "popup" + nummer;
  282.     if (dom1)
  283.     {    document.getElementById(popup).style.visibility = 'hidden';
  284.     }
  285.     else
  286.         eval(LAYERS + "['" + popup + "']." + ZICHTBAAR + "= '" + HIDDEN + "'");
  287. }
  288.  
  289. function toonPopup(nummer)
  290. {    if (debug)
  291.      {    dbg_functie     = arguments.callee.toString();
  292.         eind            = dbg_functie.indexOf("{") - 1;
  293.         dbg_functieNaam = dbg_functie.substr(0, eind);
  294.         dbg('<b>' + dbg_functieNaam + '</b>')
  295.         for (var i = 0; i < arguments.length; i++)
  296.         {    dbg('  argument ' + i + ': ' + arguments[i])
  297.         }
  298.         dbg('');
  299.       }
  300.  
  301.     var popup = "popup" + nummer;
  302.     if (dom1)
  303.         document.getElementById(popup).style.visibility = 'visible';
  304.     else
  305.         eval(LAYERS + "['" + popup + "']." + ZICHTBAAR + "= '" + VISIBLE + "'");
  306. }
  307.  
  308. function openPopup(nummer)
  309. {    if (debug)
  310.     {    dbg_functie     = arguments.callee.toString();
  311.         eind            = dbg_functie.indexOf("{") - 1;
  312.         dbg_functieNaam = dbg_functie.substr(0, eind);
  313.         dbg('<b>' + dbg_functieNaam + '</b>')
  314.         for (var i = 0; i < arguments.length; i++)
  315.         {    dbg('  argument ' + i + ': ' + arguments[i])
  316.         }
  317.         dbg('');
  318.     }
  319.  
  320.     var popup = "popup" + nummer;
  321.     if (dom1)
  322.         huidigObject = document.getElementById(popup);
  323.     else
  324.         huidigObject = eval(LAYERS + "['" + popup + "']");
  325.     
  326.     if (isIE) X = eval(window.event.clientX + 8);
  327.     if (isIE) Y = eval(window.event.clientY + 17);
  328.     setBoundaries(huidigObject);
  329.     setPositie(huidigObject, X, Y);
  330.     toonPopup(nummer);
  331. }
  332.  
  333. function dragDrop()
  334. {    if (isIE) X = window.event.clientX;
  335.     if (isIE) Y = window.event.clientY;
  336.     if (drag)
  337.     {    X = objX + X - mouseX;
  338.         Y = objY + Y - mouseY;
  339.         setBoundaries(huidigObject);
  340.         setPositie(huidigObject, X, Y);
  341.         return false; // zonder deze wordt de mousedown doorgegeven aan Windows
  342.     }
  343. }
  344.  
  345. // drag & drop venster
  346. function initDrag(evt)
  347. {    if (dom1)
  348.         huidigObject = document.getElementById('floatingPopup');
  349.     else
  350.         huidigObject = eval(LAYERS + "['floatingPopup']");
  351.     drag   = true;
  352.     if (isIE)
  353.     {    mouseX = event.clientX;
  354.         mouseY = event.clientY;
  355.     }
  356.     else
  357.     {    mouseX = X;
  358.         mouseY = Y;
  359.     }
  360.     objX = parseInt(getPositieX(huidigObject));
  361.     objY = parseInt(getPositieY(huidigObject));
  362.     document.onmousemove = dragDrop;
  363. }
  364.  
  365. if (dom1)
  366. {    document.onmouseup = new Function("drag = false")
  367. }
  368.  
  369. function closeFloatingPopup()
  370. {    if (dom1)
  371.         document.getElementById('floatingPopup').style.visibility = "hidden";
  372.     else
  373.         document.floatingPopup.visibility = "hide";
  374. }
  375.  
  376.  
  377. // toont een andere image bij mouseOver. Toont de originele bij mouseOut.
  378. var actief = false;
  379. function muis(nummer)
  380. {    if (actief) document["img" + nummer].src = eval("img" + nummer + "off.src");
  381.      else        document["img" + nummer].src = eval("img" + nummer + "on.src");
  382.     actief = (!actief);
  383. }
  384.  
  385. // bepaal X en Y coordinaat van de muis en roep vervolgens de originele functie aan
  386. function muisNS(evt)
  387. {    X = eval(evt.pageX + 8);
  388.     Y = eval(evt.pageY + 17);
  389.     routeEvent(evt);
  390. }
  391.  
  392. // coordinaten van de linkerbovenhoek van de interface
  393. var search    = top.location.search.substring(1);
  394. variabelen    = search.split(",");
  395. PCAinterfaceX = variabelen[3];
  396. PCAinterfaceY = variabelen[4];
  397.  
  398. //PCAinterfaceX = (screen.availWidth - 640) / 2;
  399. //PCAinterfaceY = (screen.availHeight - 480) / 2;
  400.  
  401. var PopupWeergave       = "resizable=no,status=no,scrollbars=yes";
  402. var PopupWeergaveScroll = "resizable=no,status=no,scrollbars=yes";
  403.  
  404. PositieX = (isIE) ? "left" : "screenX";
  405. PositieY = (isIE) ? "top"  : "screenY";
  406.  
  407. // definitie van de vensternaam voor popups
  408. var lokaalVenster = null;
  409.  
  410. // sluit alle openstaande html popups en verwijder selecties rondom knoppen
  411. function menuFocus()
  412. {    if (lokaalVenster != null && lokaalVenster.open)
  413.         lokaalVenster.close();
  414.     if (parent.menu && parent.menu.lokaalVenster != null && parent.menu.lokaalVenster.open)
  415.          parent.menu.lokaalVenster.close(); // in HandsOn's staat de window.open in het menu-frame
  416. //    if (parent.parent.script)
  417. //        parent.parent.script.HerstartMuziek();
  418.  
  419.     focus;
  420. }
  421.  
  422. function scriptFout()
  423. {    if (arguments[0].indexOf('RPC') == -1) // remote procedure call: venster is al gesloten, maar IE heeft dat nog niet door...
  424.     {    var fouts = 'Er is iets fout gegaan.'
  425.         fouts += '\nAls u deze problemen vaker hebt of de cd-rom niet';
  426.         fouts += '\ngoed kan gebruiken, stuur dan onderstaande gegevens';
  427.         if (isIE)
  428.             fouts += '\nvia internet naar de redactie.';
  429.         else
  430.             fouts += '\nvia www.pc-active.nl/reactie naar de cd-rom redactie.';
  431.         regel   = arguments[2];
  432.         bug     = arguments[0];
  433.         pagina  = arguments[1];
  434.         uitgave = pcaNummer;
  435.         browser = navigator.appName + ' ' + navigator.appVersion;
  436.  
  437.         if (isIE)
  438.         {    foutje = "regel: " + regel + "<br>error: " + bug + "<br>pagina: " + pagina + "<br>uitgave: " + uitgave + "<br>browser: " + browser;
  439.             document.getElementById('errorIntro').innerHTML = fouts;
  440.             document.getElementById('errorMelding').innerHTML = foutje;
  441.             document.getElementById('regel').value   = regel;
  442.             document.getElementById('bug').value   = bug;
  443.             document.getElementById('pagina').value  = pagina;
  444.             document.getElementById('uitgave').value = uitgave;
  445.             document.getElementById('browser').value = browser;
  446.             document.getElementById('errorPopup').style.visibility = 'visible';
  447.         }
  448.         else
  449.             alert(fouts + '\n\nregel: ' + regel + '\nerror: ' + bug + '\npagina: ' + pagina + '\nuitgave: ' + uitgave + '\nbrowser: ' + browser);
  450.     }
  451.     return true;
  452. }
  453.  
  454. function closeError()
  455. {    errorPopup.style.visibility = "hidden";
  456. }
  457.  
  458. strError = '<div id="errorPopup">';
  459. strError += '<span id=errorTitle onMousedown="initDrag(\'errorPopup\')"> Error</span>';
  460. strError += '<span id="errorIntro"> </span>';
  461. strError += '<span id="errorMelding"> </span>';
  462. strError += '<center>';
  463. strError += '<form name="cdbug" action="http://www.pcactive.nl/cdrom/cdbug.asp" method="POST">';
  464.     strError += '<input type=hidden name="regel" value="">';
  465.     strError += '<input type=hidden name="bug" value="">';
  466.     strError += '<input type=hidden name="pagina" value="">';
  467.     strError += '<input type=hidden name="uitgave" value="">';
  468.     strError += '<input type=hidden name="browser" value="">';
  469.     strError += '<input type=submit value="verstuur via internet">';
  470.     strError += '<input type=button value="annuleren" onclick="closeError()">';
  471. strError += '</form>';
  472. strError += '</center>';
  473. strError += '</div>';
  474.  
  475. function getErrorPopup()
  476. {    if (isIE)
  477.         document.write(strError);
  478.     window.onerror = scriptFout;
  479. }
  480.  
  481. window.onfocus = menuFocus;
  482.  
  483.  
  484. // ***  Begin standaardfuncties  *** //
  485.  
  486. function niets() { void(parent.focus()); }
  487.  
  488. function dw(string) { document.writeln(string); }
  489.  
  490. function ldw(string) { lokaalVenster.document.writeln(string); }
  491.  
  492. // images van de 4 hoofdschermen
  493. imgxon = new Image(); imgxon.src = "../media/images/menu_hm1.gif";
  494. imgaon = new Image(); imgaon.src = "../media/images/menu_sw1.gif";
  495. imgbon = new Image(); imgbon.src = "../media/images/menu_ol1.gif";
  496. imgcon = new Image(); imgcon.src = "../media/images/menu_pc1.gif";
  497. imgdon = new Image(); imgdon.src = "../media/images/menu_cd1.gif";
  498. img_dvdon = new Image(); img_dvdon.src = "../media/images/menu_dvd1.gif";
  499.  
  500. imgxoff = new Image(); imgxoff.src = "../media/images/menu_hm.gif";
  501. imgaoff = new Image(); imgaoff.src = "../media/images/menu_sw.gif";
  502. imgboff = new Image(); imgboff.src = "../media/images/menu_ol.gif";
  503. imgcoff = new Image(); imgcoff.src = "../media/images/menu_pc.gif";
  504. imgdoff = new Image(); imgdoff.src = "../media/images/menu_cd.gif";
  505. img_dvdoff = new Image(); img_dvdoff.src = "../media/images/menu_dvd.gif";
  506.   
  507. menux = new Image(); menux.src = "../media/images/hfd_hm1.gif"
  508. menua = new Image(); menua.src = "../media/images/hfd_sw.gif"
  509. menub = new Image(); menub.src = "../media/images/hfd_ol.gif"
  510. menuc = new Image(); menuc.src = "../media/images/hfd_pc.gif"
  511. menud = new Image(); menud.src = "../media/images/hfd_cd.gif"
  512. menu_dvd = new Image(); menu_dvd.src = "../media/images/hfd_dvd.gif"
  513. // menuoff caching staat in specifieke directory (zoals /pca/pcactive.js)
  514.  
  515. // image functies van de 4 hoofdschermen
  516. function rollIn(imgName)
  517. { document[imgName].src = eval(imgName + "on.src"); }
  518.  
  519. function rollOut(imgName)
  520. { document[imgName].src = eval(imgName + "off.src"); }
  521.  
  522. function DualImageChange(imageID, imageName, imageID2, imageName2)
  523. {    if (KnoppenGeladen)
  524.     {    document.images[imageID].src = eval(imageName + ".src");
  525.          document.images[imageID2].src = eval(imageName2 + ".src");
  526.     }
  527. }
  528.  
  529. // debugging unit
  530. if (debug)
  531. {   var geopend = true;
  532.     var debugTimeoutID;
  533.     debugWeergave = "top=0,left=0,"+"resizable=yes,status=no,scrollbars=yes";
  534.     schermBreedte = 380; //(screen.availWidth - 640) / 2;
  535.     schermHoogte  = screen.availHeight - 100;
  536.     debugVenster  = window.open("", "Debugwindow", "width=" + schermBreedte + ",height=" + schermHoogte + debugWeergave);
  537.     debugVenster.document.write("<html><body bgcolor=white><font face=helvetica size=2>")
  538.     debugVenster.document.write('<p><b>Debugscript ingeladen vanuit:</b><br>');
  539.     debugVenster.document.write(location.href + '<br>');
  540.     focus();
  541. }
  542. function dbg(string)
  543. {    if (debug)
  544.     {    if (!geopend)
  545.         {    debugVenster.document.open();
  546.             debugVenster.document.write("<html><body bgcolor=white><font face=helvetica size=2>")
  547.             geopend = true;
  548.         }
  549.         debugVenster.document.write(string + '<br>')
  550.         if (debugTimeoutID)
  551.             debugVenster.clearTimeout(debugTimeoutID);
  552.         debugTimeoutID = setTimeout("debugVenster.document.close(); geopend = false;", 2500);
  553.     }
  554. }
  555.  
  556. function schrijfDebugMelding(string)
  557. {    debugVenster.document.write(string + '<br>');
  558. }
  559. // eind debugging unit
  560.  
  561.  
  562. // vang mouseover en mouseouts af om X en Y coordinaat te bepalen
  563. if (Netscape)
  564. {   document.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
  565.     document.onmouseover = muisNS;
  566.     document.onmouseout  = muisNS;
  567. //    window.onresize      = opnieuwLaden;
  568. }
  569.  
  570. var inhoudVenster = null;
  571. function setInhoudPosition()
  572. {    if (Netscape && !dom1)
  573.     {   dx = window.screenX - PCAinterfaceX;
  574.         dy = window.screenY - PCAinterfaceY;
  575.         PCAinterfaceX = window.screenX;
  576.         PCAinterfaceY = window.screenY;
  577.         if (inhoudVenster != null && inhoudVenster.open) 
  578.         {    inhoudVenster.moveBy(dx, dy);
  579.         }
  580.     }
  581. }
  582.  
  583. // detectie van browsermovement om inhoudsopgave te positioneren
  584. // IE (kent onmove niet), Netscape 6 kent geen van beide
  585. if (Netscape && !dom1)
  586. {    window.onmove           = setInhoudPosition; }
  587. else if (isIE)
  588. {    top.document.onmouseout = setInhoudPosition; }
  589.  
  590.  
  591. function load()
  592. {    focus();
  593. }    window.onload = load;
  594.  
  595. // functies van de HandsOn's. Deze komen uit /intface/pca/handson.js, maar
  596. // IE6 vindt de functie dan te laat (?) wat een error genereert op pag0 van
  597. // de HandsOns.
  598.  
  599. function Ga(nummer)
  600. {   parent.menu.HuidigePagina = nummer;
  601.     self.location.href = "pag" + nummer + ".htm";
  602.     parent.overzicht.document.bladeren.location.selectedIndex = nummer;
  603.     parent.menu.SetKnoppen();
  604. }
  605.  
  606. function setStyle(obj, actie)
  607. {    if (actie == 'over')
  608.     {    obj.style.backgroundColor = '#ffffee';
  609.         obj.style.border          = '1px inset #CCCCCC';
  610.     }
  611.     else
  612.     {    obj.style.backgroundColor = '#ffffff';
  613.         obj.style.border          = '1px solid #ffffff';
  614.     }
  615. }
  616.  
  617. // pictogrammen voor besturingssysteem, bladlogo's en evaluatie
  618. // per pagina worden de waarden (true/false) bepaald
  619. win95    = false;
  620. win98    = false;
  621. winME    = false;
  622. winXP    = false;
  623. winNT    = false;
  624. win2000  = false;
  625. winVISTA = false;
  626. linux    = false;
  627. inBlad   = false;
  628. Aanrader = false;
  629. Evaluatie = 0;
  630.  
  631. // aangepast met evaluatie-pictogrammen op 26 juli 2005
  632. function toonOSPictogrammen(Evaluatie)
  633. {
  634. if (win95)
  635.     dw('<img src="../../media/images/sw_95.gif" width=22 height=22 border=0 alt="Dit programma draait onder Windows 95">');
  636. if (win98)
  637.     dw('<img src="../../media/images/sw_98.gif" width=22 height=22 border=0 alt="Dit programma draait onder Windows 98/98SE">');
  638. if (winME)
  639.     dw('<img src="../../media/images/sw_me.gif" width=22 height=22 border=0 alt="Dit programma draait onder Windows Me">');
  640. if (winNT)
  641.     dw('<img src="../../media/images/sw_nt.gif" width=22 height=22 border=0 alt="Dit programma draait onder Windows NT">');
  642. if (win2000)
  643.     dw('<img src="../../media/images/sw_2000.gif" width=22 height=22 border=0 alt="Dit programma draait onder Windows 2000">');
  644. if (winXP)
  645.     dw('<img src="../../media/images/sw_xp.gif" width=22 height=22 border=0 alt="Dit programma draait onder Windows XP">');
  646. if (winVISTA)
  647.     dw('<img src="../../media/images/sw_vista.gif" width=22 height=22 border=0 alt="Dit programma draait onder Windows Vista">');
  648. if (linux)
  649.     dw('<img src="../../media/images/sw_linux.gif" width=22 height=22 border=0 alt="Dit programma draait onder Linux">');
  650. if (Evaluatie == 0)
  651.     dw('<img src="../../media/images/SW_FREE.gif" width=28 height=22 border=0 alt="Dit programma kunt u gratis en zonder evaluatieperiode gebruiken">');
  652. if (Evaluatie == 10)
  653.     dw('<img src="../../media/images/SW_10.gif" width=28 height=22 border=0 alt="Dit programma kunt u 10 dagen evalueren">');
  654. if (Evaluatie == 15)
  655.     dw('<img src="../../media/images/SW_15.gif" width=28 height=22 border=0 alt="Dit programma kunt u 15 dagen evalueren">');
  656. if (Evaluatie == 20)
  657.     dw('<img src="../../media/images/SW_20.gif" width=28 height=22 border=0 alt="Dit programma kunt u 20 dagen evalueren">');
  658. if (Evaluatie == 21)
  659.     dw('<img src="../../media/images/SW_21.gif" width=28 height=22 border=0 alt="Dit programma kunt u 21 dagen evalueren">');    
  660. if (Evaluatie == 30)
  661.     dw('<img src="../../media/images/SW_30.gif" width=28 height=22 border=0 alt="Dit programma kunt u 30 dagen evalueren">');
  662. if (Evaluatie == 60)
  663.     dw('<img src="../../media/images/SW_60.gif" width=28 height=22 border=0 alt="Dit programma kunt u 60 dagen evalueren">');
  664. }
  665.  
  666. function SchrijfExtraInfo()
  667. {
  668. dw ('<table cellspacing=0 cellpadding=0 border=0 class="infoTabel">');
  669. dw ('<tr>');
  670.     dw ('<td>');
  671.         dw ('<div class="pictogrammen">');
  672.         toonOSPictogrammen(Evaluatie);
  673.         dw ('</div>');
  674.     dw ('<div class="sysinfo">');
  675.     dw (Parameters);
  676.     dw ('</div>');
  677.     dw ('</td>');
  678.     dw ('<td valign="top">');
  679.     dw ('<div class="extrainfo">');
  680.     dw ('<b>Extra informatie:</b><br>');
  681.     dw (ExtraInformatie);
  682.     dw ('</div>');
  683.     dw ('<div class="website">');
  684.     dw ('<b>Website:</b><br>');
  685.     dw ('<a href=' + Website + ' target=WebVenster class=weblink>' + Website + '</a>');
  686.     dw ('</div>');
  687.     dw ('</td>');
  688.     dw ('</tr>');
  689. dw ('</table>');
  690. }
  691.  
  692. // toegevoegd 26 juli 2005
  693. function toonBladPictogrammen()
  694. {
  695. dw('<td border=0 width=150 height=2 align=left>');
  696. if (inBlad)
  697.     dw('<img src="../../media/images/blad.gif" width=50 height=61 border=0 alt="Dit programma wordt besproken in het blad, raadpleeg de inhoudsopgave voor het artikel"</a>');
  698.  
  699. if (Aanrader)
  700.     dw('<img src="../../media/images/aanrader.gif" width=50 height=61 border=0 alt="Dit programma heeft een aanrader gewonnen. Lees voor meer informatie het artikel in het blad">');
  701. dw('</td></tr>');
  702. dw('</table>');
  703. }
  704.  
  705. // toegevoegd 20 mei 2003
  706. function getMonth(nummer)
  707. {
  708.     // zet het 4-cijferig nummer om naar een maand
  709.     maand = nummer;
  710.     if (nummer.length == 3)
  711.     {
  712.         // compensatie voor de planningtabel, waarin geen voorloopnummer is geplaatst
  713.         nummer = "0" + nummer;
  714.     }
  715.  
  716.     if (nummer != "")
  717.     {
  718.         nummer = nummer.toString();
  719.         pcaMaand = nummer.substring(2);
  720.         pcaMaand = parseInt(pcaMaand, 10);
  721.         switch (pcaMaand)
  722.         {
  723.             case 01: maand = "januari"; break;
  724.             case 02: maand = "februari"; break;
  725.             case 03: maand = "maart"; break;
  726.             case 04: maand = "april"; break;
  727.             case 05: maand = "mei"; break;
  728.             case 06: maand = "juni"; break;
  729.             case 07: maand = "juli/augustus"; break;
  730.             case 08: maand = "augustus"; break;
  731.             case 09: maand = "september"; break;
  732.             case 10: maand = "oktober"; break;
  733.             case 11: maand = "november"; break;
  734.             case 12: maand = "december"; break;
  735.             default: maand = pcaMaand; break;
  736.         }
  737.     }
  738.     return maand;
  739. }
  740.  
  741. function getYear(nummer)
  742. {
  743.     // zet de 4-cijferige PC-Active nummering om naar een het jaartal
  744.     jaar = nummer;
  745.     if (nummer.length == 3)
  746.     {
  747.         // compensatie voor de planningtabel, waarin geen voorloopnummer is geplaatst
  748.         nummer = "0" + nummer;
  749.     }
  750.  
  751.     if (nummer != "")
  752.     {
  753.         nummer = nummer.toString();
  754.         pcaJaar = nummer.substring(0, 2);
  755.         pcaJaar = parseInt(pcaJaar);
  756.         jaar = pcaJaar + 1988;
  757.     }
  758.     return jaar;
  759. }
  760.  
  761. function getUitgave(nummer)
  762. {
  763.     if (nummer == 1608)
  764.     {
  765.         uitgave = 'Special video- en fotobewerking 2004';
  766.     }
  767.     else
  768.     {
  769.         uitgave = getMonth(pcaNummer) + ' ' + getYear(pcaNummer);
  770.     }
  771.     return uitgave;
  772. }
  773.  
  774. function vervangExtendedAscii(woord)
  775. {
  776. return woord;
  777. //    tmp = woord.replace(/Θ/g, 'e');
  778. //    return tmp;
  779. }
  780.  
  781. mailVenster = null;
  782.  
  783. function mail(naam)
  784. {
  785.     // Toont een mailformulier.
  786.     // Op de pagina waar de mail-functie wordt aangeroepen mogen zowel
  787.     // diacritische tekens worden gebruikt, als hun html equivalent. Dus
  788.     // zowel AndrΘ als André is toegestaan.
  789.     var auteurID;
  790.     auteurs = new Array
  791.     (
  792.     6,  'Henk van de Kamer',
  793.     2,  'Mark Gamble',
  794.     46, 'Redactie',
  795.     23, 'Jennifer Abdoelhafiezkhan',
  796.     12, 'Berend Dekens',
  797.     13, 'Daan Steenmeijer',
  798.     22, 'Jan Roza',
  799.     38, 'Yves Sucaet',
  800.     11, 'Benny Lootens',
  801.     48, 'cdrom',
  802.     4,  'Rick van Eeden',
  803.     49, 'Ingeborg Claessens',
  804.     50, 'Gidy Blom',
  805.     51, 'Fred van Bergen',
  806.     35, 'Roy Munsterman',
  807.     37, 'Toon van Daele',
  808.     28, 'Martijn de Visser',
  809.     42, 'Arnout Terpstra',
  810.     25, 'Kevin Levie',
  811.     16, 'Douwe Osinga',
  812.     40, 'Hans-Peter Harmsen',
  813.     27, 'Mark Monster',
  814.     33, 'Robbert Wethmar',
  815.     31, 'Natasja Capelle',
  816.     52, 'Frank Meurs',
  817.     53, 'Tamara Vlot',
  818.     54, 'RenΘ Rikkers',
  819.     55, 'Bert Bakker',
  820.     56, 'Bas Degelink'
  821.     );
  822.  
  823.     // sluit eventueel geopende mailvensters
  824.     if (mailVenster != null && mailVenster.open)
  825.         mailVenster.close();
  826.  
  827.     for (auteurTeller = 0; auteurTeller <= auteurs.length - 1; auteurTeller += 2)
  828.     {
  829.         if (auteurs[auteurTeller + 1] == naam)
  830.             auteurID = auteurTeller;
  831.     }
  832.     if (auteurID == null)
  833.         auteurID = 8; // auteur is niet gevonden: mail naar de redactie
  834.  
  835.     strMail = '<html><head>';
  836.     strMail += '<title>Mailen met PC-Active</title>';
  837.     strMail += '<style>';
  838.     strMail += 'body { font-family: verdana, arial, helvetica, sans-serif; font-size:10pt; }';
  839.     strMail += '.titel { font-size: 12pt; font-weight: bold; }';
  840.     strMail += 'select, input, textarea { background-color: #dedede; }';
  841.     strMail += 'p { margin-top: 10px; margin-bottom: 0px; }';
  842.     strMail += '</style>';
  843.     strMail += '</head><body onload="focus()" bgcolor="#f0f0f0" background="../images/popupback.gif">';
  844.     strMail += '<span class=titel>Mailen met PC-Active</span>';
  845.     strMail += '<br>';
  846.     strMail += 'Voer hieronder uw reactie in. Zorg ervoor dat u uw e-mailadres correct invult, want alleen dan kunt u een reactie terug krijgen!';
  847.     strMail += '<p>';
  848.  
  849.     strMail += '<form name="reactie" action="http://www.pcactive.nl/reactie/vancd.asp" method="POST">';
  850.  
  851.     onderdeel = location.href.substr(location.href.toLowerCase().indexOf('intface') + 8);
  852.  
  853.     strMail += '<input type=hidden name=pagina value="' + onderdeel + '">';
  854.  
  855.     strMail += '<b>Verstuur bericht aan</b><br>';
  856.     strMail += '<select name=auteur onchange="document.reactie.email.focus()">';
  857.     strMail += '    <option value="">- selecteer -</option>';
  858.                     for (auteurTeller = 0; auteurTeller <= auteurs.length - 1; auteurTeller += 2)
  859.                     {
  860.                         strMail += '<option value=' + auteurs[auteurTeller];
  861.                         if (auteurID == auteurTeller)
  862.                         {
  863.                             strMail += ' selected';
  864.                         }
  865.                         if (auteurs[auteurTeller] == 'cdrom')
  866.                         {
  867.                             strMail += '>cdrom redactie</option>';
  868.                         }
  869.  
  870.                         strMail += '>' + auteurs[auteurTeller + 1] + '</option>';
  871.                     }
  872.     strMail += '</select>';
  873.     strMail += '<p>';
  874.  
  875.     strMail += '<b>PC-Active maand/jaar/artikel</b><br>';
  876.     strMail += '<input type="text" name="uitgave" size=40 value="' + getUitgave(pcaNummer) + '">';
  877.     strMail += '<p>';
  878.  
  879.     strMail += '<b>Mijn e-mailadres</b><br>';
  880.     strMail += '<input type="text" name="email" size=40 maxlength=60>';
  881.     strMail += '<p>';
  882.  
  883.     strMail += '<b>Mijn naam</b><br>';
  884.     strMail += '<input type="text" name="naam" size=40 maxlength=60>';
  885.     strMail += '<p>';
  886.  
  887.     strMail += '<b>Mijn reactie</b><br>';
  888.     strMail += '<textarea name="reactie" cols=46 rows=6></textarea>';
  889.     strMail += '<p>';
  890.  
  891.     strMail += '<input type=submit value="verstuur via internet"> ';
  892.     strMail += '<input type=button value="annuleren" onclick="self.close()">';
  893.     strMail += '</form>';
  894.  
  895.     mailVenster = window.open("", "Informatie", "width=460,height=460,"+PositieY+"=" + PCAinterfaceY + ","+PositieX+"=" + PCAinterfaceX + PopupWeergave);
  896.  
  897.     mailVenster.document.write(strMail);
  898.     mailVenster.document.close();
  899. }
  900.  
  901. function setAuteur(auteur)
  902. {
  903.     document.write ('<a href="javascript:mail(\'' + auteur + '\')" class=weblink><b>' + auteur + '</b></a>');
  904. }
  905.  
  906. //toegevoegd 23-06-2007
  907.  
  908. function installeerURL(programma, linktekst)
  909. {
  910. if (ebook == true) {
  911.     PreURL     =  "#DO#OPEN#$DRV$\\";
  912.     instURL  =  "<a href=\"" + PreURL + programma + "\" class=weblink>" + linktekst + "</a>";
  913.     }
  914.     else
  915.     {
  916.     PreURL     =  "..\\..\\..\\";
  917.     instURL  =  "<a href=\"" + PreURL + programma + "\" class=weblink>" + linktekst + "</a>";
  918.     }
  919. dw(instURL);
  920. }
  921.  
  922. function installeerKnop(programma)
  923. {
  924. if (ebook == true) {
  925.     PreURL         = "#DO#OPEN#$DRV$\\";
  926.     instString  = "<a href=\"" + PreURL + programma + "\" ";
  927.     instString += "onMouseOver=\"rollIn('img1'); return true\" ";
  928.     instString += "onMouseOut=\"rollOut('img1'); return true\">";
  929.     instString += "<img src=\"../../media/images/sw_inst.gif\" border=0 alt=\"\" name=\"img1\" width=95 height=11>";
  930.     instString += "</a>";
  931.     }
  932.     else
  933.     {
  934.     PreURL         = "..\\..\\..\\";
  935.     instString  = "<a href=\"" + PreURL + programma + "\" ";
  936.     instString += "onMouseOver=\"rollIn('img1'); return true\" ";
  937.     instString += "onMouseOut=\"rollOut('img1'); return true\">";
  938.     instString += "<img src=\"../../media/images/sw_inst.gif\" border=0 alt=\"\" name=\"img1\" width=95 height=11>";
  939.     instString += "</a>";
  940.     }
  941. dw(instString);
  942. }
  943.  
  944. function sluitKnop()
  945. {
  946. if (ebook == true) {
  947.     KnopString  = "<a href=\"#DO#EXIT#\" onMouseOver=\"rollIn('img3'); return true\" ";
  948.     KnopString += "onMouseOut=\"rollOut('img3'); return true\">";
  949.     KnopString += "<img src=\"../../media/images/sluit_software.gif\" border=0 alt=\"\" ";
  950.     KnopString += "name=\"img3\" width=95 height=11></a>";    
  951.     }
  952.     else
  953.     {
  954.     KnopString  = "<a href=\"javascript:top.window.close()\" onMouseOver=\"rollIn('img3'); return true\" ";
  955.     KnopString += "onMouseOut=\"rollOut('img3'); return true\">";
  956.     KnopString += "<img src=\"../../media/images/sluit_software.gif\" border=0 alt=\"\" ";
  957.     KnopString += "name=\"img3\" width=95 height=11></a>";
  958.     }
  959. dw (KnopString);
  960. }