//-------------------------------------------------------------------------------------------------------- // cpu / browser speed testing //-------------------------------------------------------------------------------------------------------- var cpubrowserbenchmark = function(count) { var date1 = new Date() var start = date1.getTime() for (var i=1; i<=count; i++) {} date1 = new Date() var finish = date1.getTime() var speedmulti = Math.round(((finish-start)/1000)/ 0.084); // set minimum multip if (speedmulti < 1){ speedmulti = 1; } return speedmulti; } //-------------------------------------------------------------------------------------------------------- // prevent right click //-------------------------------------------------------------------------------------------------------- var zaneray = document; var isNS=(navigator.appName=="Netscape")? 1 : 0; if(navigator.appName=="Netscape"){ zaneray.captureEvents(Event.MOUSEDOWN||Event.MOUSEUP); } function nothing(){ return false; } function nothingm(e){ var myevent=(isNS)? e : event; var eventbutton=(isNS)? myevent.which : myevent.button; if((eventbutton==2)||(eventbutton==3)){ return false; } } zaneray.oncontextmenu = nothing; zaneray.onmousedown = nothingm; zaneray.onmouseup = nothingm; var adjustlivezindex = function(){ // do nothing //mydivs = document.getElementsByTagName('div'); //setTimeout(function(){adjustlivezindexnow();}, 2000); } var adjustlivezindexnow = function(){ mydivs[0].style.zIndex = '1900'; } //-------------------------------------------------------------------------------------------------------- // preloading //-------------------------------------------------------------------------------------------------------- // small shadow background var shadowsmall = new Image(); shadowsmall.src = '//images.competitivecyclist.com/images/global/shadow_background_color_chips.png'; // medium shadow background var shadowmedium = new Image(); shadowmedium.src = '//images.competitivecyclist.com/images/global/shadow_background_size_chart.png'; // large shadow background var shadowlarge = new Image(); shadowlarge.src = '//images.competitivecyclist.com/images/global/shadow_background_policy.png'; // xlarge shadow background var shadowxlarge = new Image(); shadowxlarge.src = '//images.competitivecyclist.com/images/global/shadow_background.png'; var loadinganim = new Image(); loadinganim.src = '//images.competitivecyclist.com/images/global/loading.gif'; function loadedimage(){ alert('loaded'); } var pointerImgs = new Array; var dragimageImgs = new Array; //-------------------------------------------------------------------------------------------------------- // ZZoomDrag v. 0.2 // Copyright 2008 by Zaneray Inc. // Written by: Flori Seeger //-------------------------------------------------------------------------------------------------------- // globals var xratio = 0; var yratio = 0; var xoff = 0; var yoff = 0; var totaloffsetleft = 0; var totaloffsettop = 0; var disablex = false; var disabley = false; var ZZoomDragInit = false; var imageshowing = 0; var dostrip = false; var pointerdone = false; var dragdone = false; var pointerimage = new Image; var dragimage = new Image; function pointerimgdone(){ pointerdone = true; } function dragimgdone(){ dragdone = true; } function reportImageLoadError(){ var pars = "PAGE=REPORT_BROKEN_IMAGE"; pars += "&pointerimage=" + pointerImgs[imageshowing]; pars += "&dragimage=" + dragimageImgs[imageshowing]; pars += "&r=" + Math.random(); var url = "/za/CCM"; var myAjax = new Ajax.Request( url, { method: 'post', parameters: pars, onComplete: reportedImageLoadError}); } function reportedImageLoadError(){ // do nothing } var firstrunzzd = true var ZZoomDrag = function(){ // start preloading images, set flag if (firstrunzzd == true){ if (pointerimage.complete == true){ pointerimgdone; } pointerimage.onload = pointerimgdone; pointerimage.onerror = reportImageLoadError; pointerimage.src = pointerImgs[imageshowing]; if (dragimage.complete == true){ dragimgdone; } dragimage.onload = dragimgdone; dragimage.onerror = reportImageLoadError; dragimage.src = dragimageImgs[imageshowing]; firstrunzzd = false; } if (pointerdone == true && dragdone == true){ clearTimeout(checkloading); $('pointerimgcontainer').innerHTML = ''; var pointerimgmargintop = ($('pointerimgcontainer').offsetHeight - $('pointerimg').offsetHeight) / 2; $('pointerimg').style.marginTop = pointerimgmargintop + 'px'; $('bigbox').innerHTML = ''; zfade ($('pointerimg'), 0, 100, 500, true); zfade ($('dragimage'), 0, 100, 500, true); $('dragimage').style.margin = '0px'; var smallx = $('pointerimg').offsetWidth; var smally = $('pointerimg').offsetHeight; var bigx = $('dragimage').offsetWidth; var bigy = $('dragimage').offsetHeight; var bigboxx = $('bigbox').offsetWidth; var bigboxy = $('bigbox').offsetHeight; // flag drag image < drag container // disable panning //builddebug (bigx +"/"+ bigboxx); if (bigx < bigboxx){ disablex = true; $('dragimage').style.marginLeft = (bigboxx - bigx) / 2 + "px"; } else { disablex = false; } if (bigy < bigboxy){ disabley = true; //builddebug((bigboxy - bigy) / 2); $('dragimage').style.marginTop = (bigboxy - bigy) / 2 + "px"; } else { disabley = false; } xratio = bigx / smallx; yratio = bigy / smally; xoff = bigboxx / 2; yoff = bigboxy / 2; totaloffsetleft = 0; totaloffsettop = 0; imageshowing = 0; pointerdone = false; dragdone = false; firstrunzzd = true; var ele = $('pointerimg'); if (ele.offsetParent) { do { totaloffsetleft += ele.offsetLeft; totaloffsettop += ele.offsetTop; } while (ele = ele.offsetParent); } $('pointerimg').onmousemove = ZZoomDragUpdate; } else { var checkloading = setTimeout(function () { ZZoomDrag(); }, 500); } } var ZZoomDragUpdate = function(e) { getmouseposition(e); } var getmouseposition = function(e) { if (!e){ var e = window.event; } if (e){ if (e.pageX || e.pageY){ mousexpos = e.pageX; mouseypos = e.pageY; algor = '[e.pageX]'; } else { if (e.clientX || e.clientY){ mousexpos = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; mouseypos = e.clientY + document.body.scrollTop + document.documentElement.scrollTop; algor = '[e.clientX]'; if (e.pageX || e.pageY) algor += '[e.pageX]'; } } mousexpos = mousexpos - totaloffsetleft - 4; mouseypos = mouseypos - totaloffsettop -4; } //builddebug(disablex +"/"+ disabley); if (disablex == false){ if (Math.round(xoff + (mousexpos * xratio * -1)) <= 0 && Math.round(xoff * -1 + mousexpos * xratio * -1) >= $('dragimage').offsetWidth * -1){ $('dragimage').style.left = Math.round(xoff + (mousexpos * xratio * -1)) + 'px'; } if (Math.round(xoff + (mousexpos * xratio * -1)) > 0){ $('dragimage').style.left = '0px'; } if(Math.round(xoff * -1 + mousexpos * xratio * -1) < $('dragimage').offsetWidth * -1){ $('dragimage').style.left = ($('dragimage').offsetWidth - xoff * 2) * -1 + 'px'; } } if (disabley == false){ if (Math.round(yoff + (mouseypos * yratio * -1)) <= 0&& Math.round(yoff * -1 + mouseypos * yratio * -1) >= $('dragimage').offsetHeight * -1){ $('dragimage').style.top = Math.round(yoff + (mouseypos * yratio * -1)) + 'px'; } if (Math.round(yoff + (mouseypos * yratio * -1)) > 0){ $('dragimage').style.top = '0px'; } if(Math.round(yoff * -1 + mouseypos * yratio * -1) < $('dragimage').offsetHeight * -1){ $('dragimage').style.top = ($('dragimage').offsetHeight - yoff * 2) * -1 + 'px'; } } } var reinitpointerimg = function(){ if ($('pointerimg')){ totaloffsetleft = 0; totaloffsettop = 0; var ele = $('pointerimg'); if (ele.offsetParent) { do { totaloffsetleft += ele.offsetLeft; totaloffsettop += ele.offsetTop; } while (ele = ele.offsetParent); } } } var ZZoomDragNextColor = function (imagetoshow){ // fade out //zfade ($('pointerimg'), 100, 0, 'duration', true); //zfade ($('dragimage'), 100, 0, 'duration', true); $('pointerimg').src = '//images.competitivecyclist.com/images/global/none.gif'; $('dragimage').src = '//images.competitivecyclist.com/images/global/loading.gif'; $('dragimage').style.left = '0px'; $('dragimage').style.top = '0px'; $('dragimage').style.marginLeft = '168px'; $('dragimage').style.marginTop = '170px'; imageshowing = imagetoshow; ZZoomDrag(); } ZZoom = { // init ZZoom init: function(e, object){ document.onmousedown = ZZoom.fixff; document.onmousemove = ZZoom.dragupdate; document.onmouseup = ZZoom.dropupdate; // namespace var to carry object myobject = object; // calculate mouse pointer over drag object offset offsetx = ZZoom.coordinates(e).x - ZZoom.dragobjectoffset().xdragoffset; offsety = ZZoom.coordinates(e).y - ZZoom.dragobjectoffset().ydragoffset; // calculate drag area xmin = myobject.parentNode.offsetWidth - myobject.offsetWidth - 3; ymin = myobject.parentNode.offsetHeight - myobject.offsetHeight - 3; }, // return mouse pointer x y position coordinates: function(e){ if (!e){ var e = window.event; } if (e){ if (e.pageX || e.pageY){ return {x: e.pageX, y: e.pageY}; } else { if (e.clientX || e.clientY){ return { x: e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft, y: e.clientY + document.body.scrollTop + document.documentElement.scrollTop}; } } } }, // get position of drag object dragobjectoffset: function(){ return { xdragoffset: myobject.offsetLeft, ydragoffset: myobject.offsetTop }; }, // move drag object dragupdate: function(e){ xcurrent = ZZoom.coordinates(e).x - offsetx; ycurrent = ZZoom.coordinates(e).y - offsety; if (xcurrent < 1 && xcurrent > xmin){ myobject.style.left = xcurrent + "px"; } if (ycurrent < 1 && ycurrent > ymin){ myobject.style.top = ycurrent + "px"; } return false; }, // drop drag object dropupdate: function(){ document.onmousemove = null; }, // prevent image dragging in FF fixff: function(){ return false; } } //-------------------------------------------------------------------------------------------------------- // EZ-XY Scroll v. 1.5 // Copyright 2008 by Zaneray Inc. // Written by: Flori Seeger //-------------------------------------------------------------------------------------------------------- var scrolldone = true; var scrollstepy = 0; var scrollstepx = 0; var scrollmaxx; var scrollmaxy; var easearrayy= new Array(); easearrayy=[4,16,32,64,128,130,100,64,64,32,16,16,8,7,4,2,2,2,2,2,1,1,1,1,1]; var easearrayx= new Array(); easearrayx=[4,16,32,64,128,130,100,64,64,32,16,16,8,7,4,2,2,2,2,2,1,1,1,1,1]; function easyscroll(direction,user,cnum,vh){ var allowscrolly = false; var allowscrollx = false; if (user == true && scrolldone == true || user == false){ var execute = true; } if (execute == true){ var currenty= parseFloat($('sc' + cnum).offsetTop); var currentx = parseFloat($('sc' + cnum).offsetLeft); if (direction == 'up' || direction == 'left'){ if(eval('current'+ vh + '* -1') + eval('easearray' + vh)[eval('scrollstep' + vh)] < eval('scrollmax' + vh)){ eval('current' + vh + '-=' + eval('easearray' + vh)[eval('scrollstep' + vh)]); eval('allowscroll' + vh + '= true'); } else { if (vh == 'x'){ eval ('current' + vh + '= scrollmax' + vh + '* -1'); $('sc' + cnum).style.left = scrollmaxx * -1 + 'px'; } else { eval ('current' + vh + '= scrollmax' + vh + '* -1'); $('sc' + cnum).style.top = scrollmaxy * -1 + 'px'; } eval('scrollstep' + vh + '= 0'); scrolldone = true; } } if (direction == 'down' || direction == 'right'){ if(eval('current' + vh + '* -1') - eval('easearray' + vh)[eval('scrollstep' + vh)] > 0){ eval('current' + vh + '+=' + eval('easearray' + vh)[eval('scrollstep' + vh)]); eval ('allowscroll' + vh + '= true'); } else { if (vh == 'x'){ eval ('current' + vh + '= 0'); $('sc' + cnum).style.left = '0px'; } else { eval ('current' + vh + '= 0'); $('sc' + cnum).style.top = '0px'; } eval('scrollstep' + vh + '= 0'); scrolldone = true; } } // ------------------------------------------ // show hide arrow elements // ------------------------------------------ // downarrow if (currenty == 0){ $('downarrow' + cnum).style.display = 'none'; } else { $('downarrow' + cnum).style.display = 'block'; } // uparrow if ((currenty * -1) >= scrollmaxy){ $('uparrow' + cnum).style.display = 'none'; } else { $('uparrow' + cnum).style.display = 'block'; } // right arrow if (currentx == 0){ $('rightarrow' + cnum).style.display = 'none'; //$('scs' + cnum).style.marginLeft = '0px'; } else { $('rightarrow' + cnum).style.display = 'block'; //$('scs' + cnum).style.marginLeft = '30px'; } // left arrow if ((currentx * -1) == scrollmaxx){ $('leftarrow' + cnum).style.display = 'none'; } else { $('leftarrow' + cnum).style.display = 'block'; } if (eval('allowscroll' + vh) == true){ if (eval('scrollstep'+vh) < (eval('easearray'+vh).length - 1)){ eval('scrollstep' + vh + '++'); $('sc' + cnum).style.top = currenty + 'px'; $('sc' + cnum).style.left = currentx + 'px'; scrolldone = false; setTimeout(function () { easyscroll(direction,false,cnum,vh); }, 33); } else { eval('scrollstep' + vh + '= 0'); scrolldone = true; } } } } //-------------------------------------------------------------------------------------------------------- // EZ-XY Scroll Init //-------------------------------------------------------------------------------------------------------- var scrolliniter = function(cnum){ if ($('sc' + cnum) && $('scs' + cnum)){ var scsheight = $('scs' + cnum).offsetHeight; var scheight = $('sc' + cnum).offsetHeight; var scswidth = $('scs' + cnum).offsetWidth; var scwidth = $('sc' + cnum).offsetWidth; scrollmaxx = scwidth - scswidth; scrollmaxy = scheight - scsheight; if($('downarrow' + cnum) && $('uparrow' + cnum)){ if (scrollmaxy <= 0){ $('downarrow' + cnum).style.display = 'none'; $('uparrow' + cnum).style.display = 'none'; } else { $('downarrow' + cnum).style.display = 'none'; } } if($('leftarrow' + cnum) && $('rightarrow' + cnum)){ if (scrollmaxx <= 0){ $('leftarrow' + cnum).style.display = 'none'; $('rightarrow' + cnum).style.display = 'none'; } else { $('rightarrow' + cnum).style.display = 'none'; } } } } //-------------------------------------------------------------------------------------------------------- // Z-Fade v. 1.01 // Copyright 2008 by Zaneray Inc. // Written by: Flori Seeger //-------------------------------------------------------------------------------------------------------- var zfade = function (element, start, end, duration, init, callback) { if (init == true){ if (start < end){ element.direction = 'in'; } if (start > end){ element.direction = 'out'; } if (start == end){ clearTimeout(element.fade); return; } element.speed = Math.round(100 / (duration / 33)); element.timeout = Math.round(duration / 100); clearTimeout(element.fade); } element.opacity = start; element.fire = false; switch (element.direction){ case 'in': if ((element.opacity + element.speed) >= 100){ element.fire = false; } else { element.opacity = element.opacity + element.speed; element.fire = true; } break; case 'out': if (element.opacity - element.speed <= 0){ element.fire = false; } else { element.opacity = element.opacity - element.speed; element.fire = true; } break; } element.zopacity = function (opacity,element) { element.style.filter = "alpha(opacity=" + opacity + ")"; element.style.opacity = (opacity / 100); } if (element.fire == true){ element.zopacity (element.opacity, element); element.fade = setTimeout(function () { zfade(element, element.opacity, end, duration,false,callback);}, element.timeout); } else { element.style.filter = ''; clearTimeout(element.fade); } } // stop event bubbling function stopbubble(e){ if (!e) var e = window.event; e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); } //-------------------------------------------------------------------------------------------------------- // Z-Zoom v. 1.50 // Copyright 2008 by Zaneray Inc. // Written by: Flori Seeger //-------------------------------------------------------------------------------------------------------- // todo: // cleanup parent function //-------------------------------------------------------------------------------------------------------- // params: // element = object // xstart = x start size // ystart = y start size // xend = x end size // yend = y end size // ease = name of ease array // callbackfunction = function that called // who = additional element pass // ease arrays and speed calculations var speedmulti = cpubrowserbenchmark(1000000); // start nav menu ease var menuease = new Array; menuease = [200 * speedmulti]; var menueaseapcom = new Array; menueaseapcom = [500 * speedmulti]; var menueasebrand = new Array; menueasebrand = [120 * speedmulti]; // end nav menu ease var demozoomease = new Array; demozoomease = [60 * speedmulti]; var czoomease = new Array; czoomease = [60 * speedmulti]; var sideslideease = new Array; sideslideease = [60 * speedmulti]; var bikezoomease = new Array; bikezoomease = [eval(10 * speedmulti)]; var loopspeed = 35; // function recall after 40ms = 25fps var currentelement; var zzoom = function (element, xstart, ystart, xend, yend, ease, callbackfunction, delay) { if (delay != ''){ element.delaytimer = setTimeout(function () { zzoom(element, xstart, ystart, xend, yend, ease, callbackfunction, ''); }, delay); return; } element.varsetup = false; element.zoom = function (element){ if (element.varsetup == false){ // element position element.xp = element.offsetLeft; element.yp = element.offsetTop; // check if element has border var version = navigator.userAgent; if (element.style.borderWidth.indexOf('1px') > -1){ element.xyoffset = 2; } else { element.xyoffset = 0; } // element width / height element.xw = element.offsetWidth; element.yh = element.offsetHeight; // clear timer if running clearTimeout(element.zoomtimer); // setup end zoom size element.xe = xend; element.ye = yend; // setup current height and width properties if (currentelement == element && element.zoomxdone == false || element.zoomydone == false){ if (xstart < 0){ element.xc = element.offsetWidth * -1; } else { element.xc = element.offsetWidth; } if (ystart < 0){ element.yc = element.offsetHeight * -1; } else { element.yc = element.offsetHeight; } } else { element.xc = xstart; element.yc = ystart; } currentelement = element; // enable zoom functions element.zoomxdone = false; element.zoomydone = false; // run setup only once element.varsetup = true; // reset array counter element.loopcounter = 0; // get total zoom distances, convert neg to pos if (element.xe < 0){ var xe = -element.xe; } else { var xe = element.xe; } if (element.xc < 0){ var xc = -element.xc; } else { var xc = element.xc; } if (element.ye < 0){ var ye = -element.ye; } else { var ye = element.ye; } if (element.yc < 0){ var yc = -element.yc; } else { var yc = element.yc; } element.xt = xe - xc; element.yt = ye - yc; //set zoom aspect ratio element.ratio = element.xt / element.yt; if (element.ratio < 0){ element.ratio = -element.ratio; } // catch 0 ratio or ration set to infinity caused by devision by zero // and negative or invalid ratio if (element.ratio <= 0 || element.ratio == 'Infinity'){ element.ratio = 1; } // x check if zoom-in or zoom-out if (element.xt != 0){ if (element.xc > element.xe){ element.xd = 'zoomoutx'; } else { element.xd = 'zoominx'; } } else { element.xd = 'noxzoom'; element.zoomxdone = true; } // y check if zoom-in or zoom-out if (element.yt != 0){ if (element.yc > element.ye){ element.yd = 'zoomouty'; } else { element.yd = 'zoominy'; } } else { element.yd = 'noyzoom'; element.zoomydone = true; } // check if negative zoom direction if (element.xc < 0){ element.xn = true; element.xc = element.xc * -1; } if (element.yc < 0){ element.yn = true; element.yc = element.yc * -1; } } // ---------- X DIRECTION ---------- // zoom x direction / switch for zoom in and zoom out if (element.zoomxdone == false){ switch (element.xd){ case 'zoominx': if (element.xn == true){ element.xc = element.xc - eval(ease)[element.loopcounter] * element.ratio; if (element.xc * -1 < element.xe){ element.style.width = element.xc + "px"; element.style.left = element.xp + element.xw - element.xc - element.xyoffset + "px"; } if (-1 * element.xc + eval(ease)[element.loopcounter] * element.ratio >= element.xe){ element.style.width = -1 * element.xe + "px"; element.style.left = element.xp + element.xw - element.xe * -1 - element.xyoffset + "px"; element.zoomxdone = true; } } else { element.xc = element.xc + (eval(ease)[element.loopcounter] * element.ratio); if (element.xc < element.xe){ element.style.width = element.xc + "px"; } if (element.xc + eval(ease)[element.loopcounter] * element.ratio >= element.xe){ element.style.width = element.xe + "px"; element.zoomxdone = true; } } break; case 'zoomoutx': if (element.xn == true){ element.xc = element.xc + eval(ease)[element.loopcounter] * element.ratio; if (element.xc > element.xe){ element.style.width = element.xc + "px"; element.style.left = element.xp - element.xc + element.xw - element.xyoffset + "px"; } if (-1 * element.xc - eval(ease)[element.loopcounter] * element.ratio <= element.xe){ element.style.width = -1 * element.xe + "px"; element.style.left = element.xp + element.xe + element.xw - element.xyoffset + "px"; element.zoomxdone = true; } } else { element.xc = element.xc - eval(ease)[element.loopcounter] * element.ratio; if (element.xc > element.xe){ element.style.width = element.xc + "px"; } if (element.xc - eval(ease)[element.loopcounter] * element.ratio <= element.xe){ element.style.width = element.xe + "px"; element.zoomxdone = true; } } break; } } // ---------- Y DIRECTION ---------- // zoom y direction / switch for zoom in and zoom out if (element.zoomydone == false){ switch (element.yd){ case 'zoominy': if (element.yn == true){ element.yc = element.yc - eval(ease)[element.loopcounter]; if ((element.yc * -1) < element.ye){ element.style.height = element.yc + "px"; element.style.top = element.yp + element.yh - element.yc - element.xyoffset + "px"; } if (-1 * (element.yc + eval(ease)[element.loopcounter]) >= element.ye){ element.style.height = -1 * element.ye + "px"; element.style.top = element.yp + element.yh - element.ye * -1 - element.xyoffset + "px"; element.zoomydone = true; } } else { element.yc = element.yc + eval(ease)[element.loopcounter]; if (element.yc < element.ye){ element.style.height = element.yc + "px"; } if (element.yc + eval(ease)[element.loopcounter] >= element.ye){ element.style.height = element.ye + "px"; element.zoomydone = true; } } break; case 'zoomouty': if (element.yn == true){ element.yc = element.yc + eval(ease)[element.loopcounter]; if (element.yc > element.ye){ element.style.height = element.yc + "px"; element.style.top = element.yp - element.yc + element.yh - element.xyoffset + "px"; } if (-1 * element.yc - eval(ease)[element.loopcounter] <= element.ye){ element.style.height = -1 * element.ye + "px"; element.style.top = element.yp + element.ye + element.yh - element.xyoffset + "px"; element.zoomydone = true; } } else { element.yc = element.yc - eval(ease)[element.loopcounter]; if (element.yc > element.ye){ element.style.height = element.yc + "px"; } if (element.yc - eval(ease)[element.loopcounter] <= element.ye){ element.style.height = element.ye + "px"; element.zoomydone = true; } } break; } } // check on flags if (element.zoomxdone == false || element.zoomydone == false){ if (eval(ease).length - 1 > element.loopcounter){ element.loopcounter++; } element.zoomtimer = setTimeout(function () { element.zoom(element); }, loopspeed); } else { //----------------------------------------------------------------------- // use switch below ONLY if you need x/y specific end of function triggers //----------------------------------------------------------------------- //switch (element.xd){ // case 'zoominx': // break; // // case 'zoomoutx': // break; //} //switch (element.yd){ // case 'zoominy': // break; // // case 'zoomouty': // break; //} // callbacks if (callbackfunction == 'ml'){ try{ who.mldone(element); } catch(err){} } if (callbackfunction == 'hideinfoslideclose'){ hideinfoslideclose(); } if (callbackfunction == 'hidepictureslideclose'){ hidepictureslideclose(); } if (callbackfunction == 'pictureslidedone'){ pictureslidedone(); } if (callbackfunction == 'hidepictureslideclosedone'){ hidepictureslideclosedone(); } if (callbackfunction == 'hideczoomclose'){ hideczoomclose(); } clearTimeout(element.zoomtimer); element.varsetup = false; } } element.zoom(element); } //-------------------------------------------------------------------------------------------------------- // show / hide menu's //-------------------------------------------------------------------------------------------------------- var browser=navigator.userAgent; var ml = function (e,who,menueaseexept,delay,type){ // get even trigger (mouseover / mouseout) if (!e) var e = window.event; try{ who.eventtype = e.type; } catch(err){ // ignore, this is a ie bug } if (delay && who.eventtype == 'mouseover') { var shopdelay = delay; delaytimer = window.setTimeout(function () { ml(e, who, menueaseexept); }, shopdelay); return; } if (typeof delaytimer != 'undefined'){ clearTimeout(delaytimer); } if (menueaseexept == undefined){ menueaseexept = ''; } // find element to work with who.menu = function(){ for (i = 0; i < who.childNodes.length; i ++){ if (who.childNodes[i].nodeName == 'UL' || who.childNodes[i].nodeName == 'DIV'){ return (who.childNodes[i]); break; } } } // create element specific info who.menu = who.menu(); // check on safari and chrome and attach stopbubble() function to
  • elements if (browser.indexOf('Safari') > -1){ for (li = 0; li < who.menu.childNodes.length; li ++){ if (who.menu.childNodes[li].nodeName == 'LI'){ //who.menu.childNodes[li].addEventListener('mouseout',function(e){stopbubble(e);},false); //who.menu.childNodes[li].addEventListener('mouseover',function(e){},false); } } } // handle menu visual action who.handler = function(objpass) { if (who.eventtype == 'mouseover'){ if (type == 'upper'){ who.style.backgroundPosition = '50% -17px'; } else { who.style.backgroundPosition = '50% -25px'; } if (who.menu){ who.menu.style.display = 'block'; who.menu.style.height = ''; who.menu.elementheight = who.menu.offsetHeight; //who.menu.style.height = '0px'; //who.menu.style.overflow = 'hidden'; //zfade (who.menu, 0, 100, 'future duration', true); //alert (who.menu.elementheight); if (getwindowsize() - 173 < who.menu.elementheight){ who.menu.style.overflow = 'auto'; try { if(menueaseexept == 'apcom'){ who.menu.style.width = '309px'; } who.menu.style.height = getwindowsize() - 203 + 'px'; } catch(err){ // nothing for now } } } } if (who.eventtype == 'mouseout'){ who.style.backgroundPosition = '50% 0px'; if(menueaseexept == 'apcom'){ who.menu.style.width = '293px'; } if (who.menu){ storescrolltop = 0; who.menu.style.display = 'none' } } } // call handler who.handler(who.menu); // recall properties who.mldone = function (who) { who.style.height = ''; if (getwindowsize() < who.offsetHeight){ who.style.overflow = 'auto'; who.style.height = getwindowsize() - 100 + 'px'; } else { who.style.overflow = ''; who.style.height = ''; } } } // store current scroll position for safari and chrome var storescrolltop = 0; var getscrolltop = function(element){ if (browser.indexOf('Safari') > -1){ try { storescrolltop = element.scrollTop; } catch(e){} } } var setscrolltop = function (element) { if (browser.indexOf('Safari') > -1){ try { element.scrollTop = storescrolltop; } catch(e){} } } //-------------------------------------------------------------------------------------------------------- // build debug display and population //-------------------------------------------------------------------------------------------------------- var builddebug = function(debugcontent){ if (!$('debugcontainer')){ var buildbody = document.getElementsByTagName('body').item(0); debugelement = document.createElement('div'); debugelement.id = 'debugcontainer'; buildbody.appendChild(debugelement); } $('debugcontainer').innerHTML = debugcontent; } //-------------------------------------------------------------------------------------------------------- // image slider automatic sizing //-------------------------------------------------------------------------------------------------------- var movieslide = function(src,width,height){ $('zoomposition').style.display = 'block'; $('zoomcontainer').style.border = '1px solid #000000'; $('zoominnercontainer').innerHTML = '
    If you are seeing this message you either have javascript disabled or do not have a browser with flash installed or a recent enough version of flash installed. To get the latest flash go here.
    '; var so = new SWFObject("/swf/movie.swf?video=" + src, "myMovie", width , height , "8", "#666666"); so.addParam("wmode", "opaque"); so.addVariable("auto", "false"); so.addVariable("showLogo", "true"); so.addParam("base", "/swf/"); so.write("zoominnercontainer"); var imagesizex = width; var imagesizey = height + 37; closewindow = '
    '; $('zoominnercontainer').innerHTML = $('zoominnercontainer').innerHTML + closewindow; var toppos = getyscrollpos(); $('zoomposition').style.top = toppos + 'px'; $('zoomcontainer').style.height = imagesizey + "px"; zzoom($('zoomcontainer'),0,imagesizey,imagesizex,imagesizey,'sideslideease','',''); } //-------------------------------------------------------------------------------------------------------- // image slider automatic sizing //-------------------------------------------------------------------------------------------------------- var slideimage = new Image(); var pictureslide = function(src){ slideimage.onload = getslideimagedims; slideimage.src = src; } var getslideimagedims = function(){ $('zoomposition').style.display = 'block'; $('zoominnercontainer').innerHTML = ''; var imagesizex = $('sliderimage').offsetWidth; var imagesizey = $('sliderimage').offsetHeight + 37; closewindow = '
    '; $('zoominnercontainer').innerHTML = $('zoominnercontainer').innerHTML + closewindow; var toppos = getyscrollpos(); $('zoomposition').style.top = toppos + 'px'; $('zoomcontainer').style.height = imagesizey + "px"; zzoom($('zoomcontainer'),0,imagesizey,imagesizex,imagesizey,'sideslideease','pictureslidedone',''); } var pictureslidedone = function(){ zfade ($('sliderimage'), 0, 100, 500, true); } var hidepictureslideclose = function(imagesizex, imagesizey){ $('zoominnercontainer').innerHTML = ''; zzoom($('zoomcontainer'), imagesizex, imagesizey, 0, imagesizey,'sideslideease','hidepictureslideclosedone',''); } var hidepictureslideclosedone = function(){ $('zoomposition').style.display = "none"; $('zoomcontainer').style.width = '0px'; } //-------------------------------------------------------------------------------------------------------- // show hide info slide //-------------------------------------------------------------------------------------------------------- var buyaddtocartstorage = ''; var closewindow; var opensize = ''; var showinfoslide = function(loadpage, direction, fullpage, grabhtml, size, dostriper, fromcartslide, toWidth, toHeight){ $('zoominnercontainer').innerHTML = ''; sizePassToComplete = ''; var startx = 0; var starty = 520; var endx = 800; var endy = 520; if (size === 'policynewsize'){ var startx = 0; var starty = 380; var endx = 800; var endy = 380; } if (size === 'aponewsize'){ var startx = 0; var starty = 180; var endx = 550; var endy = 180; } if (size === 'instorepickupnewsize'){ var startx = 0; var starty = 580; var endx = 850; var endy = 580; } if (size === 'benefitsnewsize'){ var startx = 0; var starty = 190; var endx = 550; var endy = 190; } if (size === 'chips1newsize'){ var startx = 0; var starty = 310; var endx = 510; var endy = 310; } if (size === 'chips2newsize'){ var startx = 0; var starty = 520; var endx = 510; var endy = 520; } if (size === 'giftcardnewsize'){ var startx = 0; var starty = 390; var endx = 510; var endy = 390; } if (size === 'chips'){ var startx = 0; var starty = 520; var endx = 510; var endy = 520; } if (size === 'whyweneedthis'){ var startx = 0; var starty = 280; var endx = 550; var endy = 280; } if (size === 'charts'){ var startx = 0; var starty = 340; var endx = 800; var endy = 340; dostrip = true; } if (size === 'policy'){ var startx = 0; var starty = 340; var endx = 550; var endy = 340; } if (size === 'videoslide'){ var startx = 0; var starty = 477; var endx = 908; var endy = 477; sizePassToComplete = size; } if (size === 'cartslide'){ var startx = 0; var starty = 340; var endx = 800; var endy = 340; } if (size === 'cartslideskudim'){ var startx = 0; var starty = 340; var endx = 400; var endy = 340; } if (size === 'cartslidecarttoskudim'){ var startx = 800; var starty = 340; var endx = 400; var endy = 340; } if (size === 'cartslideskudimtocart'){ var startx = 400; var starty = 340; var endx = 800; var endy = 340; } if (size === 'promo'){ var startx = 0; var starty = 180; var endx = 430; var endy = 180; } if (size === 'giftcard'){ var startx = 0; var starty = 310; var endx = 550; var endy = 310; } if (direction == 'out'){ if (document.getElementById('buyaddtocart') && buyaddtocartstorage != ''){ document.getElementById('buyaddtocart').innerHTML = buyaddtocartstorage; } } if (dostriper == ''){ dostrip = false; } else { dostrip = dostriper; } if (direction === 'in'){ var toppos = getyscrollpos(); $('zoomposition').style.display = 'block'; $('zoomposition').style.top = toppos + 'px'; $('zoomcontainer').style.height = endy + "px"; if (fromcartslide == true){ closewindow = ''; } else { closewindow = '
    '; } if (fullpage) { $('zoominnercontainer').innerHTML = '' + closewindow; } // if same size as before do not close sliding layer if (opensize != size){ zzoom($('zoomcontainer'),startx,starty,endx,endy,'sideslideease','',''); } opensize = size; // not needed for right now if (grabhtml){ $('zoominnercontainer').innerHTML = $(grabhtml).innerHTML; siFRInit(); } else if (fullpage == '' || fullpage == null){ var pars = "PAGE=" + loadpage; if (size != null) { pars += "&SIZE=" + size; } pars += "&r=" + Math.random(); var url = "/za/CCM"; var myAjax = new Ajax.Request( url, { method: 'post', parameters: pars, onComplete: pageloaded}); } } else { zzoom($('zoomcontainer'),document.getElementById('zoomcontainer').offsetWidth,document.getElementById('zoomcontainer').offsetHeight,0,document.getElementById('zoomcontainer').offsetHeight,'sideslideease','hideinfoslideclose',''); opensize = ''; } } // show ajax response var pageloaded = function (request){ var head = document.getElementsByTagName("head")[0]; $('zoominnercontainer').innerHTML = request.responseText + closewindow; if (dostrip == true){ stripe($('zoomcontainer'), '#fff', '#f5f5f5'); } siFRInit(); // delete existing javascript if ($('ajaxjavascript')){ var elementtofind = document.getElementsByTagName('script'); for (var e = 0; e < elementtofind.length; e++){ if (elementtofind[e].id == 'ajaxjavascript'){ head.removeChild(elementtofind[e]); } } } // add javascript loaded via ajax var ajaxScript = request.responseText; var firstIndex = ajaxScript.indexOf('