/*******************************************************************************************
 * 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); }
				
		}
