/*//////////////////////////////////////////////////////////// JavaScript Code Library Developed by GrafX Design Division Pty Ltd http://www.grafx.com.au Last Checked In By : Richard Czeiger Public Revision No : 1.0 The software and related user documentation are protected under copyright laws and remain the sole property of GrafX Design Division. Full license is available on the GrafX Design Division web site or in the original download. Technical support is available via the GrafX web site at http://www.grafx.com.au ////////////////////////////////////////////////////////////*/ // Get the hacked stylesheet document.write(''); // Tracking Code for 1st Place SEO var ns_data,ns_hp,ns_tz,ns_rf,ns_sr,ns_img,ns_pageName; ns_pageName= this.location; document.cookie='__support_check=1';ns_hp='http'; ns_rf=document.referrer;ns_sr=window.location.search; ns_tz=new Date();if(location.href.substr(0,6).toLowerCase() == 'https:') ns_hp='https';ns_data='&an='+escape(navigator.appName)+ '&sr='+escape(ns_sr)+'&ck='+document.cookie.length+ '&rf='+escape(ns_rf)+'&sl='+escape(navigator.systemLanguage)+ '&av='+escape(navigator.appVersion)+'&l='+escape(navigator.language)+ '&pf='+escape(navigator.platform)+'&pg='+escape(ns_pageName); ns_data=ns_data+'&cd='+screen.colorDepth+'&rs='+escape(screen.width+ ' x '+screen.height)+ '&tz='+ns_tz.getTimezoneOffset()+'&je='+ navigator.javaEnabled(); ns_img=new Image();ns_img.src=ns_hp+'://tracker.statgauge.com/statistics.aspx'+ '?v=1&s=213&acct=222284'+ns_data+'&tks='+ns_tz.getTime(); // Suppress JavaScript Errors window.onerror=new Function("return true") // Set the Status Bar Message var statusMsg = 'Greater Blue Mountains Drive'; window.defaultStatus=statusMsg; // Google Analytics Tracking Code _uacct = "UA-1477859-12"; urchinTracker(); // Fixes IE6 CSS Rendering Bug if (document.all && window.attachEvent) window.attachEvent("onload", fixWinIE); function fixWinIE() { if (document.body.scrollHeight < document.body.offsetHeight) { document.body.style.display = 'block'; } } // Spam Suppression for Emails function stopSpam(name, domain, subject) { var symbol = '@'; // Took out the Subject due to MS fault in Outlook Express (Source - http://support.microsoft.com/kb/q182985/ ) // document.write('' + name + symbol + domain + ''); document.write('' + name + symbol + domain + ''); } // Roll Over Nav sfHover = function() { var sfEls = document.getElementById("navigation").getElementsByTagName("LI"); for (var i=0; i=1) { // anchor.childNodes[0].innerHTML = anchor.childNodes[0].innerHTML + ''; anchor.childNodes[0].className+=" topLevel"; } } } } // Give Facilities a Title Tag function facilitiesTitle() { if (!document.getElementsByTagName) return; // var facilities = document.getElementsByClassName("facilities"); // var facilities = $$('dd.facilities'); facilities = $('content').getElementsBySelector('.facilities'); for (var i=0; i 1) { // Killed because of "BBQ" // names[i] = names[i].toLowerCase(); letters = names[i].split(''); letters[0] = letters[0].toUpperCase(); names[i] = letters.join(''); } else { names[i] = names[i].toUpperCase(); } } str = names.join(' '); return str; } // Record Outbound links to Member's Websites function recordOutbound(target, productID, metricsTypeID) { if(encodeURIComponent) { var req = new AjaxRequest(); var params = "src=" + encodeURIComponent(location.href) + "&target=" + encodeURIComponent(target) + "&productID=" + productID + "&metricsTypeID=" + metricsTypeID; req.loadXMLDoc('/members-data.php', params); } return true; // window.open(target, 'blank'); // return false; } // Toggle Function function toggle(obj) { if (obj.style.display == "none") { obj.style.display = ""; } else { obj.style.display = "none"; } } // Pop Up Generic Window function Popup(ref, s, w, h) { window.open(ref, 'newWin', 'resizable=1,scrollbars=' + s + ',width=' + w + ',height=' + h + ''); } // Pop Up Image Window function PopupPic(sPicURL) { window.open('image.html?'+sPicURL, 'imagePopUp', 'resizable=1,width=20,height=20'); } function showMsgDetail() { // This script is for debug/admin purposes ONLY. // It allows the user to view the XML input and XML output. if (document.all.msg_detail.style.visibility == 'hidden') { document.all.msg_detail.style.visibility = 'visible'; document.all.msg_detail.style.position = 'relative'; document.all.msg_display_text.innerHTML = 'Hide Message Detail'; } else { document.all.msg_detail.style.visibility = 'hidden'; document.all.msg_detail.style.position = 'absolute'; document.all.msg_display_text.innerHTML = 'Display Message Detail'; } return; } function cssClass(action,object,class1,class2) { // swap replaces class class1 with class class2 in object. // add adds class class1 to the object. // remove removes class class1 from the object. // check test if class class1 is already applied to object and returns true or false. switch (action) { case 'swap': object.className=!cssClass('check',object,class1)?object.className.replace(class2,class1): object.className.replace(class1,class2); break; case 'add': if(!cssClass('check',object,class1)){object.className+=object.className?' '+class1:class1;} break; case 'remove': var rep=object.className.match(' '+class1)?' '+class1:class1; object.className=object.className.replace(rep,''); break; case 'check': return new RegExp('\\b'+class1+'\\b').test(object.className) break; } } // Toggle Object function toggleDOM(obj, show, hide) { obj = document.getElementById(obj); if (cssClass('check',obj,hide)) { cssClass('swap',obj,hide,show); } else { cssClass('swap',obj,show,hide); } return false; } // Dynamic Select Boxes function dynamicSelect() { id1 = 'searchCategory'; id2 = 'sSubCategory[]'; // Feature test to see if there is enough W3C DOM support if (document.getElementById && document.getElementsByTagName) { if (document.getElementById(id2)) { // Obtain references to both select boxes var sel1 = document.getElementById(id1); var sel2 = document.getElementById(id2); // Clone the dynamic select box var clone = sel2.cloneNode(true); // Obtain references to all cloned options var clonedOptions = clone.getElementsByTagName("option"); // Onload init: call a generic function to display the related options in the dynamic select box refreshDynamicSelectOptions(sel1, sel2, clonedOptions); // Onchange of the main select box: call a generic function to display the related options in the dynamic select box sel1.onchange = function() { refreshDynamicSelectOptions(sel1, sel2, clonedOptions); }; } } } function refreshDynamicSelectOptions(sel1, sel2, clonedOptions) { // Delete all options of the dynamic select box while (sel2.options.length) { sel2.remove(0); } // Create regular expression objects for "select" and the value of the selected option of the main select box as class names var pattern1 = /( |^)(select)( |$)/; var pattern2 = new RegExp("( |^)(" + sel1.options[sel1.selectedIndex].value + ")( |$)"); // Iterate through all cloned options for (var i = 0; i < clonedOptions.length; i++) { // If the classname of a cloned option either equals "select" or equals the value of the selected option of the main select box if (clonedOptions[i].className.match(pattern1) || clonedOptions[i].className.match(pattern2)) { // Clone the option from the hidden option pool and append it to the dynamic select box sel2.appendChild(clonedOptions[i].cloneNode(true)); } } } /* // Attach our behavior onload window.onload = function() { dynamicSelect("searchCategory", "searchSubCategory"); } */ // Global Cookie Function function setCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function getCookie(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) { setCookie(name,'',-1); } // Event-Manager Script by Keith Gaughan // For implementations that don't include the push() methods for arrays. if (!Array.prototype.push) { Array.prototype.push = function(elem) { this[this.length] = elem; } } var EventManager = { _registry: null, Initialise: function() { if (this._registry == null) { this._registry = []; // Register the cleanup handler on page unload. EventManager.Add(window, "unload", this.CleanUp); } }, // Registers an event and handler with the manager. Add: function(obj, type, fn, useCapture) { this.Initialise(); // If a string was passed in, it's an id. if (typeof obj == "string") obj = document.getElementById(obj); if (obj == null || fn == null) return false; // Mozilla/W3C listeners? if (obj.addEventListener) { obj.addEventListener(type, fn, useCapture); this._registry.push({obj: obj, type: type, fn: fn, useCapture: useCapture}); return true; } // IE-style listeners? if (obj.attachEvent && obj.attachEvent("on" + type, fn)) { this._registry.push({obj: obj, type: type, fn: fn, useCapture: false}); return true; } return false; }, // Cleans up all the registered event handlers. CleanUp: function() { for (var i = 0; i < EventManager._registry.length; i++) { with (EventManager._registry[i]) { // Mozilla/W3C listeners? if (obj.removeEventListener) obj.removeEventListener(type, fn, useCapture); // IE-style listeners? else if (obj.detachEvent) obj.detachEvent("on" + type, fn); } } // Kill off the registry itself to get rid of the last remaining references. EventManager._registry = null; } }; // Multiple Onload Functions to be called EventManager.Add(window,'load', sfHover); EventManager.Add(window,'load', externalLinks); EventManager.Add(window,'load', navigationArrows); EventManager.Add(window,'load', facilitiesTitle); // EventManager.Add(window,'load', dynamicSelect);