function popExit(){
    //replace URL with exit pop url
    window.open('exit_page.html', 'mywindow', 'width=600,height=800, scrollbars=1, left=0, right=0, top=0');
}

function validateblank() {
	var retval = false;
	
	var requested_amount = document.getElementById("requested_amount");
	var first_name = document.getElementById("first_name");
	var last_name = document.getElementById("last_name");
	var email = document.getElementById("email");
	var address1 = document.getElementById("address1");
	var phone_home = document.getElementById("phone_home");
	var zipcode = document.getElementById("zipcode");
	var city = document.getElementById("city_input");
	var state = document.getElementById("state_input");
	var count = 0;
	
	if (requested_amount.value != "selected") {
		count++; 
	}
	if (first_name.value != "") {
		count++; 
	}
	if (last_name.value != "") {
		count++; 
	}
	if (email.value != "") {
		count++;
	}
	if (address1.value != "") {
		count++;
	}
	if (phone_home.value != "") {
		count++;
	}
	if (city.value != "") {
		count++;
	}
	if (state.value != "") {
		count++;
	}
	if  (zipcode.value != "") {
		count++;
	}
	
	if (count == 9) {
		retval = true;
	}
    
	return retval;
}

function getHTTPObject() {
	var xmlhttp;
	if (window.XMLHttpRequest) {
		// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		//alert("Your browser does not support XMLHTTP!");
	}
	
	return xmlhttp;
}

var http = getHTTPObject(); // We create the HTTP Object
var http2 = getHTTPObject(); // We create the HTTP Object


function handle_email_validator() {
    if (http2.readyState == 4) {
        if (http2.status == 200) {
            var result = http2.responseText;
            var field = document.getElementById("php_email_check");
            var email_error = document.getElementById("email_error");
            var email = document.getElementById("email");
            
            if (result == 1) {
                field.value = '1';
                email_error.innerHTML = "";
                //green
                email.style.border = '1px solid #00CC00';
                email.style.backgroundColor = '#FFF';
            } else {
                field.value = '0';;
                //var email_msg = "<i>'" + email_check + "'</i> -<br/>Is not a valid email address.";
                //email_error.innerHTML = "Please provide a Valid Email Address.";
                email_error.innerHTML = "Por favor proporcione una direccio'n de correo va'lida.";
                email.style.border = '1px solid #FF0000';
                email.style.backgroundColor = '#FFFF99';
            }
        }
    }
}

//this function is an ajax call to an email validator using php
//so the domain and formatting is checked
function email_validator(email) {
    if (http2) {
		//var email = document.getElementById("email").value;
		var url = "../lib/get_email_check.php";
        //url encode email
		var param = "?email=" + escape(email);
        //alert(url+param);
        
		http2.open("GET", url + param, true);
		http2.onreadystatechange = handle_email_validator;
		http2.send(null);
	}
}

function validate_email(email) {
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    var retval = false;
    if (reg.test(email) != false) {
        retval = true;
    }
    return retval;
}

