function validateAtLeastOneChecked( frm, field_name, custErr ) {
 var checkboxes_checked = 0;
 for (i=0; i< frm.elements.length; i++) {
   if (frm.elements[i].name == field_name) {
     if (frm.elements[i].checked) {
    checkboxes_checked = 1;
  }
   }
 }
 if (checkboxes_checked == 0) {
   return '-> ' + custErr + "\n";
 } else {
  return '';
 }
}

function validateEmail(email) {
 var emailPat=/^(.+)@(.+)$/;
 var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
 var validChars="\[^\\s" + specialChars + "\]";
 var quotedUser="(\"[^\"]*\")";
 var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
 var atom=validChars + '+';
 var word="(" + atom + "|" + quotedUser + ")";
 var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
 var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
 var matchArray=email.match(emailPat);

 if (matchArray==null) {
  return false;
}

 var user=matchArray[1];
 var domain=matchArray[2];

 if (user.match(userPat)==null) {
  return false;
}

 var IPArray=domain.match(ipDomainPat);
 if (IPArray!=null) {
   for (var i=1;i<=4;i++) {
     if (IPArray[i]>255) {
    return false;
  }
   }
  return true;
 }

 var domainArray=domain.match(domainPat);
 if (domainArray==null) {
  return false;
}

 var atomPat=new RegExp(atom,"g");
 var domArr=domain.match(atomPat);
 var len=domArr.length;
 if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) {
  return false;
}

 if (len<2) {
  return false;
}

 return true;
}

  function validateData(strValidateStr,objValue,custErr) {
 var strErr = '';
 var epos = strValidateStr.search("=");
 var command  = "";
 var cmdvalue = "";
 if(epos >= 0) {
  command  = strValidateStr.substring(0,epos);
  cmdvalue = strValidateStr.substr(epos+1);
} else {
  command = strValidateStr;
 }

 switch(command) {

 case "req": case "required": {
   if (eval(objValue.value.length) == 0) {
     if (!custErr || custErr.length == 0) {
    strErr = '-> ' + objValue.name + " : Required Field.\n";
  } else {
    strErr = '-> ' + custErr + "\n";
   }
   }
  break;
 }

 case "maxlength":
 case "maxlen": {
   if (eval(objValue.value.length) >  eval(cmdvalue)) {
     if (!custErr || custErr.length == 0) {
    strErr = '-> ' + objValue.name + " : "+cmdvalue+" characters maximum."
           + "\n       [Current length = " + objValue.value.length + " ].\n";
  } else {
    strErr = '-> ' + custErr + "\n";
   }
   }
  break;
 }

 case "minlength": 
 case "minlen": {
   if (eval(objValue.value.length) <  eval(cmdvalue)) {
     if (!custErr || custErr.length == 0) {
    strErr = '-> ' + objValue.name + " : " + cmdvalue + " characters minimum."
           + "\n       [Current length = " + objValue.value.length + " ].\n";
  } else {
    strErr = '-> ' + custErr + "\n";
   }
   }
  break;
 }

 case "alnum":
 case "alphanumeric": {
  var charpos = objValue.value.search("[^A-Za-z0-9]");
  if (objValue.value.length > 0 &&  charpos >= 0) {
    if (!custErr || custErr.length == 0) {
    strErr = objValue.name+": Only alpha-numeric characters allowed."
           + "\n       [Error character position " + eval(charpos+1)+"].";
  } else {
    strErr = '-> ' + custErr + "\n";
   }
  }
  break; 
 }

 case "num": 
 case "numeric": {
  var charpos = objValue.value.search("[^0-9]");
  if (objValue.value.length > 0 &&  charpos >= 0) {
    if (!custErr || custErr.length == 0) {
    strErr = '-> ' + objValue.name+": Only digits allowed "
           + "\n       [Error character position " + eval(charpos+1)+"].\n";
  } else {
    strErr = '-> ' + custErr + "\n";
   }
  }
  break;
 }

 case "alphabetic":
 case "alpha": {
  var charpos = objValue.value.search("[^A-Za-z]");
  if (objValue.value.length > 0 &&  charpos >= 0) {
    if (!custErr || custErr.length == 0) {
    strErr = '-> ' + objValue.name+": Only alphabetic characters allowed"
           + "\n       [Error character position " + eval(charpos+1)+"].\n";
  } else {
    strErr = '-> ' + custErr + "\n";
   }
  }
  break; 
 }

 case "email": {
   if (!validateEmail(objValue.value,strErr)) {
     if (!custErr || custErr.length == 0) {
    strErr = '-> ' + objValue.name+": Enter a valid Email address.\n";
  } else {
    strErr = '-> ' + custErr + "\n";
   }
   }
  break;
 }

 case "lt": 
 case "lessthan": {
   if (isNaN(objValue.value)) {
   strErr = strError + '-> ' + objValue.name+": Should be a number.\n";
 } else {
   if (eval(objValue.value) >=  eval(cmdvalue)) {
     if (!custErr || custErr.length == 0) {
     strErr = '-> ' + objValue.name
            + " : value should be less than "+ cmdvalue +".\n";
   } else {
     strErr = '-> ' + custErr + "\n";
    }
   }
  }
  break;
 }

 case "gt": 
 case "greaterthan": {
   if (isNaN(objValue.value)) {
   strErr = '-> ' + objValue.name+": Should be a number.\n";
 } else {
   if (eval(objValue.value) <=  eval(cmdvalue)) {
     if (!custErr || custErr.length == 0) {
     strErr = '-> ' + objValue.name
            + " : value should be greater than " + cmdvalue + ".\n";
   } else {
     strErr = '-> ' + custErr + "\n";
    }
   }
  }
  break;
 }

 case "regexp": {
   if (!objValue.value.match(cmdvalue))  {
     if (!custErr || custErr.length == 0) {
    strErr = '-> ' + objValue.name+": Invalid characters found.\n";
  } else {
    strErr = '-> ' + custErr + "\n";
   }
   }
  break;
 }

 case "notregexp": case "!regexp": {
   if (objValue.value.match(cmdvalue)) {
     if (!custErr || custErr.length == 0) {
    strErr = '-> ' + objValue.name+": Invalid characters found.\n";
  } else {
    strErr = '-> ' + custErr + "\n";
   }
   }
  break;
 }

 case "dontselect": {
   if (objValue.selectedIndex == null) {
   alert("BUG: dontselect command for non-select Item");
 } else {
   if (objValue.selectedIndex == eval(cmdvalue)) {
     if (!custErr || custErr.length == 0) {
     strErr = '-> ' + objValue.name+": Please Select one option.\n";
   } else {
     strErr = '-> ' + custErr + "\n";
    }
   }
  }
  break;
 }

}
 return strErr;
}

  function validateForm(objFrm,arrObjDesc) {
 var strErr = '';
 for(var itrobj=0; itrobj < arrObjDesc.length; itrobj++) {
  var strErr_element = '';
  if(objFrm.elements.length <= itrobj)  { 
   alert("BUG: Obj descriptor for a non existent form element"); 
   return false; 
 }
  for (var itrdesc=0; itrdesc < arrObjDesc[itrobj].length ;itrdesc++) {
    if (strErr_element != '') {
    break;
  }
   strErr_element = validateData( arrObjDesc[itrobj][itrdesc][0],
                                  objFrm[itrobj],
                                  arrObjDesc[itrobj][itrdesc][1] );
  }
  strErr = strErr + strErr_element;
}
 return strErr;
}

