/*
 * 19/1/2010 Changed size of forgot password container to 200px from 135px
 *
 */

/*******************************************************************************************
 * 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: 200px;');
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();
    }
}
}

