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
 * <http://www.oreillynet.com/pub/a/javascript/excerpt/JSDHTMLCkbk_chap5/index5.html>
 */
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 <http://dhtmlkitchen.com/leahttp://cp.timeinc.net:8080/toh/j/setstyle/index4.jsp>
 */
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 <input> 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");});