var swpArray = new Array();
swpArray[swpArray.length] = "email";
swpArray[swpArray.length] = "LastName";
swpArray[swpArray.length] = "Street1";
swpArray[swpArray.length] = "City";
swpArray[swpArray.length] = "ZipCode";
swpArray[swpArray.length] = "FirstName";
swpArray[swpArray.length] = "DayPhone";
swpArray[swpArray.length] = "State";

function validate(myForm) {
var flag = 0;
var radioError=false;
var checkboxError=false;
e = myForm.elements;
for (i=0; i<myForm.length; i++) {
if ((e[i].type == "text") && (e[i].name == "ZipCode") && !isZipCode(e[i].value)) {
alert("Please provide a valid Zip Code");
e[i].focus();
e[i].select();
return false;
} else if ((e[i].type == "text") && ((e[i].name == "DayPhone") || (e[i].name == "EvePhone")) && !isPhoneNumber(e[i].value)) {
alert("Please provide a valid Phone Number");
e[i].focus();
e[i].select();
return false;
} else if (((e[i].type == "text") && (e[i].name == "City")) && (!noNumbers(e[i].value) || EmptyString(e[i].value))) {
alert("Please provide a valid value for City");
e[i].focus();
e[i].select();
return false;
} else if (((e[i].type == "text") && (e[i].name == "FirstName")) && (!noNumbers(e[i].value) || EmptyString(e[i].value))) {
alert("Please provide a valid value for First Name");
e[i].focus();
e[i].select();
return false;
} else if (((e[i].type == "text") && (e[i].name == "LastName")) && (!noNumbers(e[i].value) || EmptyString(e[i].value))) {
alert("Please provide a valid value for Last Name");
e[i].focus();
e[i].select();
return false;
}
for (j=0;j<swpArray.length;j++) {
if (e[i].name==swpArray[j]) {
if (((e[i].type == "text") || (e[i].type == "textarea")) && ((e[i].value == null) || EmptyString(e[i].value))) {
alert("Missing required field: "+ swpArray[j]);
e[i].focus();
e[i].select();
return false;
}
if (e[i].type == "radio") {
if (e[i].name==swpArray[j]) {
if(testradio(e[i].name,myForm)) {
radioError=true;
}
}
}
if (e[i].type == "checkbox") {
if (e[i].name==swpArray[j]) {
if(testcheckbox(e[i].name,myForm)) {
checkboxError=true;
}
}
}
if ((e[i].type == "select-one") || (e[i].type == "select-multiple")) {
var iSel = e[i].selectedIndex;
if (iSel != -1) {
if (e[i].options[iSel].value == null || (e[i].options[iSel].value == "")) {
alert("Missing required field: " + swpArray[j]);
return false;
}
} else {
alert("Missing required field: " + swpArray[j]);
return false;
}
}
}
}
if ((e[i].name == "email") && (ValidEmail(e[i].value) == false)) {
alert("Please provide a valid email address.");
e[i].focus();
e[i].select();
return false;
}

}
if (radioError || checkboxError) {
alert("Missing required answer for question");
return false;
}

var mag_sel = "none";
for (var i=0; i < document.myForm.sub_optin.length; i++){
   		if (document.myForm.sub_optin[i].checked){
 	     mag_sel = document.myForm.sub_optin[i].value;
     	}
}
if(mag_sel == "none"){
alert("Please tell us what to do with your Free Preview Issue");
return false;
}
return true;
}

function testradio(radioname,formdata) {
var els=formdata.elements;
var radioerror=true;
for(var i=0;i<formdata.length;i++) {
if(els[i].type=="radio") {
if (els[i].name==radioname) {
if(els[i].checked==true) {
radioerror=false;
}
}
}
}
return radioerror;
}

function testcheckbox(checkboxname,formdata) {
var els=formdata.elements;
var checkboxerror=true;
for(var i=0;i<formdata.length;i++) {
if(els[i].type=="checkbox") {
if (els[i].name==checkboxname) {
if(els[i].checked==true) {
checkboxerror=false;
}
}
}
}
return checkboxerror;
}