//-- if using this method, you must specify the validation array
//-- in reverse order as well
  function validateFormReverse(objFrm,arrObjDesc) {
 var strErr = '';
 for(var itrobj=0; itrobj < arrObjDesc.length; itrobj++) {
  var strErr_element = '';
  if(objFrm.elements.length <= itrobj)  { 
   alert("BUG: Obj descriptor for a non existent form element"); 
   return false; 
 }
  for (var itrdesc=0; itrdesc < arrObjDesc[itrobj].length ;itrdesc++) {
    if (strErr_element != '') {
    break;
  }
   strErr_element = validateData( arrObjDesc[itrobj][itrdesc][0],
                                  objFrm[objFrm.length-1-itrobj],
                                  arrObjDesc[itrobj][itrdesc][1] );
  }
  strErr = strErr + strErr_element;
}
 return strErr;
}

  function displayErrors( header, strErr ) {
    if ((strErr) && (strErr.length > 0)) {
  alert( header + "\n" + strErr );
  return true;
} else {
  return false;
 }
  }
      function submit_new() {
      var validation_array = [];
      var default_validation = [];

      default_validation['email'] = [
        ['required','You must enter your email address in order to signup.'],
        ['email',   'Your email address appears to be invalid.']
      ];

      default_validation['gender'] = [
      ];

      default_validation['first_name'] = [
      ];

      default_validation['last_name'] = [
      ];

      default_validation['age'] = [
        [ "regexp=^(|1[3-9]|[2-9][0-9][0-9]?)$",
          "Your have entered an invalid age. (13+ and digits only)" ]
      ];

      default_validation['zip'] = [
      ['regexp=^(|[0-9A-Za-z -.][0-9A-Za-z -.][0-9A-Za-z -.][0-9A-Za-z -.]*)$',
       'Your postal code appears to be invalid.']
      ];

      // loop through list ids looking for list ids that require more
      for (var i=0;i<document.foca_pop.elements.length;i++) {
        if (document.foca_pop.elements[i].name == 'list_id' &&
            document.foca_pop.elements[i].checked == true) {

          // harris
          if (document.foca_pop.elements[i].value == 2839
              || document.foca_pop.elements[i].value == 2840
              || document.foca_pop.elements[i].value == 4131) {

            default_validation['zip'].unshift(
              ['required', "Please enter your zip code."]
            );

            default_validation['age'].unshift(
              ['required', "Please enter your age"]
            );

            default_validation['gender'].unshift(
              ['dontselect=0', "Please select your gender."]
            );

          }

        }

      }

      for (var i=0;i<document.foca_pop.elements.length;i++) {

        if (default_validation[document.foca_pop.elements[i].name]) {
          validation_array[i] =
            default_validation[document.foca_pop.elements[i].name];
        } else {
          validation_array[i] = [];
        }

      }

      var strErr = validateForm(document.foca_pop,validation_array);

      strErr = strErr + validateAtLeastOneChecked(document.foca_pop,'list_id',
                        'Please select at least one list.' );

      if (displayErrors( 'There were problems with your request:'      + "\n" +
                     '===========================================', strErr)) {
        return false;
      } else {
        return true;
      }
    }


