home *** CD-ROM | disk | FTP | other *** search
/ PC Active 2001 March / PCA1303.BIN / intface / interactie.js < prev    next >
Encoding:
Text File  |  2001-01-24  |  12.4 KB  |  385 lines

  1. // debugging... functie onderaan pagina
  2. debug = false;
  3.  
  4. /*
  5. versie 1.5 dHTML: Andre van Groenestein
  6. versie 2.0: algemene scripts toegevoegd (popupVenster)
  7. versie 2.5: idem (rollovers)
  8. 6 - 9 - 00 functies dw en ldw: write vervangen door writeln
  9. versie 3.0: compatibiteit met DOM tbv Netscape 6
  10. */
  11.  
  12. // Nummer van de uitgave
  13. var pcaNummer = 1303;
  14.  
  15. var isIE     = (navigator.appName.indexOf('Microsoft')   != -1);
  16. var isIE4    = (navigator.appVersion.indexOf('MSIE 4')   != -1);
  17. var isIE55   = (navigator.appVersion.indexOf('MSIE 5.5') != -1);
  18. var Netscape = (navigator.appName == 'Netscape');
  19.  
  20. var dom1, dom2; dom1 = dom2 = false;
  21. if (document.getElementById)
  22. {    dom1 = dom2 = true;
  23. }
  24.  
  25. // ***  Begin dHTML vensters  *** //
  26. LAYERS    = (isIE) ? "document.all"             : "document.layers";
  27. HIDDEN    = (isIE) ? "hidden"                   : "hide";
  28. VISIBLE   = (isIE || dom1) ? "visible"          : "show";
  29. ZICHTBAAR = (isIE || dom1) ? "style.visibility" : "visibility";
  30.  
  31. // DOM controle (NS => 5.0, IE => 5.0)
  32. if (dom1)
  33. {    LAYERS = document.getElementById;
  34. }
  35.  
  36. //if (document.getElementsByTagName("*")) // geeft foutmelding in IE4...
  37. //{    LAYERS = document.getElementById;
  38. //}
  39.  
  40.  
  41. // breedte van het huidige venster
  42. function getVensterBreedte()
  43. {        if (debug)
  44.         {    dbg_functie     = arguments.callee.toString();
  45.             eind            = dbg_functie.indexOf("{") - 1;
  46.             dbg_functieNaam = dbg_functie.substr(0, eind);
  47.             dbg('<b>' + dbg_functieNaam + '</b>')
  48.             for (var i = 0; i < arguments.length; i++)
  49.             {    dbg('<br>   argument ' + i + ': ' + arguments[i])
  50.             }
  51.             dbg('<p>');
  52.         }
  53.  
  54.     if (isIE) return document.body.clientWidth;
  55.     else      return window.innerWidth;
  56. }
  57.  
  58. // hoogte van het huidige venster
  59. function getVensterHoogte()
  60. {        if (debug)
  61.         {    dbg_functie     = arguments.callee.toString();
  62.             eind            = dbg_functie.indexOf("{") - 1;
  63.             dbg_functieNaam = dbg_functie.substr(0, eind);
  64.             dbg('<b>' + dbg_functieNaam + '</b>')
  65.             for (var i = 0; i < arguments.length; i++)
  66.             {    dbg('<br>   argument ' + i + ': ' + arguments[i])
  67.             }
  68.             dbg('<p>');
  69.         }
  70.  
  71.     if (isIE) return document.body.clientHeight;
  72.     else      return window.innerHeight;
  73. }
  74.  
  75. // breedte van het huidige object
  76. function getObjectBreedte(obj)
  77. {        if (debug)
  78.         {    dbg_functie     = arguments.callee.toString();
  79.             eind            = dbg_functie.indexOf("{") - 1;
  80.             dbg_functieNaam = dbg_functie.substr(0, eind);
  81.             dbg('<b>' + dbg_functieNaam + '</b>')
  82.             for (var i = 0; i < arguments.length; i++)
  83.             {    dbg('<br>   argument ' + i + ': ' + arguments[i])
  84.             }
  85.             dbg('<p>');
  86.         }
  87.  
  88.     if (dom1 && !isIE) return parseInt(obj.style.width);
  89.     else if (isIE) return obj.clientWidth + 2; // 2 bij optellen, want width klopt niet...?
  90.     else      return obj.clip.width + 2;  // heeft mogelijk met de padding te maken!
  91. }
  92.  
  93. // lengte van het huidige object
  94. function getObjectHoogte(obj)
  95. {        if (debug)
  96.         {    dbg_functie     = arguments.callee.toString();
  97.             eind            = dbg_functie.indexOf("{") - 1;
  98.             dbg_functieNaam = dbg_functie.substr(0, eind);
  99.             dbg('<b>' + dbg_functieNaam + '</b>')
  100.             for (var i = 0; i < arguments.length; i++)
  101.             {    dbg('<br>   argument ' + i + ': ' + arguments[i])
  102.             }
  103.             dbg('<p>');
  104.         }
  105.  
  106.     if (dom1 && !isIE) return parseInt(obj.style.height);
  107.     else if (isIE) return obj.clientHeight + 2; // 2 bij optellen, want height klopt niet...?
  108.     else      return obj.clip.height + 2;  // heeft mogelijk met de padding te maken!
  109. }
  110.  
  111. // plaats object op positie x, y
  112. function setPositie(obj, x, y)
  113. {        if (debug)
  114.         {    dbg_functie     = arguments.callee.toString();
  115.             eind            = dbg_functie.indexOf("{") - 1;
  116.             dbg_functieNaam = dbg_functie.substr(0, eind);
  117.             dbg('<b>' + dbg_functieNaam + '</b>')
  118.             for (var i = 0; i < arguments.length; i++)
  119.             {    dbg('<br>   argument ' + i + ': ' + arguments[i])
  120.             }
  121.             dbg('<p>');
  122.         }
  123.  
  124.     if(dom2)
  125.     {    obj.style.left = x + 'px';
  126.         obj.style.top  = y + 'px';
  127.     }
  128.     else if (Netscape) obj.moveTo(x, y);
  129.     else
  130.     {    obj.style.pixelLeft = x;
  131.         obj.style.pixelTop  = y;
  132.     }
  133. }
  134.  
  135. function getPopupNotatie(popup)
  136. {    if (dom1)
  137.         return "(" + popup + ").";
  138.     else
  139.         return "['" + popup + "'].";
  140. }
  141.  
  142. function sluitPopup(nummer)
  143. {        if (debug)
  144.         {    dbg_functie     = arguments.callee.toString();
  145.             eind            = dbg_functie.indexOf("{") - 1;
  146.             dbg_functieNaam = dbg_functie.substr(0, eind);
  147.             dbg('<b>' + dbg_functieNaam + '</b>')
  148.             for (var i = 0; i < arguments.length; i++)
  149.             {    dbg('<br>   argument ' + i + ': ' + arguments[i])
  150.             }
  151.             dbg('<p>');
  152.         }
  153.  
  154.     var popup = "popup" + nummer;
  155.     if (dom1)
  156.         document.getElementById(popup).style.visibility = 'hidden';
  157.     else
  158.         eval(LAYERS + "['" + popup + "']." + ZICHTBAAR + "= '" + HIDDEN + "'");
  159. }
  160.  
  161. function toonPopup(nummer)
  162. {        if (debug)
  163.         {    dbg_functie     = arguments.callee.toString();
  164.             eind            = dbg_functie.indexOf("{") - 1;
  165.             dbg_functieNaam = dbg_functie.substr(0, eind);
  166.             dbg('<b>' + dbg_functieNaam + '</b>')
  167.             for (var i = 0; i < arguments.length; i++)
  168.             {    dbg('<br>   argument ' + i + ': ' + arguments[i])
  169.             }
  170.             dbg('<p>');
  171.         }
  172.     var popup = "popup" + nummer;
  173. //    popup = getPopupNotatie(popup);
  174.     if (dom1)
  175.         document.getElementById(popup).style.visibility = 'visible';
  176.     else
  177.         eval(LAYERS + "['" + popup + "']." + ZICHTBAAR + "= '" + VISIBLE + "'");
  178. }
  179.  
  180. // open de popup op de plek waar de muis zich bevond tijdens de aanroep
  181. function openPopup(nummer)
  182. {        dbg_functie = arguments.callee.toString();
  183.         eind = dbg_functie.indexOf("{") - 1;
  184.         dbg_functieNaam = dbg_functie.substr(0, eind);
  185.         dbg('<b>' + dbg_functieNaam + '</b>')
  186.         for (var i = 0; i < arguments.length; i++)
  187.         {    dbg('<br>   argument ' + i + ': ' + arguments[i])
  188.         }
  189.         dbg('<p>')
  190.     var popup = "popup" + nummer;
  191.     var huidigObject
  192.     if (dom1)
  193.         huidigObject = document.getElementById(popup);
  194.     else
  195.         huidigObject = eval(LAYERS + "['" + popup + "']");
  196.     // X en Y positie van de muis wordt voor IE hieronder bepaald
  197.     // voor NS wordt deze in de functie muisNS() bepaald, die al
  198.     // is aangeroepen.
  199.     if (isIE) X = eval(window.event.clientX + 8);
  200.     if (isIE) Y = eval(window.event.clientY + 17);
  201.     var objectBreedte = getObjectBreedte(huidigObject);
  202.     var objectHoogte  = getObjectHoogte(huidigObject);
  203.     // als de popup buiten beeld valt, moet de popup verplaatst worden
  204.  
  205.     if (objectBreedte > (getVensterBreedte() - X) )
  206.         X = getVensterBreedte() - objectBreedte - 5;
  207.     if (objectHoogte > (getVensterHoogte()  - Y) )
  208.         Y = getVensterHoogte() - objectHoogte - 5;
  209.     setPositie(huidigObject, X, Y);
  210.     toonPopup(nummer);
  211. }
  212.  
  213. // toont een andere image bij mouseOver. Toont de originele bij mouseOut.
  214. var actief = false;
  215. function muis(nummer)
  216. {    if (actief) document["img" + nummer].src = eval("img" + nummer + "off.src");
  217.     else        document["img" + nummer].src = eval("img" + nummer + "on.src");
  218.     actief = (!actief);
  219. }
  220.  
  221. // bepaal X en Y coordinaat van de muis en roep vervolgens de originele functie aan
  222. function muisNS(evt)
  223. {    X = eval(evt.pageX + 8);
  224.     Y = eval(evt.pageY + 17);
  225.     routeEvent(evt);
  226. }
  227.  
  228.  
  229. // ***  Eind dHTML vensters  *** //
  230.  
  231.  
  232. // coordinaten van de linkerbovenhoek van de interface
  233. var PositieMin = top.location.hash.indexOf("-");
  234. PCAinterfaceX  = top.location.hash.substring(1, PositieMin);
  235. PCAinterfaceY  = top.location.hash.substring(PositieMin + 1);
  236.  
  237. //PCAinterfaceX = (screen.availWidth - 640) / 2;
  238. //PCAinterfaceY = (screen.availHeight - 480) / 2;
  239.  
  240.  
  241. // algemene weergave van de popups
  242. var PopupWeergave       = "resizable=no,status=no,scrollbars=yes";
  243. var PopupWeergaveScroll = "resizable=no,status=no,scrollbars=yes";
  244.  
  245. PositieX = (isIE) ? "left" : "screenX";
  246. PositieY = (isIE) ? "top"  : "screenY";
  247.  
  248. // definitie van de vensternaam voor popups
  249. var lokaalVenster = null;
  250.  
  251. // sluit alle openstaande html popups en verwijder selecties rondom knoppen
  252. function sluitLokaleVensters()
  253. {    if (lokaalVenster != null && lokaalVenster.open) lokaalVenster.close();
  254. }
  255.  
  256. function scriptFout()
  257. {    var geenMelding = false;
  258.     var foutString  = 'Er is iets foutgegaan.\n'
  259.     foutString += 'Als u deze problemen vaker hebt of de cd-rom niet\n'
  260.     foutString += 'goed kan gebruiken, mail dan onderstaande gegevens\n'
  261.     foutString += 'naar cdbug@pc-active.nl.\n'
  262.     if (arguments[0].indexOf('RPC') != -1) // remote procedure call: venster is al gesloten, maar IE heeft dat nog niet door...
  263.         geenMelding = true;
  264.     if (!geenMelding)
  265.     {    fout = '\n';
  266.         fout += '\nRegel: ' + arguments[2];
  267.         fout += '\nFout: ' +  arguments[0];
  268.         fout += '\nPagina: ' + arguments[1];
  269.         alert(foutString + fout);
  270.     }
  271.     return true;
  272. }
  273.  
  274. window.onfocus = sluitLokaleVensters;
  275. window.onerror = scriptFout;
  276.  
  277.  
  278.  
  279. // ***  Fontgrootte aanpassen  *** //
  280. fontGrootte = 10;
  281.  
  282. function setFontGrootte(dx)
  283. {    for (var i = 0; i < document.styleSheets.length; i++)
  284.     {    var styleSheet = document.styleSheets[i];
  285.         for (var j = 0; j < styleSheet.rules.length; j++)
  286.         {    var rule = styleSheet.rules[j];
  287.             if ("" + rule.style.fontSize != "null")
  288.             {    fontGrootte = parseInt(rule.style.fontSize, 10) + dx;
  289.                 if (fontGrootte < 1)
  290.                     fontGrootte = 1;
  291.                 rule.style.fontSize = fontGrootte + "pt";
  292.             }
  293.         }
  294.     }
  295. }
  296.  
  297.  
  298. // ***  Begin standaardfuncties  *** //
  299.  
  300. function niets() { void(parent.menu.focus()); }
  301.  
  302. function dw(string) { document.writeln(string); }
  303.  
  304. function ldw(string) { lokaalVenster.document.writeln(string); }
  305.  
  306. // images van de 4 hoofdschermen
  307. imgxon = new Image(); imgxon.src = "../media/images/menu_hm1.gif";
  308. imgaon = new Image(); imgaon.src = "../media/images/menu_sw1.gif";
  309. imgbon = new Image(); imgbon.src = "../media/images/menu_ol1.gif";
  310. imgcon = new Image(); imgcon.src = "../media/images/menu_pc1.gif";
  311. imgdon = new Image(); imgdon.src = "../media/images/menu_cd1.gif";
  312.  
  313. imgxoff = new Image(); imgxoff.src = "../media/images/menu_hm.gif";
  314. imgaoff = new Image(); imgaoff.src = "../media/images/menu_sw.gif";
  315. imgboff = new Image(); imgboff.src = "../media/images/menu_ol.gif";
  316. imgcoff = new Image(); imgcoff.src = "../media/images/menu_pc.gif";
  317. imgdoff = new Image(); imgdoff.src = "../media/images/menu_cd.gif";
  318.   
  319. menux = new Image(); menux.src = "../media/images/hfd_hm1.gif"
  320. menua = new Image(); menua.src = "../media/images/hfd_sw.gif"
  321. menub = new Image(); menub.src = "../media/images/hfd_ol.gif"
  322. menuc = new Image(); menuc.src = "../media/images/hfd_pc.gif"
  323. menud = new Image(); menud.src = "../media/images/hfd_cd.gif"
  324.  
  325. // image functies van de 4 hoofdschermen
  326. function rollIn(imgName)
  327. { if (KnoppenGeladen) document[imgName].src = eval(imgName + "on.src"); }
  328.  
  329. function rollOut(imgName)
  330. { document[imgName].src = eval(imgName + "off.src"); }
  331.  
  332. function DualImageChange(imageID, imageName, imageID2, imageName2)
  333. {        if (debug)
  334.         {    dbg_functie     = arguments.callee.toString();
  335.             eind            = dbg_functie.indexOf("{") - 1;
  336.             dbg_functieNaam = dbg_functie.substr(0, eind);
  337.             dbg('<b>' + dbg_functieNaam + '</b>')
  338.             for (var i = 0; i < arguments.length; i++)
  339.             {    dbg('<br>   argument ' + i + ': ' + arguments[i])
  340.             }
  341.             dbg('<p>');
  342.         }    if (KnoppenGeladen)
  343.     {    document.images[imageID].src = eval(imageName + ".src");
  344.         document.images[imageID2].src = eval(imageName2 + ".src");
  345.     }
  346. }
  347.  
  348. // debugging init
  349. if (debug)
  350. {    var geopend = true;
  351.     var debugTimeoutID;
  352.     debugWeergave = "top=0,left=0,"+"resizable=yes,status=no,scrollbars=yes";
  353.     schermBreedte = 380; //(screen.availWidth - 640) / 2;
  354.     schermHoogte  = screen.availHeight - 28; // 28 voor de taakbalk :-(
  355.     debugVenster  = window.open("", "Debugwindow", "width=" + schermBreedte + ",height=" + schermHoogte + debugWeergave);
  356.     debugVenster.document.write("<html><body bgcolor=white><font face=helvetica size=2>")
  357.     debugVenster.document.write('<p><b>Debugscript ingeladen vanuit:</b><br>');
  358.     debugVenster.document.write(location.href + '<br>');
  359.     focus();
  360. }
  361. function dbg(string)
  362. {    if (debug)
  363.     {    if (!geopend)
  364.         {    debugVenster.document.open();
  365.             debugVenster.document.write("<html><body bgcolor=white><font face=helvetica size=2>")
  366.             geopend = true;
  367.         }
  368.         debugVenster.document.write(string)
  369.         if (debugTimeoutID)
  370.             debugVenster.clearTimeout(debugTimeoutID);
  371.         debugTimeoutID = setTimeout("debugVenster.document.close(); geopend = false;", 2500);
  372.     }
  373. }
  374. // eind debugging init
  375.  
  376.  
  377.  
  378. // vang mouseover en mouseouts af om X en Y coordinaat te bepalen
  379. if (Netscape)
  380. {    document.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
  381.     document.onmouseover = muisNS;
  382.     document.onmouseout  = muisNS;
  383. //    window.onresize      = opnieuwLaden;
  384. }
  385.