function cloneAddress(form) {
  var map = {
    "primary_address_street": "alt_address_street",
    "primary_address_city" : "alt_address_city",
    "primary_address_state" : "alt_address_state",
    "primary_address_postalcode": "alt_address_postalcode",
    "owner_first_name_c": "first_name",
    "owner_last_name_c": "last_name"
  }
    
  for (var key in map) {
    if (form[key] && form[map[key]]) {
      if (form[key].options && form[map[key]].options) {
        form[map[key]].selectedIndex = form[key].selectedIndex;
      }
      else {
        form[map[key]].value = form[key].value;
      }
    }
  }
  /*
  var prefix = "Warranty_",
  e = form.elements;
  for(var i=0;i<e.length;i++) {
    if(e[prefix + e[i].name]) {
      if (e[i].options && e[prefix + e[i].name].options) {
        e[i].selectedIndex = e[prefix + e[i].name].selectedIndex;
      }
      else {
        e[i].value = e[prefix + e[i].name].value;
      }
    }
  }
  */
}

function validateContactRequest(form){

  // checks the required fileds for the payment form
	if (isNotEmpty(form.FirstName)) {
		if (isNotEmpty(form.LastName)) {
//			if (isNotEmpty(form.TelephoneHome)==true || isNotEmpty(form.TelephoneWork)==true) {
//				if (isPhoneNumber(form.TelephoneHome) || isPhoneNumber(form.TelephoneWork)){
          if (isValidRadio(form.AddressType)) {
            if (isNotEmpty(form.City)) {
              if (isNotEmpty(form.State)) {
                if (isNotEmpty(form.Zip)) {
                  if (isEMailAddr(form.EmailAddress)) {
                    if (isNotEmpty(form.campaignId)) {
                      return true;
                    }
                  }
                }
              }
            }
          }
			//	}
		//	}
		}
	}
	return false;
}

function validateNewroofWarrantyRegistration(form){
  if (!form.getAttribute("doNotSubmit")) {
    // checks the required fileds for the payment form
    if (isNotEmpty(form.Warranty_FirstName)) {
      if (isNotEmpty(form.Warranty_LastName)) {
        if (isNotEmpty(form.Warranty_Address)) {
          if (isNotEmpty(form.Warranty_City)) {
            if (isNotEmpty(form.Warranty_State)) {
              if (isNotEmpty(form.Warranty_Zip)) {
                if (isNotEmpty(form.Mailing_FirstName)) {
                  if (isNotEmpty(form.Mailing_LastName)) {
                    if (isNotEmpty(form.StreetAddress1)) {
                      if (isNotEmpty(form.City)) {
                        if (isNotEmpty(form.State)) {
                          if (isNotEmpty(form.Zip)) {
                            if (isNotEmpty(form.FirstName)) {
                              if (isNotEmpty(form.LastName)) {
                                if (isNotEmpty(form.TelephoneNumber)) {
                                  if (isPhoneNumber(form.TelephoneNumber)) {
                                    if (isNotEmpty(form.EmailAddress)) {
                                      if (isEMailAddr(form.EmailAddress)) {
                                        if (isNotEmpty(form.Builder)) {
                                          if (isNotEmpty(form.DateofPurchase)) {
                                            if (isChecked(form.InstalledbyPD, "Please confirm that your roof was installed by Petersen-Dean.")) {
                                              if (isChecked(form.wf_IAgree1, "You must agree to the Terms and Conditions before submitting.")) {
                                                return true;
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
	return false;
}

// check to see if a single checkbox is checked
function isChecked(elem, msg){
	if (elem.checked) {
		return true; 
	}else{
		alert(msg);
		setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
		return false; 
	}
}


// validates if the it is a phone number regardless of formating
function isPhoneNumber(elem){
	var str = elem.value;
	var minDigitsInIPhoneNumber = 10;
	s = str.replace(/[\(\)\.\-\ \\\/\,\+]/g, '');
	if (isNaN(parseInt(s))) {
			alert("Verify the phone number is correct. No letters can be used for phone numbers.");
			setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
			return false;
	} else {
		if (s.length < minDigitsInIPhoneNumber){
			alert("The Phone number does not have enough numbers. At least 10 numbers are required for a phone number.");
			setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
			return false;
		}else{
			elem.value = s;
			return true;
		}
	}
}

// validates that the field value string has one or more characters in it
function isNotEmpty(elem) {
  var str = elem.value;
    var re = /.+/;
    if(!str.match(re)) {
        alert( elem.name + " is a required and can not be blank.");
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        return false;
    } else {
        return true;
    }
}
//validates that the entry is a positive or negative number
function isNumber(elem) {
  var str = elem.value;
	var re = /^[-]?\d*\.?\d*$/;
	str = str.toString();
	if (!str.match(re)) {
			alert(elem.name + " can only contain numbers");
			setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
			return false;
	}
	return true;
}
// validates that the entry is a specified characters long
function isLength(elem, ilen) {
  var str = elem.value;
  var i = str.length;
	if (ilen != i) {
			alert(elem.name + " must be "+ ilen +" long, it is currently " + i +" long.");
			setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
			return false;
	} else {
			return true;
	}
}

// validates that the entry is formatted as an e-mail address
function isEMailAddr(elem) {
  var str = elem.value;
	var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
	if (!str.match(re)) {
			alert("Verify the e-mail address format.");
			setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
			return false;
	} else {
			return true;
	}
}

// validate that the user made a selection other than default
function isChosen(select) {
    if (select.selectedIndex == 0) {
        alert("Please make a choice from the list.");
        return false;
    } else {
        return true;
    }
}

// validate that the user has checked one of the radio buttons
function isValidRadio(radio) {
    var valid = false;
    for (var i = 0; i < radio.length; i++) {
        if (radio[i].checked) {
            return true;
        }
    }
    alert("Make a choice from the radio buttons.");
    return false;
}

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function focusElement(formName, elemName) {
    var elem = document.forms[formName].elements[elemName];
    elem.focus();
    elem.select();
}

