/*******************************************************************************************
 * isEmailAddr
 * Written by Christian Heilmann (http://icant.co.uk)
 * Check that the email address matches the correct basic format
 * Parameters: string str
 * Example:	isEmailAddr('1@1.com');
 *******************************************************************************************/

function isEmailAddr (str) {
  var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;
  return re.test(str);
}


/*******************************************************************************************
 * isValidDate
 * Written by Chris Hogben (http://www.codetoad.com)
 * Check that the date is valid
 * Example:	isValidDate(30, 1, 2005);
 *******************************************************************************************/

function isValidDate (day, month, year) {
  month--; // JavaScript takes January as "0"
  var dteDate = new Date(year, month, day);
  return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
}


/*******************************************************************************************
 * swapTerms
 * Written by Daniel Course
 * If the browser can support javascript it will put the terms into a widget and show/hide
 *******************************************************************************************/

function swapTerms () {
  var a = document.getElementById("termsContainer");
  var newStyle = 'jsTerms';
  var oldStyle = 'jsTermsSwitch';
  if (cssjs('check', a, 'jsTermsSwitch')) {
    newStyle = 'jsTerms';
    oldStyle = 'jsTermsSwitch';
  }
  cssjs ('swap', a, newStyle, oldStyle);
}

document.write('<style type="text/css" media="screen">');
document.write('<!-- ');
document.write('.jsTerms {');
document.write('    display: none;');
document.write('}');
document.write('.jsTermsSwitch {');
document.write('    height: 140px;');
document.write('    overflow: auto;');
document.write('}');
document.write('-->');
document.write('<\/style>');


function swapEmailPassword () {
  var b = document.getElementById("forgotPassEmailContainer");
  var newStyle1 = 'jsEmailPassword';
  var oldStyle1 = 'jsEmailPasswordSwitch';
  if (cssjs('check', b, 'jsEmailPasswordSwitch')) {
    newStyle1 = 'jsEmailPassword';
    oldStyle1 = 'jsEmailPasswordSwitch';
  }
  cssjs ('swap', b, newStyle1, oldStyle1);
}

document.write('<style type="text/css" media="screen">');
document.write('<!-- ');
document.write('.jsEmailPassword {');
document.write('    display: none;');
document.write('}');
document.write('.jsEmailPasswordSwitch {');
document.write('    height: 135px;');
document.write('    overflow: auto;');
document.write('}');
document.write('-->');
document.write('<\/style>');
	
function swapMoreMums () {
  var c = document.getElementById("moreMumsContainer");
  var newStyle2 = 'jsMoreMums';
  var oldStyle2 = 'jsMoreMumsSwitch';
  if (cssjs('check', c, 'jsMoreMumsSwitch')) {
    newStyle2 = 'jsMoreMums';
    oldStyle2 = 'jsMoreMumsSwitch';
  }
  cssjs ('swap', c, newStyle2, oldStyle2);
}

document.write('<style type="text/css" media="screen">');
document.write('<!-- ');
document.write('.jsMoreMums {');
document.write('    display: none;');
document.write('}');
document.write('.jsMoreMumsSwitch {');
//document.write('    height: 130px;');
document.write('    overflow: auto;');
document.write('}');
document.write('-->');
document.write('<\/style>');


/*******************************************************************************************
 * AJAX Forms Support
 * Version: 1.3
 * Written by Petr Krojzl (krojzl@gmail.com)
 *******************************************************************************************/

var AJAXforms = new Object();

function getAJAXform (formID) {
  if (typeof AJAXforms[formID] === 'undefined')
    AJAXforms[formID] = new AJAXform();
  return(AJAXforms[formID]);
}