var NA = null;

function UserInfo() {
  this.appCodeName = NA; this.appName = NA; this.appVersion = NA;
  this.platform = NA; this.cookiesEnabled = NA; this.javaEnabled = NA;

  /* Navigator object properties ************************************/

  if (top.navigator.appCodeName != null)  // get browser code name
    this.appCodeName = navigator.appCodeName;

  if (top.navigator.appName != null)  // get browser app name
    {
    if (navigator.userAgent.indexOf("Opera") != -1)
      this.appName = "Opera";
    else
      this.appName = navigator.appName;
    }

  if (top.navigator.appVersion != null)  // get browser version number
    {
    this.appVersion = navigator.appVersion;
    var index = this.appVersion.indexOf(" ");
    this.appVersion = this.appVersion.substring(0,index);
    if (this.appName.indexOf("Internet") != -1)
      {
      if (top.navigator.userAgent.indexOf("5.0") != -1)
        this.appVersion = "5.0";
      }
    }

}

var user = new UserInfo();

if ( ((  (user.appCodeName.toLowerCase().indexOf("mozilla") != -1)
      || (user.appName.toLowerCase().indexOf("netscape") != -1))
      && (parseInt(user.appVersion) >= 5))
    ||
     (   (user.appName.toLowerCase().indexOf("internet") != -1)
      && (parseInt(user.appVersion) >= 4))) {
  document.write( '<table cellspacing=0 cellpadding="0" border="0" bgcolor="#6699ff" ' );
  document.write( 'height="600" width="120"> ' );
  document.write( '<form target=_blank method="POST" action="http://www.focalex.com/subscriber/subscribe.mpl/246696" onsubmit="return submit_new();" name="foca_pop"> ' );
  document.write( '<input type=hidden name="affiliate_id" value="246696"> ' );
  document.write( '<input type=hidden name="gatherer_id" value="default"> ' );
  document.write( '<input type=hidden name="form_type" value="skyscraper"> ' );
  document.write( '<input type=hidden name="form_version" value="family_1.2"> ' );
  document.write( '<input type=hidden name="country_code_guess" value="US"> ' );
  document.write( '  <tr> ' );
  document.write( '    <td align=center> ' );
  document.write( '    <img src="http://img.focalex.com/images/affiliate/ban/top_120_blue.gif" width="118" border="0" border="0"> ' );
  document.write( '    </td> ' );
  document.write( '  </tr> ' );
  document.write( '  <tr> ' );
  document.write( '    <td align=center valign="middle"> ' );
  document.write( '      <table border=0 cellspacing="0" cellpadding="0" ' );
  document.write( '      bgcolor="#ffffff"> ' );
  document.write( '     ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap> ' );
  document.write( '            <font color="#000000" face="Arial,Helvetica" size="1" ' );
  document.write( '            style="font-size:8pt;"> ' );
  document.write( '            <input type=checkbox name="list_id" value="155" checked> ' );
  document.write( '            Parenting</font> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap> ' );
  document.write( '            <font color="#000000" face="Arial,Helvetica" size="1" ' );
  document.write( '            style="font-size:8pt;"> ' );
  document.write( '            <input type=checkbox name="list_id" value="369" checked> ' );
  document.write( '            Kid Stuff</font> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap> ' );
  document.write( '            <font color="#000000" face="Arial,Helvetica" size="1" ' );
  document.write( '            style="font-size:8pt;"> ' );
  document.write( '            <input type=checkbox name="list_id" value="367"> ' );
  document.write( '            Arts/Crafts</font> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap> ' );
  document.write( '            <font color="#000000" face="Arial,Helvetica" size="1" ' );
  document.write( '            style="font-size:8pt;"> ' );
  document.write( '            <input type=checkbox name="list_id" value="368"> ' );
  document.write( '            Baby</font> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap> ' );
  document.write( '            <font color="#000000" face="Arial,Helvetica" size="1" ' );
  document.write( '            style="font-size:8pt;"> ' );
  document.write( '            <input type=checkbox name="list_id" value="284"> ' );
  document.write( '            Decorating</font> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap> ' );
  document.write( '            <font color="#000000" face="Arial,Helvetica" size="1" ' );
  document.write( '            style="font-size:8pt;"> ' );
  document.write( '            <input type=checkbox name="list_id" value="22"> ' );
  document.write( '            Divorced</font> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap> ' );
  document.write( '            <font color="#000000" face="Arial,Helvetica" size="1" ' );
  document.write( '            style="font-size:8pt;"> ' );
  document.write( '            <input type=checkbox name="list_id" value="374"> ' );
  document.write( '            DIY</font> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap> ' );
  document.write( '            <font color="#000000" face="Arial,Helvetica" size="1" ' );
  document.write( '            style="font-size:8pt;"> ' );
  document.write( '            <input type=checkbox name="list_id" value="169"> ' );
  document.write( '            Housewares</font> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap> ' );
  document.write( '            <font color="#000000" face="Arial,Helvetica" size="1" ' );
  document.write( '            style="font-size:8pt;"> ' );
  document.write( '            <input type=checkbox name="list_id" value="323"> ' );
  document.write( '            Marriage</font> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap> ' );
  document.write( '            <font color="#000000" face="Arial,Helvetica" size="1" ' );
  document.write( '            style="font-size:8pt;"> ' );
  document.write( '            <input type=checkbox name="list_id" value="274"> ' );
  document.write( '            Single Parent</font> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap> ' );
  document.write( '            <font color="#000000" face="Arial,Helvetica" size="1" ' );
  document.write( '            style="font-size:8pt;"> ' );
  document.write( '            <input type=checkbox name="list_id" value="213"> ' );
  document.write( '            Pers. Finance</font> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap> ' );
  document.write( '            <font color="#000000" face="Arial,Helvetica" size="1" ' );
  document.write( '            style="font-size:8pt;"> ' );
  document.write( '            <input type=checkbox name="list_id" value="254"> ' );
  document.write( '            Special Offers</font> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap> ' );
  document.write( '            <font color="#000000" face="Arial,Helvetica" size="1" ' );
  document.write( '            style="font-size:8pt;"> ' );
  document.write( '            <input type=checkbox name="list_id" value="174"> ' );
  document.write( '            Sports</font> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '         ' );
  document.write( '        <tr> ' );
  document.write( '          <td nowrap width="100" style="padding:2px;"> ' );
  document.write( '          <table width="100%" bgcolor="blue" ' );
  document.write( '          cellspacing="0" cellpadding="0"> ' );
  document.write( '            <td valign=top><input type=checkbox name="list_id" value="2583" checked style="height:17px;"></td> ' );
  document.write( '            <td><font color="#000000" ' );
  document.write( '            face="Arial,Helvetica" size="1" style="font-size:8pt;"> ' );
  document.write( '                  Signup to <b>Offers-For-You.com</b> for great Steals & Deals ' );
  document.write( '</font> ' );
  document.write( '            </td> ' );
  document.write( '          </table> ' );
  document.write( '          </td> ' );
  document.write( '        </tr> ' );
  document.write( '         ' );
  document.write( '      </table> ' );
  document.write( '    </td> ' );
  document.write( '  </tr> ' );
  document.write( '  <tr> ' );
  document.write( '    <td align=center valign="top"> ' );
  document.write( '      <a href="http://www.focalex.com/subs.emp?aid=246696" target="_blank"><img width=118 border="0" src="http://img.focalex.com/images/affiliate/ban/more_lists_120_blue.gif"></a> ' );
  document.write( '      <font size=1 color="#000000" ' );
  document.write( '      face="Arial,Helvetica" style="font-size:8pt;"> ' );
  document.write( '      Age: <input type=text name="age" maxlength="4" size="5"> ' );
  document.write( '      <br> ' );
  document.write( '            Gender: ' );
  document.write( '      <select name=gender> ' );
  document.write( '      <option value="">-- ' );
  document.write( '      <option>F ' );
  document.write( '      <option>M ' );
  document.write( '      </select>     ' );
  document.write( ' ' );
  document.write( '      <br> ' );
  document.write( '      E-mail:<br> ' );
  document.write( '      <input type=text name="email" maxlength="50" size="10"><br> ' );
  document.write( '      Zip Code:<br> ' );
  document.write( '      <input type=text name="zip" size="5" maxlength="25"> ' );
  document.write( '      <input type=submit name="x" value="Sign Up!"><br><br> ' );
  document.write( '      <a href="http://www.focalex.com/offers.mpl?location=3&aid=246696&form_type=headline&_offer_id=41&_ad_id=145&_depth=1&_client_id=56&no_thanks=1" target="_blank"><font color="#000000">No ' );
  document.write( '      Thanks!</font></a> ' );
  document.write( '      <br> ' );
  document.write( '      <a href="http://www.focalex.com/privacy/" target="_blank"> ' );
  document.write( '      <font color="#000000">Privacy Policy</font></a> ' );
  document.write( '      <br><br> ' );
  document.write( '      <a href="http://www.focalex.com/affiliates/?pc=246696&ban=isky" target="_blank"><img src="http://img.focalex.com/images/affiliate/ban/webmasters_120_blue.gif" width="118" border="0"></a> ' );
  document.write( '      <br><br> ' );
  document.write( '    </td> ' );
  document.write( '  </tr> ' );
  document.write( '</form> ' );
  document.write( '</table> ' );
} else {
  document.write( '<iframe width="120" height="600" frameborder="0" border="0" framspacing="0" marginheight="0" marginiwdth="0" scrolling="no" vspace="0" hspace="0" src="http://www.focalex.com/code/embedded_form.mpl?type=iframe&lname=family&form_type=skyscraper&color=blue&aid=246696&gatherer_id=&target=_blank&default=">' );
  document.write( '<a href="http://www.focalex.com/subs.emp?aid=246696" target="_blank"><img src="http://img.focalex.com/images/affiliate/ban/fallback_family_120.gif" width="120" height="600" border="0"></a>' );
  document.write( '</iframe>' );
}
