Flash = function(swf, width, height, version, id) { this.swf = swf || ""; this.width = width || "100%"; this.height = height || "100%"; this.requiredVersion = version || 6; this.id = id || "mainSWF"; this.params = new Object(); // add opacity to the window this.params.wmode = 'transparent'; this.variables = new Object(); }; Flash.hasVersion = function(requiredVersion) { var hasVersion = false; if (navigator.plugins.length > 0 && navigator.plugins["Shockwave Flash"]) { // NS/Mozilla var description = navigator.plugins["Shockwave Flash"].description; var version = description.match(/\d{1,2}/); hasVersion = (version >= requiredVersion); } else if (window.ActiveXObject && window.execScript && navigator.userAgent.indexOf('Mac') == -1) { // Win IE Flash.hasActiveX = false; window.execScript("On error resume next: Flash.hasActiveX = IsObject(CreateObject('ShockwaveFlash.ShockwaveFlash." + requiredVersion + "'))", "VBScript"); hasVersion = Flash.hasActiveX; delete Flash.hasActiveX; } //alert(hasVersion); return hasVersion; }; Flash.resizeTo = function(id, w, h) { var movie = document.getElementById(id); movie.width = w; movie.height = h; }; Flash.prototype.getSWF = function() { return this.swf; }; Flash.prototype.setSWF = function(swf) { this.swf = swf; }; Flash.prototype.getWidth = function() { return this.width; }; Flash.prototype.setWidth = function(w) { this.width = w; }; Flash.prototype.getHeight = function() { return this.height; }; Flash.prototype.setHeight = function(h) { this.height = h; }; Flash.prototype.getRequiredVersion = function() { return this.requiredVersion; }; Flash.prototype.setRequiredVersion = function(v) { this.requiredVersion = v; }; Flash.prototype.getId = function() { return this.id; }; Flash.prototype.setId = function(id) { this.id = id; }; Flash.prototype.getParam = function(name) { return this.params[name]; }; Flash.prototype.getParams = function() { return this.params; }; Flash.prototype.setParam = function(name, value) { this.params[name] = value; }; Flash.prototype.getVariable = function(name) { return this.variables[name]; }; Flash.prototype.getVariables = function() { return this.variables; }; Flash.prototype.setVariable = function(name, value) { this.variables[name] = value; }; Flash.prototype.getVariablePairs = function() { var variablePairs = new Array(); for (var name in this.getVariables()) { variablePairs.push(name + "=" + escape(this.getVariable(name))); } if (variablePairs.length > 0) { return variablePairs.join("&"); } else { return null; } }; Flash.prototype.getParamTags = function() { var paramTags = ""; for (var param in this.getParams()) { paramTags += ''; } if (paramTags == "") { paramTags = null; } return paramTags; }; Flash.prototype.getHTML = function() { var flashHTML = ""; if (window.ActiveXObject && navigator.userAgent.indexOf('Mac') == -1) { // PC IE flashHTML += ''; flashHTML += ''; if (this.getParamTags() != null) { flashHTML += this.getParamTags(); } if (this.getVariablePairs() != null) { flashHTML += ''; } flashHTML += ''; } else { // Everyone else flashHTML += ' 0) { var pindex = theStr.indexOf(".",index); if ((pindex > index+1) && (theStr.length > pindex+1)) result = false; } return result; } function checkzip(obj) { var zip = getNumber(obj.value); obj.value = zip; if (zip.length < 5) { return true; } else { return false; } } function checkphone(obj) { var phone = getNumber(obj.value); obj.value = phone; if (phone.length < 10) { return true; } else { return false; } } function checklength(obj,min,max,can_be_blank) { var oblen = getNumber(obj.value); var origvalue = obj.value; obj.value = oblen; //alert(oblen + '<' + min + ' - ' + oblen + '>' + max); //alert('min:' + (oblen >= parseInt(min))); //alert('max:' + (oblen <= parseInt(max))); // can be blank if ((oblen.length >= parseInt(min)) && (oblen.length <= parseInt(max))) { return false; } else { if (can_be_blank == 'yes') { if (origvalue == '') { return false; } else { return true; } } else { return true; } } } function checkSocial(obj) { var soc = getNumber(obj.value); soc = formatSocial(soc); if (soc != "--") { obj.value = soc; } if (soc.length != 11) { return true; } else { return false; } } function checkDate(obj) { var d = getNumber(obj.value); d = formatDate(d); if (d != "//") { obj.value = d; } if (d.length != 10) { return true; } else { return false; } } function digitsonly(wee) { zee = getNumber(wee); if ((wee.length != zee.length) || (wee.length == 0) || (wee == '')) { return true; } } //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// function checkblank(n,c,t) { if (document.tf[n].value == ""){ alert(c); if (t != '1') { document.tf[n].focus(); } return false; } else { return true; } } function checkemail(n,c) { if ((document.tf[n].value == "") || (!isEmailAddr(document.tf[n].value))) { alert(c); document.tf[n].focus(); return false; } else { return true; } } function checkpayment() { if (document.tf.paymenttype.value == ""){ alert('Please select a payment type.'); document.tf.paymenttype.focus(); return false; } else if (document.tf.paymenttype.value != "Check") { if (document.tf.nameoncard.value == "") { alert('Please enter the name as it appears on the credit card.'); document.tf.nameoncard.focus(); return false; } var cc = getNumber(document.tf.ccnumber.value); document.tf.ccnumber.value = cc; if (!cc > 0) { alert('Please enter a valid Credit Card Number.'); document.tf.ccnumber.focus(); return false; } else { return true; } } else { return true; } } function formatNumber(tobject) { var unformatted = stringReplace(tobject.value, "-", "") var formatted = unformatted.substring(0,3) + "-" + unformatted.substring(3,6) + "-" + unformatted.substring(6,10) if (unformatted.length > 10) { tobject.value = formatted + "-" + unformatted.substring(10,15) } else { tobject.value = formatted } } function formatSocial(tobject) { var unformatted = stringReplace(tobject, "-", ""); var formatted = unformatted.substring(0,3) + "-" + unformatted.substring(3,5) + "-" + unformatted.substring(5,9); return formatted; } function formatDate(tobject) { var unformatted = stringReplace(tobject, "/", ""); var formatted = unformatted.substring(0,2) + "/" + unformatted.substring(2,4) + "/" + unformatted.substring(4,8); return formatted; } function stringReplace(originalString, find, replace) { var pos=0, preString, postString pos = originalString.indexOf(find) while (pos != -1) { preString = originalString.substring(0,pos) postString = originalString.substring(pos+1, originalString.length) originalString = preString + replace + postString pos = originalString.indexOf(find) } return originalString; } function getNumber(sNumber) { var valid = "0123456789"; var temp; var sNewNumber = ''; for (var i=0; i < sNumber.length; i++) { temp = '' + sNumber.substring(i, i+1); if (valid.indexOf(temp) != "-1") { sNewNumber = sNewNumber + temp; } } return sNewNumber; } ////////////////////////////////////////////////////////////////////// // add a page load event ////////////////////////////////////////////////////////////////////// // Add it to window.onload event //addOnLoad(function() {clearfix("clearthis");}); /* * Adds a function into the onload event * Usage: addOnLoad(functionName) * Or, if you need to pass arguments in the * function: * addOnLoad(function() {functionName("argument")}) */ function addOnLoad(newFunction) { var currentOnLoad = window.onload; if (typeof window.onload != "function") { window.onload = newFunction; } else { window.onload = function() { currentOnLoad(); newFunction(); } } } ////////////////////////////////////////////////////////////////////// // assign click events to the promoClass on the HP ////////////////////////////////////////////////////////////////////// function setupPromoEvents() { var sp = $$('.promo').each( function(e) { var inc = e.getElementsByTagName("a"); e.setAttribute('link',inc[0].getAttribute('href')); e.onclick = function() { location.href = this.getAttribute('link'); } e.onmouseover = function() { this.className = "promoActive"; } e.onmouseout = function() { this.className = "promo"; } }); } ////////////////////////////////////////////////////////////////////// // show regions on homepageizzle ////////////////////////////////////////////////////////////////////// var rrTimerID; function hpRegion(startRegionH,processing) { var regionCookie = readCookie('region'); if (regionCookie) { var rob = document.regionForm.region; for (var i = 0; i < rob.length; i++) { if (rob[i].value == regionCookie) { rob.selectedIndex = i; } } } if (document.getElementById('hpRegionContainer').style.display == "block") { document.getElementById('rbottom').style.display = "none"; if (processing) { document.getElementById('hpSelectARegion').style.backgroundPosition = "0 -50px"; } else { document.getElementById('hpSelectARegion').style.backgroundPosition = "0 0"; } RegionUp(startRegionH,startRegionH); } else { document.getElementById('rbottom').style.display = "block"; document.getElementById('hpSelectARegion').style.backgroundPosition = "0 -25px"; RegionDown('1',startRegionH); } } function RegionUp(h,startRegionH) { clearTimeout(rrTimerID); if (h > 1) { h = h - 20; if (h < 1) { h = 1; } document.getElementById('hpRegionContainer').style.height = h; rrTimerID = setTimeout("RegionUp('" + h + "')", 10); // do it again and again } else if (h == 1) { document.getElementById('hpRegionContainer').style.display = "none"; } } function RegionDown(h,startRegionH) { clearTimeout(rrTimerID); if (h == 0) { h = 1; } document.getElementById('hpRegionContainer').style.display = "block"; h = parseFloat(h); if (h < startRegionH) { h = h + 20; document.getElementById('hpRegionContainer').style.height = h; rrTimerID = setTimeout("RegionDown('" + h + "','" + startRegionH + "')", 30); // do it again and again } else { document.getElementById('hpRegionContainer').style.height = startRegionH; } } ////////////////////////////////////////////////////////////////////// // scroll ////////////////////////////////////////////////////////////////////// var pl3TimerID; var times = 0; var scrollToPos = "-190"; var sp; var sc; var curX; var scc; var max; function pl3scroll(d) { //////////////////////////////////////////////////////////////////////////////////// // the first time you clicky, get the total number of promo divs to know when to stop if (!sc) { sp = document.getElementById('promoLevel3Inside').getElementsByTagName("div"); sc = 0; scc = 0; for (var i = 0; i < sp.length; i++) { if (sp[i].className == "promo") { sc++; } } } //////////////////////////////////////////////////////////////////////////////////// if (d == "prev") { scc = scc - 1; } else { scc++; } if (scc < 0) { scc = 0; } curX = parseFloat(document.getElementById('promoLevel3Inside').style.left); if (!curX) { curX = 0; } max = sc / 4; if (scc > max) { scc = max; } //alert('scc:' + scc + ' max:' + max); if (scc == max) { document.getElementById('FeaturesNext').className = ""; } else { document.getElementById('FeaturesNext').className = "active"; } if (scc > 0) { document.getElementById('FeaturesPrev').className = "active"; } else { document.getElementById('FeaturesPrev').className = ""; } pl3Loop(d); } function pl3Loop(d) { clearTimeout(pl3TimerID); stopPos = (scrollToPos * scc); // with of promo div X current next/prev number if (curX != stopPos) { if (d == "next") { curX = curX - 10; } // subtract 4 to go forward else { curX = curX + 10; if (curX > 0) { curX = 0; } } // add 4 to go backwards document.getElementById('promoLevel3Inside').style.left = curX; // set current left pos pl3TimerID = setTimeout("pl3Loop('" + d + "')", 0); // do it again and again } //else { // alert(stopPos); alert(curX); // says im done! // } } ////////////////////////////////////////////////////////////////////// // cookie functions ////////////////////////////////////////////////////////////////////// function createCookie(name,value,days,domain) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; wholecookie = name+"="+value+expires+"; path=/;"; if (domain) { wholecookie = wholecookie + "domain=" + domain + ";"; } document.cookie = wholecookie; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function eraseCookie(name,domain) { createCookie(name,"",-1,domain); } ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// // find x and y positions of an element ////////////////////////////////////////////////////////////////////// function findPosX(obj) { var curleft = 0; if (obj.offsetParent) { while (obj.offsetParent) { curleft += obj.offsetLeft obj = obj.offsetParent; } } else if (obj.x) curleft += obj.x; return curleft; } function findPosY(obj) { var curtop = 0; if (obj.offsetParent) { while (obj.offsetParent) { curtop += obj.offsetTop obj = obj.offsetParent; } } else if (obj.y) curtop += obj.y; return curtop; } ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// // scrollPageTo(endPosition) ////////////////////////////////////////////////////////////////////// var scrolldelay; function scrollPageTo(end) { clearTimeout(scrolldelay); // clear the repeater var currentPos = (document.all)?document.body.scrollTop:window.pageYOffset; if (currentPos > end) { window.scrollBy(0,-10); // horizontal and vertical scroll increments scrolldelay = setTimeout('scrollPageTo(\'' + end + '\')',10); } //alert(end); } ////////////////////////////////////////////////////////////////////// // upperFirst(whattomakeuppercasefirst) // makes things all lowercase then uppercases the first letter of // each word ////////////////////////////////////////////////////////////////////// function upperFirst(u){ u = u.toLowerCase(); u = u.split(' '); for (i=0;i 0) { regionState = (regionState - 1); } } else if (direction == "next") { if (regionState < (totalRegions - 1)) { regionState = (regionState + 1); } } var location = (increment * regionState); document.getElementById('regionContainerInner').style.left = "-" + location + "px"; if (regionState == 0) { document.getElementById('regionPrev').className = "prevRegionDisabled"; } else { document.getElementById('regionPrev').className = "prevRegion"; } if (regionState < (totalRegions - 1)) { document.getElementById('regionNext').className = "nextRegion"; } else { document.getElementById('regionNext').className = "nextRegionDisabled"; } } ////////////////////////////////////////////////////////////////////// // select region button ////////////////////////////////////////////////////////////////////// var regionVisible = "no"; function initRegion() { /*document.getElementById('selectARegionButton').onclick = function() { turnOffErrorFloat(); if (regionVisible == "no") { document.getElementById('mainContainerInner').style.top = '-699px'; document.getElementById('selectARegionButton').style.backgroundPosition = "0 -21px"; regionVisible = "yes"; elbo(); } else { document.getElementById('mainContainerInner').style.top = '-233px'; document.getElementById('selectARegionButton').style.backgroundPosition = "0 0"; regionVisible = "no"; elbo(); } } document.getElementById('regionClose').onclick = function() { document.getElementById('mainContainerInner').style.top = '-233px'; document.getElementById('selectARegionButton').style.backgroundPosition = "0 0"; regionVisible = "no"; elbo(); } */ // setup click events for regions var x=0; var regionCookie = readCookie('region'); if (regionCookie) { regionCookie = regionCookie.replace('%20',' '); if (regionCookie == '') { regionCookie = "Cincinnati"; } if (regionCookie != "Cincinnati") { document.getElementById('introSiteId').innerHTML = ": " + regionCookie; } } //for (x=0; x<16; x++) { //var obj = regions[x]; //if (regionCookie == '') { regionCookie = "Cincinnati"; } //if (regionCookie != "Cincinnati") { document.getElementById('introSiteId').innerHTML = ": " + regionCookie; } //document.getElementById(obj).onclick = changeRegion; //if (regionCookie == obj) { document.getElementById(obj).className = 'active'; } //} } ////////////////////////////////////////////////////////////////////// // show region elbo ////////////////////////////////////////////////////////////////////// function elbo() { ////////////////////////////////////////////////////////////////////// // on resize, move elbo ////////////////////////////////////////////////////////////////////// window.onresize = elbo; ////////////////////////////////////////////////////////////////////// if (regionVisible == "yes") { var sabX = findPosX(document.getElementById('selectARegionButton')); var sabY = findPosY(document.getElementById('selectARegionButton')); document.getElementById('introElbo').style.top = (sabY - 12) + "px"; document.getElementById('introElbo').style.left = (sabX - 90) + "px"; document.getElementById('introElbo').style.display = "block"; } else { document.getElementById('introElbo').style.display = "none"; } } ////////////////////////////////////////////////////////////////////// // change the region based on click ////////////////////////////////////////////////////////////////////// function changeRegion(r) { // turn off all var x=0; for (x=0; x<16; x++) { var obj = regions[x]; document.getElementById(obj).className = ''; } eraseCookie('region'); createCookie('region', this.innerHTML,90,'cincinnatibell.com'); document.getElementById('introSiteId').innerHTML = ": " + this.innerHTML; this.className = "active"; clearTimeout(timerID); timerID = setTimeout("shutoff()", 1500); new Effect.Highlight(this); } ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// // if you clicky the region, wait 2 seconds to run this to close region ////////////////////////////////////////////////////////////////////// function shutoff() { document.getElementById('mainContainerInner').style.top = '-233px'; document.getElementById('selectARegionButton').style.backgroundPosition = "0 0"; regionVisible = "no"; elbo(); clearTimeout(timerID); } ////////////////////////////////////////////////////////////////////// function setupRegionDropDown() { var regionCookie = readCookie('region'); if (regionCookie) { var rob = document.regionForm.region; for (var i = 0; i < rob.length; i++) { if (rob[i].value == regionCookie) { rob.selectedIndex = i; } } } } ////////////////////////////////////////////////////////////////////// // change the region based dropdown ////////////////////////////////////////////////////////////////////// function changeRegionDD(r) { // turn off all eraseCookie('region'); var cookieDomain = ''; if (location.hostname.indexOf("cincinnatibell.com") > -1) { cookieDomain = "cincinnatibell.com"; } createCookie('region', r.value,90,cookieDomain); clearTimeout(timerID); // squish the button, then make it rotatey //hpRegion('80','yes'); new Effect.BlindUp('regionNav', { duration: .2}); // wait then reload if ((r.value == "Mason") || (r.value == "Morrow") || (r.value == "SouthLebanon")) { timerID = setTimeout("location.href = '/consumer/bundles/';", 1200); } else { timerID = setTimeout("location.href = location.href;", 1200); } } var regionVisible = "no"; ////////////////////////////////////////////////////////////////////// // onload, setup the events ////////////////////////////////////////////////////////////////////// addOnLoad(function() { initNav(); }); function initNav() { var x=0; var lvl3active = 0; var loggedinCookie = readCookie('loggedin'); var nl3; var nl2SignOut; var lvl3buttons; var lvl3active; ////////////////////////////////////////////////////////////////////// // setup click events for level3Nav and link for clicky // get the div named navLevel3 nl3 = document.getElementById('navLevel3'); if (nl3) { // get all the li tags inside of nl3 lvl3buttons = nl3.getElementsByTagName("li"); // loop through all li tags in nl3 // assign click, over and out events unless they // have an class of active for (var i = 0; i < lvl3buttons.length; i++) { //lvl3buttons[i].onclick = function () { location.href = this.getElementsByTagName("a")[0].href; } if (lvl3buttons[i].id == nl3_id) { lvl3buttons[i].className = "active"; } if (lvl3buttons[i].className != "active") { lvl3buttons[i].onmouseover = function () {this.style.background='transparent url(/images/nav/level3bg_over.gif) repeat-x'; } lvl3buttons[i].onmouseout = function () {this.style.background='transparent'; } } else { lvl3active = lvl3buttons[i].getElementsByTagName("a")[0].href; } } } ////////////////////////////////////////////////////////////////////// // set the sign in sign out button status if (loggedinCookie) { if (loggedinCookie == "1") { document.getElementById('inout').innerHTML = "Sign Out"; } } } // end init ////////////////////////////////////////////////////////////////////// // put the region in the site id ////////////////////////////////////////////////////////////////////// function siteIdRegion() { var regionCookie = readCookie('region'); if (regionCookie == '') { regionCookie = "Cincinnati"; } if (regionCookie != "Cincinnati") { document.getElementById('hpsiteId').innerHTML = ": " + regionCookie; document.getElementById('navLevel2').className = "withRegion"; } } ////////////////////////////////////////////////////////////////////// // abbreviate really long stuff // thing to shorten, length to shorten too ////////////////////////////////////////////////////////////////////// function abrev(obj,len) { var abv = obj.innerHTML; if (abv.length > len) { var abv_a = abv.split(""); var abvTemp = ''; for (i =0; i < len; i++) { abvTemp += abv_a[i]; } obj.innerHTML = abvTemp + '...'; } } ////////////////////////////////////////////////////////////////////// // customer support product help ajax wizzywig ////////////////////////////////////////////////////////////////////// function updateContent_1(target, select, an) { if (select != '#') { new Ajax.Updater(target, select, {asynchronous:true, evalScripts:true, onComplete:function(request){ new Effect.Appear(target); if (an && $(an)) { new Effect.ScrollTo(an, {offset: -20, duration:.5}); } }}); } else { $(target).innerHTML = ''; new Effect.Highlight('topTopics'); } } function updateCategory_1(target, select) { if(select != '#') { new Ajax.Updater(target, select, {asynchronous:true, evalScripts:true, onComplete: function(request) { new Effect.Highlight('topTopics'); } }); } else { $(target).innerHTML = ''; new Effect.Highlight('topTopics'); } } function preSelect(subcat, subtarget, form, target, an) { var len = form[subtarget].length; for (i=0; i < len; i++) { if (form[subtarget][i].innerHTML.toLowerCase() == subcat) { form[subtarget].selectedIndex = i; updateContent(target, form[subtarget][i].value, an); } } } ////////////////////////////////////////////////////////////////////// // assign behaviors for tabs ////////////////////////////////////////////////////////////////////// var tabRules = { '.tabList li' : function(element){ element.onmouseover = function(){ this.style.cursor = 'pointer'; } element.onclick = function() { location.href = element.getElementsByTagName("a")[0].getAttribute("href"); } } }; ////////////////////////////////////////////////////////////////////// // assign behaviors for manage icons ////////////////////////////////////////////////////////////////////// var manageMyIconRules = { 'ul.manageMyIcons li' : function(element){ element.onclick = function(){ location.href = element.getElementsByTagName("a")[0].getAttribute("href"); } } }; ////////////////////////////////////////////////////////////////////// // abbreviate name and street address ////////////////////////////////////////////////////////////////////// var addressRules = { 'div#accountInfoContainer label.name' : function(element){ abrev(element, '20'); }, 'div#accountInfoContainer label.address' : function(element){ abrev(element, '40'); } }; ////////////////////////////////////////////////////////////////////// // addressSelectSpinner ////////////////////////////////////////////////////////////////////// var spinnerRules = { 'div#addressSelectSpinner' : function(element){ var spinner = new Flash("/swf/loaders/spinner.swf", 16, 16, 7); spinner.setParam("menu", "false"); spinner.setParam("quality", "best"); spinner.setParam("salign", "tl"); spinner.setParam("scale", "noscale"); spinner.setParam("wmode", "transparent"); spinner.render(element.id); } }; ////////////////////////////////////////////////////////////////////// // assign behaviors for expand link my account ////////////////////////////////////////////////////////////////////// var manageMyViewDetailsRules = { '.viewTextDetails' : function(element) { element.onclick = function(){ var obj = element.getAttribute('title'); new Effect.Appear(obj, {duration: '.5'}); delay = setTimeout('new Effect.ScrollTo(\'' + obj + '\', {offset: -20, duration:1.0})', 1000); return false; } }, '.viewDetails' : function(element) { element.onclick = function(){ var obj = element.getAttribute('title'); //new Effect.BlindDown(obj, {duration: '.5'}); //new Effect.toggle(obj,'blind', {duration: '.5'}); if ($(obj).style.display == 'block') { $(obj).style.display = 'none'; } else { $(obj).style.display = 'block'; //delay = setTimeout('new Effect.ScrollTo(\'' + obj + '\', {offset: -20, duration:1.0})', 1000); } return false; } } }; ////////////////////////////////////////////////////////////////////// // assign behaviors for collapse link my account ////////////////////////////////////////////////////////////////////// var manageMyCloseDetailsRules = { '.closeTextDetails' : function(element){ element.onclick = function(){ var obj = element.getAttribute('title'); new Effect.Fade(obj, {duration: '.5'}); return false; } } }; ////////////////////////////////////////////////////////////////////// // assign behaviors to ldPlan highlight ////////////////////////////////////////////////////////////////////// var planHighlightRules = { '.ldPlan' : function(element){ element.onmouseover = function(){ element.className = 'ldPlanActive'; } element.onmouseout = function(){ element.className = 'ldPlan'; } element.onclick = function() { location.href = element.getElementsByTagName("h5")[0].getElementsByTagName("a")[0].getAttribute("href"); } } }; var supportCategory = ''; var CategoryID = ''; var SubCategoryID = ''; var expectedHash = ''; var hashhistory = ''; function makeHistory(newHash) { window.location.hash = newHash; //alert("newHash: " + newHash); expectedHash = window.location.hash; //alert("expectedHash: " + expectedHash); return true; } ////////////////////////////////////////////////////////////////////// // assign behaviors to cust_serv subnav ////////////////////////////////////////////////////////////////////// var custServRules = { 'div.navLevel7 ul li.ajax' : function(element){ // take the text inside the link, replace the spaces with underscores // use that to create the bodyUrl for the ajax call for onclick // reset className var url = element.getElementsByTagName("a")[0].getAttribute('doc').toLowerCase(); var anchor = element.getElementsByTagName("a")[0].getAttribute('anchor').toLowerCase(); var bodyUrl = '/customer_support/product_support/documents/getdocument.aspx'; // add event // when click get the page via ajax call using prototype element.onclick = function(){ var d = new Date(); var m = 'idocumentid=' + url + '&m=' + d.getTime(); var ajax = new Ajax.Updater( {success: 'contentTarget'}, bodyUrl, {method: 'get', parameters: m, onComplete: function() { new Effect.ScrollTo('contentTarget',{offset: -20, duration:.5});}, onFailure: function() { document.getElementById('contentTarget').innerHTML = "Error"; }, evalScripts: true}); //CategoryID = document.helpForm.category[document.helpForm.category.selectedIndex].value; //SubCategoryID = document.helpForm.subcategory[document.helpForm.subcategory.selectedIndex].value; //makeHistory('category=' + CategoryID + '&subcategory=' + SubCategoryID + '&content=' + url ); return false; } } }; ////////////////////////////////////////////////////////////////////// // zebra stripe your tables ////////////////////////////////////////////////////////////////////// var tableStripes = { 'table.zebra' : function(element){ stripeTable(element); } }; addOnLoad(function() { if ($('hpsiteId')) { $('hpsiteId').onclick = function() { location.href = '/'; }} }); function stripeTable(o) { var c = 0; the_trs = o.getElementsByTagName('tr'); for (i=1; i < the_trs.length; i++) { if (c == 0) { the_trs[i].className = 'even'; } else { the_trs[i].className = 'odd'; } c++; if (c > 1) { c = 0; } } } /* Behaviour v1.1 by Ben Nolan, June 2005. Based largely on the work of Simon Willison (see comments by Simon below). Description: Uses css selectors to apply javascript behaviours to enable unobtrusive javascript in html documents. Usage: var myrules = { 'b.someclass' : function(element){ element.onclick = function(){ alert(this.innerHTML); } }, '#someid u' : function(element){ element.onmouseover = function(){ this.innerHTML = "BLAH!"; } } }; Behaviour.register(myrules); // Call Behaviour.apply() to re-apply the rules (if you // update the dom, etc). License: This file is entirely BSD licensed. More information: http://ripcord.co.nz/behaviour/ */ var Behaviour = { list : new Array, register : function(sheet){ Behaviour.list.push(sheet); }, start : function(){ Behaviour.addLoadEvent(function(){ Behaviour.apply(); }); }, apply : function(){ for (h=0;sheet=Behaviour.list[h];h++){ for (selector in sheet){ list = document.getElementsBySelector(selector); if (!list){ continue; } for (i=0;element=list[i];i++){ sheet[selector](element); } } } }, addLoadEvent : function(func){ var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldonload(); func(); } } } } Behaviour.start(); /* The following code is Copyright (C) Simon Willison 2004. document.getElementsBySelector(selector) - returns an array of element objects from the current document matching the CSS selector. Selectors can contain element names, class names and ids and can be nested. For example: elements = document.getElementsBySelect('div#main p a.external') Will return an array of all 'a' elements with 'external' in their class attribute that are contained inside 'p' elements that are contained inside the 'div' element which has id="main" New in version 0.4: Support for CSS2 and CSS3 attribute selectors: See http://www.w3.org/TR/css3-selectors/#attribute-selectors Version 0.4 - Simon Willison, March 25th 2003 -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows -- Opera 7 fails */ function getAllChildren(e) { // Returns all children of element. Workaround required for IE5/Windows. Ugh. return e.all ? e.all : e.getElementsByTagName('*'); } document.getElementsBySelector = function(selector) { // Attempt to fail gracefully in lesser browsers if (!document.getElementsByTagName) { return new Array(); } // Split selector in to tokens var tokens = selector.split(' '); var currentContext = new Array(document); for (var i = 0; i < tokens.length; i++) { token = tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');; if (token.indexOf('#') > -1) { // Token is an ID selector var bits = token.split('#'); var tagName = bits[0]; var id = bits[1]; var element = document.getElementById(id); if (tagName && element.nodeName.toLowerCase() != tagName) { // tag with that ID not found, return false return new Array(); } // Set currentContext to contain just this element currentContext = new Array(element); continue; // Skip to next token } if (token.indexOf('.') > -1) { // Token contains a class selector var bits = token.split('.'); var tagName = bits[0]; var className = bits[1]; if (!tagName) { tagName = '*'; } // Get elements matching tag, filter them for class selector var found = new Array; var foundCount = 0; for (var h = 0; h < currentContext.length; h++) { var elements; if (tagName == '*') { elements = getAllChildren(currentContext[h]); } else { elements = currentContext[h].getElementsByTagName(tagName); } for (var j = 0; j < elements.length; j++) { found[foundCount++] = elements[j]; } } currentContext = new Array; var currentContextIndex = 0; for (var k = 0; k < found.length; k++) { if (found[k].className && found[k].className.match(new RegExp('\\b'+className+'\\b'))) { currentContext[currentContextIndex++] = found[k]; } } continue; // Skip to next token } // Code to deal with attribute selectors if (token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)) { var tagName = RegExp.$1; var attrName = RegExp.$2; var attrOperator = RegExp.$3; var attrValue = RegExp.$4; if (!tagName) { tagName = '*'; } // Grab all of the tagName elements within current context var found = new Array; var foundCount = 0; for (var h = 0; h < currentContext.length; h++) { var elements; if (tagName == '*') { elements = getAllChildren(currentContext[h]); } else { elements = currentContext[h].getElementsByTagName(tagName); } for (var j = 0; j < elements.length; j++) { found[foundCount++] = elements[j]; } } currentContext = new Array; var currentContextIndex = 0; var checkFunction; // This function will be used to filter the elements switch (attrOperator) { case '=': // Equality checkFunction = function(e) { return (e.getAttribute(attrName) == attrValue); }; break; case '~': // Match one of space seperated words checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); }; break; case '|': // Match start with value followed by optional hyphen checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); }; break; case '^': // Match starts with value checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) == 0); }; break; case '$': // Match ends with value - fails with "Warning" in Opera 7 checkFunction = function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); }; break; case '*': // Match ends with value checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) > -1); }; break; default : // Just test for existence of attribute checkFunction = function(e) { return e.getAttribute(attrName); }; } currentContext = new Array; var currentContextIndex = 0; for (var k = 0; k < found.length; k++) { if (checkFunction(found[k])) { currentContext[currentContextIndex++] = found[k]; } } // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue); continue; // Skip to next token } if (!currentContext[0]){ return; } // If we get here, token is JUST an element (not a class or ID selector) tagName = token; var found = new Array; var foundCount = 0; for (var h = 0; h < currentContext.length; h++) { var elements = currentContext[h].getElementsByTagName(tagName); for (var j = 0; j < elements.length; j++) { found[foundCount++] = elements[j]; } } currentContext = found; } return currentContext; } /* That revolting regular expression explained /^(\w+)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/ \---/ \---/\-------------/ \-------/ | | | | | | | The value | | ~,|,^,$,* or = | Attribute Tag */