home *** CD-ROM | disk | FTP | other *** search
/ PC Active 2005 July/August / PCA1707.ISO / intface / interactie.js < prev    next >
Encoding:
Text File  |  2005-05-26  |  26.7 KB  |  845 lines

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