function AJAXform () {
  // list of public methods
  this.ajaxsubmit = AJAXsubmit;
	
  // main object property
  var AJAXvars = new Object();
  AJAXvars['onsubmit'] = '';
  AJAXvars['request'] = AJAXgetRequest();
  var ajaxfinish = AJAXhardSubmit;

  // return HTTPrequest object
  function AJAXgetRequest () {
    try {
      return(new ActiveXObject('Msxml2.XMLHTTP'));
    } catch (e) {
      try {
        return(new ActiveXObject('Microsoft.XMLHTTP'));
      } catch (e) {
        try {
          return(new XMLHttpRequest());
        } catch (e) {
          try {
            return(window.createRequest());
          } catch (e) {
            return(false);
          }
        }
    }
}
}

// submit the form
function AJAXsubmit (formname, formpath, formproc, formerrbox, formerrcont, func) {
  AJAXvars['name'] = formname;
  AJAXvars['path'] = formpath;
  AJAXvars['proc'] = formproc;
  AJAXvars['errBox'] = formerrbox;
  AJAXvars['errCont'] = formerrcont;
  AJAXvars['onsubmit'] = document.getElementById(AJAXvars['name']).onsubmit;
  if (!(typeof func === 'undefined'))
    ajaxfinish = func;

  if (AJAXvars['request'] === false) {
    // submit the form with reload
    ret = true;
  } else {
    // try to validate the form through AJAX request
    ret = false;
    AJAXshowProces();
    AJAXvars['request'].open('POST', AJAXvars['path'], true);
    try {
      AJAXvars['request'].setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    } catch (e) {}
    AJAXvars['request'].onreadystatechange = AJAXcom;
    url = 'ajaxaccess='+AJAXvars['name']+AJAXgetFormData();
    try {
      AJAXvars['request'].send(url);
    } catch (e) {
      try {
        netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
        mystr = Components.classes['@mozilla.org/supports-string;1'].createInstance(Components.interfaces.nsISupportsWString);
        mystr.data = url;
        AJAXvars['request'].send(mystr);
      } catch (e) {
        ret = true;
      }
    }
  }
  return(ret);
}

// show processing widget, hide alternative, turn off form submit functionality
function AJAXshowProces () {
  if (document.getElementById(AJAXvars['proc']) != null)
    document.getElementById(AJAXvars['proc']).style.visibility = 'visible';
  if (document.getElementById(AJAXvars['proc']+'alt') != null)
    document.getElementById(AJAXvars['proc']+'alt').style.visibility = 'hidden';
  document.getElementById(AJAXvars['name']).onsubmit = function () {
    return(false);
  };
}

// hide processing widget, show alternative, turn on form submit functionality
function AJAXhideProces () {
  if (document.getElementById(AJAXvars['proc']) != null)
    document.getElementById(AJAXvars['proc']).style.visibility = 'hidden';
  if (document.getElementById(AJAXvars['proc']+'alt') != null)
    document.getElementById(AJAXvars['proc']+'alt').style.visibility = 'visible';
  document.getElementById(AJAXvars['name']).onsubmit = AJAXvars['onsubmit'];
}

// load all form data into URL encoded string
function AJAXgetFormData () {
  url = '';
  for (i=0; i<document.getElementById(AJAXvars['name']).elements.length; i++) {
    obj = document.getElementById(AJAXvars['name']).elements[i];
    formObjTag = obj.tagName.toLowerCase();
    if (formObjTag == 'input') {
      formObjType = obj.type.toLowerCase();
      if (formObjType == 'checkbox') {
        if (obj.checked)
          url += '&' + AJAXmyEscape(obj.name) + '=1';
      } else if (formObjType == 'radio') {
        if (obj.checked)
          url += '&' + AJAXmyEscape(obj.name) + '=' + AJAXmyEscape(obj.value);
      } else {
        url += '&' + AJAXmyEscape(obj.name) + '=' + AJAXmyEscape(obj.value);
      }
    } else if (formObjTag == 'textarea') {
      url += '&' + AJAXmyEscape(obj.name) + '=' + AJAXmyEscape(obj.value);
    } else if (formObjTag == 'select') {
      val = '';
      for (j=0; j<obj.options.length; j++) {
        if (obj.options[j].selected) {
          if (val != '')
            val += '%2C';
          val += AJAXmyEscape(obj.options[j].value);
        }
      }
      url += '&' + AJAXmyEscape(obj.name) + '=' + val;
    }
  }
  return(url);
}

// URL encoding method
function AJAXmyEscape (str) {
  if (typeof window.encodeURIComponent === 'undefined')
    return(escape(str));
  else
    return(encodeURIComponent(str));
}

// turn on form submit functionality and submit the form
function AJAXhardSubmit () {
  document.getElementById(AJAXvars['name']).onsubmit = AJAXvars['onsubmit'];
  document.getElementById(AJAXvars['name']).submit();
}

// AJAX processing method
function AJAXcom () {
  try {
    if (AJAXvars['request'].readyState == 4) {
      // if process is ready
      if (AJAXvars['request'].status == 200) {
        // if there is no error while processing
        if (AJAXvars['request'].responseText == 'OK') {
          // if form validation was successful
          ajaxfinish();
        } else {
          // if form validation was unsuccessful
          try {
            // parse through JSON response
            response = eval('('+AJAXvars['request'].responseText+')');
            // show errors list
            document.getElementById(AJAXvars['errCont']).innerHTML = response.errors;
            document.getElementById(AJAXvars['errBox']).style.display = 'block';
            // style form elements with errors
            for (i=0; i<response.fields.length; i++) {
              if (document.getElementById(response.fields[i].name) != null) {
                if (response.fields[i].err == "1") {
                  document.getElementById(response.fields[i].name).className = 'error';
                  document.getElementById(response.fields[i].name).style.className = 'error';
                } else {
                  document.getElementById(response.fields[i].name).className = '';
                  document.getElementById(response.fields[i].name).style.className = '';
                }
              }
            }
            AJAXhideProces();
          } catch (e) {
            // submit the form with reload
            AJAXhardSubmit();
          }
        }
      } else if ((AJAXvars['request'].status == 500) || (AJAXvars['request'].status == 503)) {
        // if there is error while processing
        // submit the form with reload
        AJAXhardSubmit();
      }
    }
  } catch (e) {
    // submit the form with reload
    AJAXhardSubmit();
  }
}
}



/*******************************************************************************************
 * AddAutoChecker
 * 
 * if certains boxes are filled 'kindly' opt them in...
 *******************************************************************************************/

function RunAutoChecker(psd_obj,e){
  var keynum;
  var keychar;
  var numcheck;

  /* -------- Not needed at the mo
		if(window.event){ //IE
		  keynum = e.keyCode;
		 }
		else if(e.which){ // Netscape/Firefox/Opera
		  keynum = e.which;
	  	}
---------- */

  var OptinObj = document.getElementById(psd_obj.id+'Optin');

  if(psd_obj.value.length > 0){
    if(OptinObj.checked != true){
      OptinObj.checked = true;
    }
  }else{
    if(OptinObj.checked != false){
      OptinObj.checked = false;
    }
  }
}


function AddAutoChecker(){
  var phone = document.getElementById('fldPhone');
  var mobile = document.getElementById('fldMobile');
  var email = document.getElementById('fldEmail');
  var address = document.getElementById('fldAddress1');
				
				
  phone.onkeyup = function(event){
    return RunAutoChecker(this,event);
  }
  mobile.onkeyup = function(event){
    return RunAutoChecker(this,event);
  }
  email.onkeyup = function(event){
    return RunAutoChecker(this,event);
  }
  address.onkeyup = function(event){
    return RunAutoChecker(this,event);
  }
				
}

