function getCookie(name) { var dc = document.cookie; var prefix = name + "="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return null; } else begin += 2; var end = document.cookie.indexOf(";", begin); if (end == -1) end = dc.length; return unescape(dc.substring(begin + prefix.length, end)); } var req; function loadXMLDoc(url) { // branch for native XMLHttpRequest object if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(null); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(); } } } function processReqChange() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { cats = req.responseXML.documentElement; msg = cats.getElementsByTagName('msg')[0].firstChild.data; taxid = cats.getElementsByTagName('taxid')[0].firstChild.data; // Change HTML mdiv = document.getElementById('ci' + taxid) mdiv.innerHTML = msg; } } } var lastpop = 0; var lastpop2 = 0; function findPosition( oLink ) { if( oLink.offsetParent ) { for( var posX = 0, posY = 0; oLink.offsetParent; oLink = oLink.offsetParent ) { posX += oLink.offsetLeft; posY += oLink.offsetTop; } return [ posX, posY ]; } else { return [ oLink.x, oLink.y ]; } } function CatPop(taxid, e, offx, offy, l, right) { if(l == 2) { if(lastpop) closePop(lastpop); lastpop = taxid } else if(l == 3) { if(lastpop2) closePop(lastpop2) lastpop2 = taxid } if (window.event && window.event.srcElement) { lnk = window.event.srcElement } else if (e && e.target) { lnk = e.target } pos = findPosition(lnk); xpos = pos[0]; ypos = pos[1]; fr = document.getElementById('frame'); fpos = findPosition(fr); xfpos = fpos[0]; yfpos = fpos[1]; pop = document.getElementById('c' + taxid); if(right) { pop.style.top = (ypos - yfpos + offy) + 'px'; pop.style.left = (xpos - xfpos + offx)+ 'px'; } else { pop.style.top = (ypos - yfpos + offy) + 'px'; if(offx == 0) pop.style.left = abs(xpos - xfpos - offx - 100)+ 'px'; else pop.style.left = abs(xpos - xfpos + offx - 300) + 'px'; } pop.style.display = 'block'; // Don't refetch if (!pop.className.match(/popped/)) { pop.className += ' popped'; st_popup(taxid) } } function closePop(taxid) { d = document.getElementById('c' + taxid) d.style.display = 'none'; if(taxid == lastpop) { if(lastpop2) { d = document.getElementById('c' + lastpop2) d.style.display = 'none'; lastpop2 = 0 } d = document.getElementById('c' + lastpop) d.style.display = 'none'; lastpop = 0 } else if(taxid == lastpop2) { d = document.getElementById('c' + lastpop2) d.style.display = 'none'; lastpop2 = 0 } } function st_popup(taxid) { loadXMLDoc('http://www.pcworld.idg.com.au//th.php?taxid=' + taxid); } function abs(n) { if(n < 0) return -n; return n; } // Types // 1 = c , categories // 2 = d , manufacturers // 3 = b , buying guides var type; var lastpopType; var lastpop2Type; var menuid = new Array(); menuid[1] = "c"; menuid[2] = "d"; menuid[3] = "b"; function MenuPop(id, e, offx, offy, l, right, t) { type = menuid[t] if(l == 2) { if(lastpop) closePopMenu(lastpop,t); lastpop = id lastpopType = t } else if(l == 3) { if(lastpop2) closePopMenu(lastpop2,t) lastpop2 = id lastpop2Type = t } if (window.event && window.event.srcElement) { lnk = window.event.srcElement } else if (e && e.target) { lnk = e.target } pos = findPosition(lnk); xpos = pos[0]; ypos = pos[1]; fr = document.getElementById('frame'); fpos = findPosition(fr); xfpos = fpos[0]; yfpos = fpos[1]; pop = document.getElementById(type + id); if(right) { pop.style.top = (ypos - yfpos + offy) + 'px'; pop.style.left = (xpos - xfpos + offx)+ 'px'; } else { pop.style.top = (ypos - yfpos + offy) + 'px'; if(offx == 0) pop.style.left = abs(xpos - xfpos - offx - 100)+ 'px'; else pop.style.left = abs(xpos - xfpos + offx - 300) + 'px'; } pop.style.display = 'block'; // Don't refetch if (!pop.className.match(/popped/)) { pop.className += ' popped'; st_menupopup(id) } } function st_menupopup(id) { if(type == "d") loadXMLDocMenu('http://www.pcworld.idg.com.au//thmanu.php?id=' + id); else if(type == "c") loadXMLDocMenu('http://www.pcworld.idg.com.au//th.php?taxid=' + id); else if(type == "b") loadXMLDocMenu('http://www.pcworld.idg.com.au//thmanu.php?id=' + id); } function loadXMLDocMenu(url) { // branch for native XMLHttpRequest object if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange = processReqChangeMenu; req.open("GET", url, true); req.send(null); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processReqChangeMenu; req.open("GET", url, true); req.send(); } } } function processReqChangeMenu() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { cats = req.responseXML.documentElement; msg = cats.getElementsByTagName('msg')[0].firstChild.data; id = cats.getElementsByTagName('id')[0].firstChild.data; // Change HTML mdiv = document.getElementById(type + 'i' + id) mdiv.innerHTML = msg; } } } function closePopMenu(id,t) { typePop = menuid[lastpopType]; typePop2 = menuid[lastpop2Type]; type = menuid[t]; d = document.getElementById(type + id) d.style.display = 'none'; if(id == lastpop) { if(lastpop2) { d = document.getElementById(typePop2 + lastpop2) d.style.display = 'none'; lastpop2 = 0 } d = document.getElementById(typePop + lastpop) d.style.display = 'none'; lastpop = 0 } else if(id == lastpop2) { d = document.getElementById(typePop2 + lastpop2) d.style.display = 'none'; lastpop2 = 0 } } /*'*/ function fix_expad_hidesel() { selectbox = document.getElementById('search_select'); selectbox.style.visibility= 'hidden'; } function fix_expad_showsel() { selectbox = document.getElementById('search_select'); selectbox.style.visibility= 'visible'; }