function validateform() {
	var requested_amount = document.getElementById("requested_amount");
	var first_name = document.getElementById("first_name");
	var last_name = document.getElementById("last_name");
	var email = document.getElementById("email");
    var email_check = document.getElementById("php_email_check").value;
	var address1 = document.getElementById("address1");
	var phone_home = document.getElementById("phone_home");
	var zipcode = document.getElementById("zipcode");
	var city = document.getElementById("city_input");
	var state = document.getElementById("state_input");
    var retval = true;
	
	
    //FIRST NAME
	if (first_name.value.length > first_name_max) {
        //msg += "Su nombre es muy largo.\n";
        retval = false;
    } else if (first_name.value.length < first_name_min) {
        retval = false;
    } else {
        //trimming is ocurring in this wrong place because jquery counts spaces
        first_name.value = first_name.value.replace(/^\s+|\s+$/g,"");
        if (!numeric_test_validator(first_name.value, first_name.value.length)) {
            retval = false;
        } else {
            if (!allow_alpha_space(first_name.value)) {
                //msg += "Your First Name Contains an Illegal Character(s).\n";
                retval = false;
            } else {
                if (!has_a_dash(first_name.value)) {
                    //msg += "Your First Name Contains Multiple Invalid Dash (-) Characters.\n";
                    retval = false;
                }
            }
        }
    }
    
    //LAST NAME
    if (last_name.value.length > last_name_max) {
        //msg += "\nSu apellido es muy largo.\n";
        retval = false;
    } else if (last_name.value.length < last_name_min) {
        retval = false;
    } else {
        last_name.value = last_name.value.replace(/^\s+|\s+$/g,"");
        if (!numeric_test_validator(last_name.value, last_name.value.length)) {
            retval = false;
        } else {
            if (!allow_alphanumeric_space(last_name.value)) {
                //msg += "\nYour Last Name Contains an Illegal Character(s).\n";
                retval = false;
            } else {
                if (!has_a_dash(last_name.value)) {
                    //msg += "\nYour Last Name Contains Multiple Invalid Dash (-) Characters.\n";
                    retval = false;
                }
            }
        }
    }
    
    //EMAIL ADDRESS
    //if (!validate_email(email.value)) {
    if (email_check != '1') {
		//msg += '\nSu correo electro\'nico no es valido.\n';
		retval = false;
    }
    
    //PHONE HOME
	if(phone_home.value.length == 10) {
		var temp_tel = '';
		for (var i = 0; i < phone_home.value.length; i++) {
			Char = phone_home.value.charAt(i);
			if (Char == '-') {
				//character is a dash, replace it.
				Char='';
			} else if (Char == '.') {
				//character is a period, replace it.
				Char='';
			} else if (Char == '(') {
				//character is a open parenthesis, replace it.
				Char='';
			} else if (Char == ')') {
				//character is a closed parenthesis, replace it.
				Char='';
			} else if (Char == ' ') {
				//character is a closed parenthesis, replace it.
				Char='';
			}
			temp_tel += Char;
		}
		phone_home.value = temp_tel;
		//check if it is numeric
		if (numcheck(phone_home.value)) {
            if (numeric_test_validator(phone_home.value, 10)) {
                //north american numebering plan => +1-NPA-NXX-xxxx(subscriber #)
                //NUMBERING PLAN AREA CODE - NPA
                var npa_1 = phone_home.value.substr(0,1);
                var npa_2 = phone_home.value.substr(1,1);
                var npa_3 = phone_home.value.substr(2,1);
                if (npa_1 >= 2 && npa_1 <= 9) {
                    if (npa_2 >= 0 && npa_2 <= 8) {
                        if (npa_3 >= 0 && npa_3 <= 9) {
                            //WE HAVE A VALID AREA CODE AT THIS POINT
                            //CENTRAL OFFICE EXCAHNGE CODE - NXX
                            var nxx_1 = phone_home.value.substr(3,1);
                            var nxx_2 = phone_home.value.substr(4,1);
                            var nxx_3 = phone_home.value.substr(5,1);
                            if (nxx_1 >= 2 && nxx_1 <= 9) {
                                if ((nxx_2 >= 0 && nxx_2 <= 9) && (nxx_3 >= 0 && nxx_3 <= 9)) {
                                    if (nxx_2 == 1 && nxx_3 == 1) {
                                        //the last two digits of NXX cannot both be 1, to avoid confusion with the N11 codes
                                        retval = false;
                                    } else {
                                        //WE HAVE A VALID PHONE NUMBER PREFIX
                                        //all other subscriber number have no range - so let us search for fictional numbers
                                        if (is_fictional_phone_number(phone_home.value)) {
                                            retval = false;
                                        }
                                    }
                                } else {
                                    retval = false;
                                }
                            } else {
                                retval = false;
                            }
                        } else {
                            retval = false;
                        }
                    } else {
                        retval = false;
                    }
                } else {
                    retval = false;
                }
            } else {
                retval = false;
            }
        } else {
            retval = false;
        }
	} else {
		//msg += '\nTele\'fono de Residencia debe ser de 10 Di\'gitos.\n';
		retval = false;
	}
	
    //HOME ADDRESS1
	if(address1.value.length > address1_max) {
		//msg += '\nSu calle esta muy larga.\n';
		retval = false;
	} else if (address1.value.length < address1_min) {
        retval = false;
    } else {
        //trim address1
        address1.value = address1.value.replace(/^\s+|\s+$/g,"");
        
        var address1_check = address1.value.split(' ');
        //redefine value
        address1.value = '';
        for (var i=0; i < address1_check.length; i++) {
            //skip empty strings
            if (address1_check[i]) {
                //trim each string
                address1.value += address1_check[i].replace(/^\s+|\s+$/g,"");
                if (i != (address1_check.length - 1)) {
                    //if it is not the last string add a space
                    address1.value += ' ';
                }
            }
        }
        address1_check = address1.value.split(' ');
        
        //alert(address1_check + ' ' + address1_check.length);
        if (address1_check == address1.value || address1_check.length < 2) {
            retval = false;
        } else {
            if (!numeric_test_validator(address1.value, address1.value.length)) {
                retval = false;
            } else {
                if (!allow_address(address1.value)) {
                    retval = false;
                } else if (!has_a_dash(address1.value)) {
                    retval = false;
                }
            }
        }
    }
	
	if (zipcode.value.length != 5){
		//msg += '\nCo\'digo postal debe ser de 5 di\'gitos.\n';
		retval = false;
	} else {
		if (!numcheck(zipcode.value)) {
			//msg += '\nSu co\'digo postal debe ser un numero.\n';
			retval = false;
		} else {
            if (zipcode.value == '00000'){
                retval = false;
            }
        }
	}
	
	if (city.value.length > city_input_max) {
		//msg += '\nSu ciudad esta muy larga.\n';
		retval = false;
	} else if (city.value.length < city_input_min) {
        retval = false;
    } else {
        city.value = city.value.replace(/^\s+|\s+$/g,"");
        if (numeric_test_validator(city.value, city.value.length)) {
            if (!allow_alpha_space(city.value)) {
                //msg += "\nYour City Contains an Illegal Character(s).\n";
                retval = false;
            } else {
                if (!has_a_dash(city.value)) {
                    //msg += "\nYour City Contains Multiple Invalid Dash (-) Characters.\n";
                    retval = false;
                }
            }
        } else {
            retval = false;
        }
    }
	
	if (state.value.length == 2) {
		var found = 0;
		
		for (i = 0; i < STATES_LOOKUP.length; i++) {
			if (STATES_LOOKUP[i] == state.value.toUpperCase()) {
				found++;
			}
		}
		
		if (!found) {
			//msg += '\nSu estado es inva\'lido.\n';
			retval = false;
		}
	} else {
		//msg += '\nEstado debe ser de 2 caracteres.\n';
		retval = false;
	}
    
	return retval;
}

function toggleprogressbar() {
	var retval = false;
    
	if (validateblank()) {
		if(validateform()){
			var submit_div = document.getElementById("submit");
			var progress_div = document.getElementById("progressbar");
			
			submit_div.style.display="none";
			progress_div.style.display="block";
			retval = true;
            alertOnExit = true;
			//set time delay
			var delay = setTimeout("return_param(" + retval + ")",2500);//There are 1000 milliseconds in one second.
		} else {
            alertOnExit = false;
        }
	} else {
        //we are going to return true here so the jquery validation triggers
        retval = true;
        alertOnExit = false;
    }
    
	return retval;
}

function go(loc) {
    isExit = false;
	window.location.href = loc;
}
