sfHover = function() { var nav = document.getElementById("nav"); if (nav) { var sfEls = nav.getElementsByTagName("li"); for (var i=0; i < sfEls.length; i++) { sfEls[i].onmouseover=function() { this.className+=" sfhover"; } sfEls[i].onmouseout=function() { this.className=this.className.replace(new RegExp(" sfhover\\b"), ""); } } } } if (window.attachEvent) { window.attachEvent("onload", sfHover); } function clearText(thefield) { if (thefield.defaultValue==thefield.value) { thefield.value = ""; } } /* Remove IE6 image flickering */ try { document.execCommand ('BackgroundImageCache', false, true); } catch (error) {} /* * Cross-browser event handling, by Scott Andrew */ function addEvent(element, eventType, lamdaFunction, useCapture) { if (element.addEventListener) { element.addEventListener(eventType, lamdaFunction, useCapture); return true; } else if (element.attachEvent) { var r = element.attachEvent('on' + eventType, lamdaFunction); return r; } else { return false; } } /* * Kills an event's propagation and default action */ function knackerEvent(eventObject) { if (eventObject && eventObject.stopPropagation) { eventObject.stopPropagation(); } if (window.event && window.event.cancelBubble ) { window.event.cancelBubble = true; } if (eventObject && eventObject.preventDefault) { eventObject.preventDefault(); } if (window.event) { window.event.returnValue = false; } } /* * Safari doesn't support canceling events in the standard way, so we must * hard-code a return of false for it to work. */ function cancelEventSafari() { return false; } /* * Cross-browser style extraction, from the JavaScript & DHTML Cookbook * */ function getElementStyle(elementID, CssStyleProperty) { var element = document.getElementById(elementID); if (element.currentStyle) { return element.currentStyle[toCamelCase(CssStyleProperty)]; } else if (window.getComputedStyle) { var compStyle = window.getComputedStyle(element, ''); return compStyle.getPropertyValue(CssStyleProperty); } else { return ''; } } /* * CamelCases CSS property names. Useful in conjunction with 'getElementStyle()' * From */ function toCamelCase(CssProperty) { var stringArray = CssProperty.toLowerCase().split('-'); if (stringArray.length == 1) { return stringArray[0]; } var ret = (CssProperty.indexOf("-") == 0) ? stringArray[0].charAt(0).toUpperCase() + stringArray[0].substring(1) : stringArray[0]; for (var i = 1; i < stringArray.length; i++) { var s = stringArray[i]; ret += s.charAt(0).toUpperCase() + s.substring(1); } return ret; } /* Disables all 'test' links, that point to the href '#', by Ross Shannon */ function disableTestLinks() { var pageLinks = document.getElementsByTagName('a'); for (var i = 0; i < pageLinks.length; i++) { if (pageLinks[i].href.match(/[^#]#$/)) { addEvent(pageLinks[i], 'click', knackerEvent, false); } } } /* Cookie functions */ function createCookie(name, value, days) { var expires = ''; if (days) { var date = new Date(); date.setTime(date.getTime() + (days*24*60*60*1000)); var expires = '; expires=' + date.toGMTString(); } document.cookie = name + '=' + value + expires + '; path=/'; } function readCookie(name) { var cookieCrumbs = document.cookie.split(';'); var nameToFind = name + '='; for (var i = 0; i < cookieCrumbs.length; i++) { var crumb = cookieCrumbs[i]; while (crumb.charAt(0) == ' ') { crumb = crumb.substring(1, crumb.length); /* delete spaces */ } if (crumb.indexOf(nameToFind) == 0) { return crumb.substring(nameToFind.length, crumb.length); } } return null; } function eraseCookie(name) { createCookie(name, '', -1); } /* Functions for clearing and replacing default text in elements. */ function clearDefaultText(e) { var target = window.event ? window.event.srcElement : (e ? e.target : null); if (target && target.value == target.defaultText) { target.value = ''; } } function replaceDefaultText(e) { var target = window.event ? window.event.srcElement : (e ? e.target : null); if (target && target.value == '' && target.defaultText) { target.value = target.defaultText; } } function init() { var formInputs = document.getElementsByTagName('input'); for (var i = 0; i < formInputs.length; i++) { var theInput = formInputs[i]; if (theInput.type == 'text' && theInput.className.match(/bcleardefaultb/)) { /* Add event handlers */ addEvent(theInput, 'focus', clearDefaultText, false); addEvent(theInput, 'blur', replaceDefaultText, false); /* Save the current value */ if (theInput.value != '') { theInput.defaultText = theInput.value; } } } } addEvent(window, 'load', init, false); function popMailWin() { var pageURL = escape(self.document.URL); var pageTitle = escape(self.document.title); var formURL = "http://cgi.timeinc.net/cgi-bin/mail/mailurl2friend.cgi?path=/toh/email&url=" + pageURL + "&group=toh&title=" + pageTitle; window.open(formURL,"emailpop","height=475,width=350,resizable,scrollbars"); return false; } function openWinPoll(URL) { var n=open(URL,'poll','width=355,height=465,status=yes,menubar=no,scrolling=no,scrollbars=no,resizable=no,top=0,left=0'); } function openWindow(URL, window_name, height, width) { var n=open(URL, window_name,'width=' + width + ',height=' + height + ',status=yes,menubar=no,scrolling=no,scrollbars=no,resizable=no,top=0,left=0'); } function openWindowNew(URL, window_name, height, width, otherOptions) { var n=open(URL, window_name,'width=' + width + ',height=' + height + ',' + otherOptions ); } function openDir(aForm, aField) { window.location=(document.forms[aForm].elements[aField].options[document.forms[aForm].elements[aField].selectedIndex].value); } function openTarget (form, features, windowName) { if (!windowName) { windowName = 'formTarget' + (new Date().getTime()); } form.target = windowName; open ('', windowName, features); } function openWinSnapshottour(popUrl) { var n=open(popUrl,'snaptour','width=780,height=625,status=yes,menubar=no,toolbar=yes,scrolling=yes,scrollbars=yes,resizable=yes,top=0,left=0'); } function openWinFloorplan(popUrl) { var n=open(popUrl,'floorplan','width=606,height=720,status=yes,menubar=yes,scrolling=yes,toolbar=yes,scrollbars=yes,resizable=yes,top=0,left=0'); } function openWinStain(popUrl) { var n=open(popUrl,'stain','width=650,height=625,status=yes,menubar=no,toolbar=yes,scrolling=yes,scrollbars=yes,resizable=yes,top=40,left=40'); } function res_larger_image(URL) { window.open(URL,'Enlarge','width=420,height=430,status=yes,menubar=no,scrolling=no,scrollbars=no,resizable=yes,top=0,left=0'); } function displayDate() { // This script was written by Protoplasm // http://www.geocities.com/protoplasm72 var Today = new Date(); var month; switch (Today.getMonth()) { case 0: month = "January"; break; case 1: month = "February"; break; case 2: month = "March"; break; case 3: month = "April"; break; case 4: month = "May"; break; case 5: month = "June"; break; case 6: month = "July"; break; case 7: month = "August"; break; case 8: month = "September"; break; case 9: month = "October"; break; case 10: month = "November"; break; case 11: month = "December"; break; } document.write (month + " " + Today.getDate() + ", " + Today.getFullYear()); } /* form validation for email */ function isValidEmail(str) { var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})$/; return (filter.test(str)); } function validateNewsletterSignup(form) { var error = ""; var recipientAddress = form.email.value; var thanksUrl = form.re.value; var fullUrl = ""; fullUrl = thanksUrl + "?" + "email=" + recipientAddress; form.re.value = fullUrl; /*document.form.re.value = fullUrl;*/ /*document.form.re = fullUrl;*/ if (!isValidEmail(form.email.value)){ error += "Please enter a valid e-mail address.\n"; } if (!form.sub[0].checked && !form.sub[1].checked && !form.sub[2].checked && !form.sub[3].checked && !form.sub[4].checked) { error += "Please select at least one newsletter.\n"; } if (error != "") { error += "\nThank You,\n"; error += "This Old House\n"; } if (error != "") { alert(error); return false; } /*alert('final URL:'+fullUrl);*/ return true; } function validateFormNewsletterSignup(form) { var error = ""; var recipientAddress = form.email.value; var thanksUrl = form.re.value; var fullUrl = ""; fullUrl = thanksUrl + "?" + "email=" + recipientAddress; form.re.value = fullUrl; var source = ""; source = tiiGetQueryParamValue("TOH_SOURCE"); if (source == null || source =="") { source = tiiGetQueryParamValue("toh_source"); } if (source != null && source !="") { form.TOH_SOURCE.value = source; } if (form.FNAME.value == "" ){ error += "Please enter a valid first name.\n"; } if (form.LNAME.value == "" ){ error += "Please enter a valid last name.\n"; } if (!isValidEmail(form.email.value)){ error += "Please enter a valid e-mail address.\n"; } if (form.zip.value == "" ){ error += "Please enter a valid zip code.\n"; } if (!form.sub[0].checked && !form.sub[1].checked && !form.sub[2].checked && !form.sub[3].checked && !form.sub[4].checked) { error += "Please select at least one newsletter.\n"; } if (error != "") { error += "\nThank You,\n"; error += "This Old House\n"; } if (error != "") { alert(error); return false; } return true; } function validateMHINewsletterSignup(form) { var error = ""; form.email.value=tiiGetQueryParamValue("email"); var thanksUrl = form.re.value; if (form.sub.checked) { form.TOH_SOURCE.value = 'TOH'; } else { form.TOH_SOURCE.value = ''; } if (!form.sub.checked) { error += "Please select the newsletter.\n"; } if (error != "") { error += "\nThank You,\n"; error += "This Old House\n"; } if (error != "") { alert(error); return false; } return true; } function tiiGetQueryParamValue(param) { var startIndex; var endIndex; var valueStart; var qs = document.location.search; var detectIndex = qs.indexOf( "?" + param + "=" ); var detectIndex2 = qs.indexOf( "&" + param + "=" ); var key = "&" + param + "="; var keylen = key.length; if (qs.length > 1) { if (detectIndex != -1) { startIndex = detectIndex; } else if (detectIndex2 != -1) { startIndex = detectIndex2; } else { return null; } valueStart = startIndex + keylen; if (qs.indexOf("&", valueStart) != -1) { endIndex = qs.indexOf("&", startIndex + 1) } else { endIndex = qs.length } return (qs.substring(qs.indexOf("=", startIndex) + 1, endIndex)); } return null; } function paramExists(param) { if(document.location.search.indexOf(param)>-1) return true; else return false; } //Tacoda var tcdacmd="dt"; var adConfig = new TiiAdConfig("3475.toh"); adConfig.setCmSitename("cm.toh"); //Revenue Science adConfig.setRevSciTracking(true); if ( document.referrer.indexOf("cnn")>=0 || paramExists("partner") || paramExists("no_popup") ) { adConfig.setPopups(false); } //Make my homepage $(window).load(function(){TIMEINC.makeThisMyHomepage("#make_homepage a","http://www.thisoldhouse.com/toh");});