ajax_id='inner';


function formSubmit(){
    errors = '';
    errors += checkText('signup', 'first_name', 'First name');
    errors += checkText('signup', 'last_name', 'Last name');
    errors += checkEmail('signup', 'email', 'Email');
    errors += checkMultipartPhone('signup', 'areacode', 'prefix', 'line', 'Phone Number');
    if (errors == '') {
			jQuery("div.submit").hide();
			jQuery.post('process.php', collect_form_data('signup'), function(data, textStatus, XMLHttpRequest){
                jQuery('#'+ajax_id).html(data);
            }, 'html');
	    }
	    else {
			alert(errors);
	    }


}


function postLoad(url, parameters){
    http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
        }
    }
    else
        if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch (e) {
                }
            }
        }
    if (!http_request) {
        alert('Cannot create XMLHTTP instance');
        return false;
    }

    http_request.onreadystatechange = function(){
        if (http_request.readyState == 4) {
            document.getElementById(ajax_id).innerHTML = '';
            var rtext = http_request.responseText;
            while ((index = rtext.search(/<script/i)) > -1) {
                first = rtext.substr(0, index);
                document.getElementById(ajax_id).innerHTML += first;
                script = rtext.substring(index, rtext.length);
                script = script.substring(script.search(/>/) + 1, script.length);
                rtext = script.substring(script.search(/<\/script/i) + 9, script.length);
                script = script.substring(0, script.search(/<\/script/i));
                eval(script);
            }
            document.getElementById(ajax_id).innerHTML += rtext;
        }

    }
    http_request.open('POST', url, true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", parameters.length);
    http_request.setRequestHeader("Connection", "close");
    http_request.send(parameters);
}




function collect_form_data(form_id){
    elements = document.getElementById(form_id).elements;
    total = elements.length;
    data = '';
    for (i = 0; i < total; i++) {
        switch (elements[i].type) {
            case 'text':
            case 'textarea':
            case 'hidden':
            case 'password':
                data += "&" + elements[i].name
                data += "=" + mURLEncode(elements[i].value);
                break;
            case 'radio':
                if (elements[i].checked) {
                    data += "&" + elements[i].name
                    data += "=" + elements[i].value;
                }
                break;
            case 'checkbox':
                if (elements[i].checked) {
                    data += "&" + elements[i].name
                    data += "=" + elements[i].value;
                }
                else {
                    data += "&" + elements[i].name + "=0";
                }
                break;
            case 'select-one':
                data += "&" + elements[i].name;
                data += "=" + mURLEncode(elements[i].options[elements[i].selectedIndex].value);
        }
    }
    return data.substr(1, data.length - 1);
}

function mURLEncode(sInput){
    var sAllowedChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
    'abcdefghijklmnopqrstuvwxyz-_.!~*\'()';
    var sHex = '0123456789ABCDEF';
    var sOutput = '';
    for (var i = 0; i < sInput.length; i++) {
        var c = sInput.charAt(i);
        if (c == ' ') {
            sOutput += '+';
        }
        else
            if (sAllowedChars.indexOf(c) != -1) {
                sOutput += c;
            }
            else {
                var charCode = c.charCodeAt(0);
                if (charCode > 255) {
                    alert('Sorry, no unicode support. Encoding aborted');
                    return false;
                }
                else {
                    sOutput += '%';
                    sOutput += sHex.charAt((charCode >> 4) & 0xF);
                    sOutput += sHex.charAt(charCode & 0xF);
                }
            }
    }
    return sOutput;
}

function checkText(t, L, n){
    var B = '';
    if (d(eval('document.' + t + '.' + L + '.value')) == '') {
        B = '- ' + n + ' is Required.\n';
    }
    return B;
};

function checkNum(t, L, n){
    var B = '';
    if (isNaN(eval('document.' + t + '.' + L + '.value'))) {
        B = '- ' + n + ' Should Be A Number With No Spaces.\n';
    }
    return B;
};