function ValidEmail(s) {
var Count;
var s2;

// empty or blank email
if (EmptyString(s) == true) return (false);
// email with whitespace
if (s.indexOf(' ') != -1) return (false);
// email without @
if (s.indexOf('@') == -1) return (false);
// email with @ as the 1st char
if (s.indexOf('@') == 0) return (false);
// email with @ as the last char
if ((s.indexOf('@')+1) == s.length) return (false);
// email without .
if (s.indexOf('.') == -1) return (false);
// email with . as the 1st char
if (s.indexOf('.') == 0) return (false);
// email with . as the last char
if ((s.indexOf('.')+1) == s.length) return (false);

// Now look for the first . after the first @
// s2 = string after the first @
s2=s.substring(s.indexOf('@')+1,s.length);
// email without a dot after the first @
if (s2.indexOf('.') == -1) return (false);
// email dot right after the first @
if (s2.indexOf('.') == 0) return (false);
return (true);
}

function EmptyString(s) {
var Count;
var Nblank = 0;
if (s.length == 0) return (true); // empty string
// count the number of blank chars
for (Count = 0; Count < s.length; Count++) {
if (s.charAt(Count) == " ") Nblank++;
}
if (Nblank == s.length)
return (true);
else
return (false);
}

function isPhoneNumber(s) {
if (s == "") {
return (true);
} else {
if (regExpSupported()) {
var re = /^1?\s*-?\s*\(?\s*[0-9]{3}\s*\)?\s*-?\s*[0-9]{3}\s*-?\s*[0-9]{4}$/;
return re.test(s);
} else {
for (var i = 0; i < s.length; i++) {
if (((s.charAt(i) < '0') || (s.charAt(i) > '9')) && (s.charAt(i) != '-') && (s.charAt(i) != '(') && (s.charAt(i) != ')')) return (false);
}
return (true);
}
}
}

function isZipCode(s) {
if (EmptyString(s)) {
return (false);
} else {
if (isValidUSZipCode(s) || isValidCanadianPostalCode(s)) {
return (true);
} else {
return (false);
}
}
}

function isValidUSZipCode(s) {
if ((s.length != 5) && (s.length != 10)) {
return (false);
} else {
if (regExpSupported()) {
var re = /^[0-9]{5}(-[0-9]{4})?$/;
return re.test(s);
} else {
for (var i = 0; i < s.length; i++) {
if ((s.charAt(i) < '0') || (s.charAt(i) > '9')) {
if (s.charAt(i) == '-') {
if (i != 5)
return (false);
} else {
return (false);
}
}
}
return (true);
}
}
}

function isValidCanadianPostalCode(s) {
if ((s.length != 6) && (s.length != 7)) {
return (false);
} else {
if (regExpSupported()) {
var re = /^[a-z|A-Z]{1}\d{1}[a-z|A-Z]{1}\-?\d{1}[a-z|A-Z]{1}\d{1}$/;
return re.test(s);
} else {
for (var i = 0; i < s.length; i++) {
if ((s.charAt(i) < '0') || (s.charAt(i) > '9')) {
if (s.charAt(i) == '-') {
if (i != 3)
return (false);
} else {
if ((i != 0) && (i != 2)) {
if (s.charAt(3) == '-') {
if ((i != 5) || ((s.charAt(i) < 'A') || ((s.charAt(i) > 'Z') && ((s.charAt(i) < 'a') || (s.charAt(i) > 'z')))))
return (false);
} else {
if ((i != 4) || ((s.charAt(i) < 'A') || ((s.charAt(i) > 'Z') && ((s.charAt(i) < 'a') || (s.charAt(i) > 'z')))))
return (false);
}
} else {
if ((s.charAt(i) < 'A') || ((s.charAt(i) > 'Z') && ((s.charAt(i) < 'a') || (s.charAt(i) > 'z'))))
return (false);
}
}
} else {
if (s.charAt(3) == '-') {
if ((i != 1) && (i != 4) && (i != 6))
return (false);
} else {
if ((i != 1) && (i != 3) && (i != 5))
return (false);
}
}
}
return (true);
}
}
}

function noNumbers(s) {
if (s == "") {
return (true);
} else {
if (regExpSupported()) {
var re = /^[^0-9]+$/;
return re.test(s);
} else {
for (var i = 0; i < s.length; i++) {
if ((s.charAt(i) >= '0') && (s.charAt(i) <= '9')) return (false);
}
return (true);
}
}
}

function regExpSupported() {
if (window.RegExp)
{
var tempStr = "a";
var tempReg = new RegExp(tempStr);
if (tempReg.test(tempStr))
{ return true; }
}
return false;
}