function checkSelect(t, I, n){
    var B = '';
    if (eval('document.' + t + '.' + I + '.selectedIndex') == 0) {
        B = '- ' + n + ' is Required.\n';
    }
    return B;
};

function checkZIP(t, L, n){
    var B = '';
    var O = d(eval('document.' + t + '.' + L + '.value'));
    if (O.search(/\d{5}$|\d{5}-\d{4}$/) == -1)
        B += '- Invalid ' + n + '.\n';
    return B;
};

function checkMultipartPhone(t, A, P, Q, n){
    var B = '';
    var F = d(eval('document.' + t + '.' + A + '.value'));
    F += d(eval('document.' + t + '.' + P + '.value'));
    F += d(eval('document.' + t + '.' + Q + '.value'));
    var m = '';
    for (i = 0; i < F.length; i++) {
        if (e(F.charAt(i))) {
            m += F.charAt(i);
        }
    }
    if (m.length != 10) {
        B = '- ' + n + ' must contain only 10 digits\n';
    }
    else {
        var j = m.slice(0, 3);
        var M = m.slice(3, 6);
        var z = m.slice(6, 10);
        var v = '900.911.411.456.500.222.333.444.555.666.777.999';
        if ((v.indexOf(j) != -1) || (j.charAt(0) == '0') || (j.charAt(0) == '1'))
            B += '- Invalid area code in ' + n + '\n';
        var w = '411.555.611.911';
        if ((w.indexOf(M) != -1) || (M.charAt(0) == '0') || (M.charAt(0) == '1'))
            B += '- Invalid exchange in ' + n + '\n';
        var A = M + z;
        var g = true;
        for (i = 1; i < A.length; i++)
            if (A.charAt(i) != A.charAt(0)) {
                g = false;
                break;
            }
        if (g)
            B += '- Repeating digits in ' + n + ' are not allowed.\n';
    }
    return B;

}


function checkUSPhone(t, L, n){
    var B = '';
    var F = d(eval('document.' + t + '.' + L + '.value'));
    var m = '';
    for (i = 0; i < F.length; i++) {
        if (e(F.charAt(i))) {
            m += F.charAt(i);
        }
    }
    if (m.length != 10) {
        B = '- ' + n + ' must contain only 10 digits\n';
    }
    else {
        var j = m.slice(0, 3);
        var M = m.slice(3, 6);
        var z = m.slice(6, 10);
        var v = '900.911.411.456.500.222.333.444.555.666.777.999';
        if ((v.indexOf(j) != -1) || (j.charAt(0) == '0') || (j.charAt(0) == '1'))
            B += '- Invalid area code in ' + n + '\n';
        var w = '411.555.611.911';
        if ((w.indexOf(M) != -1) || (M.charAt(0) == '0') || (M.charAt(0) == '1'))
            B += '- Invalid exchange in ' + n + '\n';
        var A = M + z;
        var g = true;
        for (i = 1; i < A.length; i++)
            if (A.charAt(i) != A.charAt(0)) {
                g = false;
                break;
            }
        if (g)
            B += '- Repeating digits in ' + n + ' are not allowed.\n';
    }
    return B;
};

function checkEmail(t, L, n){
    var B = '';
    var r = d(eval('document.' + t + '.' + L + '.value'));
    if (r.search(/([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/) == -1)
        B += '- Invalid ' + n + '.\n';
    return B;
};

function d(s){
    while ((s.substring(0, 1) == ' ') || (s.substring(0, 1) == '\n') || (s.substring(0, 1) == '\r')) {
        s = s.substring(1, s.length);
    }
    while ((s.substring(s.length - 1, s.length) == ' ') || (s.substring(s.length - 1, s.length) == '\n') || (s.substring(s.length - 1, s.length) == '\r')) {
        s = s.substring(0, s.length - 1);
    }
    return s;
};

function e(c){
    return (c >= '0' && c <= '9');
};
