// Removes leading whitespaces
function LTrim( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function trim( value ) {
	
	return LTrim(RTrim(value));
	
}

function isValidLogin(str){
	var check = /^[a-zA-Z0-9_-]{4,}$/;
	var OK = check.exec(str);
	if(!OK){
		return false;
	}
	else {
		return true;
	}
}

function isValidPassword(str){
	var check = /(?=^.{8,32}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/;
	var OK = check.exec(str);
	if(!OK){
		return false;
	}
	else {
		return true;
	}
}

function isValidEmail(str){
	var check = /^.+\@.+\..+$/;
	var OK = check.exec(str);
	if(!OK){
		return false;
	}
	else {
		return true;
	}
}

function isValidPhone(str){
	var check = /\d{3}\-\d{3}\-\d{4}/;
	var OK = check.exec(str);
	if(!OK){
		return false;
	}
	else {
		return true;
	}
}

function isValidAccount(str){
	//alert('Checking: ' + str);
	var check = /\d{16}/;
	var OK = check.exec(str);
	if(!OK){
		return false;
	}
	else {
		return true;
	}
}

function dupePhone(cbx, frm) {
	if(cbx.checked){
		frm.bn_billing_phone.value = frm.bn_contact_phone.value;
	}
	else {
		frm.bn_billing_phone.value = '';
	}
	
}

function dupeDaytimePhone(cbx, frm) {
	if(cbx.checked){
		frm.bn_daytime_phone.value = frm.bn_billing_phone.value;
	}
	else {
		frm.bn_daytime_phone.value = '';
	}
	
}

function dupeAddress(cbx, frm) {
	if(cbx.checked){
		frm.bn_p_address.value = frm.bn_address.value;
		frm.bn_p_city.value = frm.bn_city.value;
		frm.bn_p_state.value = frm.bn_state.value;
		frm.bn_p_zip.value = frm.bn_zip.value;
	}
	else {
		frm.bn_p_address.value = '';
		frm.bn_p_city.value = '';
		frm.bn_p_state.value = '';
		frm.bn_p_zip.value = '';
	}
	
}

function dupeEmail(cbx, frm) {
	if(cbx.checked){
		frm.bn_ldap.value = frm.bn_email.value;
	}
	else {
		frm.bn_ldap.value = '';
	}
	
}

function dupePhoneDSL(cbx, frm) {
	if(cbx.checked){
		frm.bn_daytime_phone.value = frm.bn_phone.value;
	}
	else {
		frm.bn_daytime_phone.value = '';
	}
	
}
function dupeAddressDSL(cbx, frm) {
	if(cbx.checked){
		frm.bn_p_address.value = frm.bn_address.value;
		frm.bn_p_city.value = frm.bn_city.value;
		frm.bn_p_state.value = frm.bn_state.value;
		frm.bn_p_zip.value = frm.bn_zip.value;
	}
	else {
		frm.bn_p_address.value = '';
		frm.bn_p_city.value = '';
		frm.bn_p_state.value = '';
		frm.bn_p_zip.value = '';
	}
	
}

function validChangePassword(frm){
	if(!isValidPassword(trim(frm.bn_password_old.value))){
		alert("Please re-check your old password.");
		frm.bn_password_old.focus();
		return false;
	}
	else if (!isValidPassword(trim(frm.bn_password_new.value))){
		alert('Password does not meet security requirements.\nYour password is important for securing your account. Please choose a password that is at least 8 characters long and contains at least one lowercase letter, one uppercase letter, and one number.');
		frm.bn_password_new.focus();
		return false;
	}
	else if (!isValidPassword(trim(frm.bn_password_confirm.value))){
		alert('Password does not meet security requirements.\nYour password is important for securing your account. Please choose a password that is at least 8 characters long and contains at least one lowercase letter, one uppercase letter, and one number.');
		frm.bn_password_confirm.focus();
		return false;
	}	
	else if (trim(frm.bn_password_new.value) != trim(frm.bn_password_confirm.value)){
		alert('Passwords do not match.');
		frm.bn_password_new.focus();
		return false;
	}
	else {
		return true;
	}
}

function validResetPassword(frm){
	if (!isValidPassword(trim(frm.bn_password_new.value))){
		alert('Password does not meet security requirements.\nYour password is important for securing your account. Please choose a password that is at least 8 characters long and contains at least one lowercase letter, one uppercase letter, and one number.');
		frm.bn_password_new.focus();
		return false;
	}
	else if (!isValidPassword(trim(frm.bn_password_confirm.value))){
		alert('Password does not meet security requirements.\nYour password is important for securing your account. Please choose a password that is at least 8 characters long and contains at least one lowercase letter, one uppercase letter, and one number.');
		frm.bn_password_confirm.focus();
		return false;
	}	
	else if (trim(frm.bn_password_new.value) != trim(frm.bn_password_confirm.value)){
		alert('Passwords do not match.');
		frm.bn_password_new.focus();
		return false;
	}
	else {
		return true;
	}
}

function validCreateAccount(frm)
{
	var foundit = '';
	if(trim(frm.bn_login_id.value) == '') {
		alert('User ID is required.');
		frm.bn_login_id.focus();
		return false;
	}
	else if(trim(frm.bn_password.value) == '') {
		alert('Password is required.');
		frm.bn_password.focus();
		return false;
	}
	else if(!isValidLogin(frm.bn_login_id.value)) {
		alert('User ID must be at least four letters long with no punctuation.')
		frm.bn_login_id.focus();
		return false;
	}
	else if(!isValidPassword(frm.bn_password.value)) {
		alert('Password does not meet security requirements.\nYour password is important for securing your account. Please choose a password that is at least 8 characters long and contains at least one lowercase letter, one uppercase letter, and one number.');
		frm.bn_password.focus();
		return false;
	}
	else if(trim(frm.bn_password.value) != trim(frm.bn_password_confirm.value)){
		alert('Passwords do not match.');
		frm.bn_password.focus();
		return false;
	}
	else if(trim(frm.bn_secret_question.value) == '') {
		alert('Secret question is required.');
		frm.bn_secret_question.focus();
		return false;
	}
	else if(trim(frm.bn_secret_answer.value) == '') {
		alert('Secret answer is required.');
		frm.bn_secret_answer.focus();
		return false;
	}		
	else if(trim(frm.bn_first_name.value) == '') {
		alert('First Name is required.');
		frm.bn_first_name.focus();
		return false;
	}
	else if(trim(frm.bn_last_name.value) == '') {
		alert('Last Name is required.');
		frm.bn_last_name.focus();
		return false;
	}
	else if(trim(frm.bn_email.value) == '') {
		alert('E-mail address is required.');
		frm.bn_email.focus();
		return false;
	}
	else if (!isValidEmail(frm.bn_email.value)) {
		alert('Valid e-mail address is required.');
		frm.bn_email.focus();
		return false;
	}
	else if(trim(frm.bn_email.value) != trim(frm.bn_email_confirm.value)) {
		alert('E-mail addresses do not match.');
		frm.bn_email.focus();
		return false;
	}	
	else if ((trim(frm.bn_phone.value) != '') && (!isValidPhone(frm.bn_phone.value))){ // if not blank
		alert('Please enter your phone number as ###-###-####.');
		frm.bn_phone.focus();
		return false;
	}
	else if ((trim(frm.bn_account_number.value) != '') && (!isValidAccount(frm.bn_account_number.value))){ // if not blank
		alert('The account number you have entered is invalid.');
		frm.bn_account_number.focus();
		return false;
	}	
	else if(foundit == ''){
		for (var i=0; i<frm.bn_current_customer.length; i++)  {
    		if (frm.bn_current_customer[i].checked)  {
    			foundit = frm.bn_current_customer[i].value; //set found_it equal to checked button's value
    		} 
		}
		if(foundit == ''){
			alert('Please answer the question: Are you a current Blackfoot customer?');
			return false;
		}
	}
	else {
		return true;
	}
	
}

function validUpdateAccount(frm)
{
	if(trim(frm.bn_secret_question.value) == '') {
		alert('Secret question is required.');
		frm.bn_secret_question.focus();
		return false;
	}
	else if(trim(frm.bn_secret_answer.value) == '') {
		alert('Secret answer is required.');
		frm.bn_secret_answer.focus();
		return false;
	}		
	else if(trim(frm.bn_first_name.value) == '') {
		alert('First Name is required.');
		frm.bn_first_name.focus();
		return false;
	}
	else if(trim(frm.bn_last_name.value) == '') {
		alert('Last Name is required.');
		frm.bn_last_name.focus();
		return false;
	}
	else if(trim(frm.bn_email.value) == '') {
		alert('E-mail address is required.');
		frm.bn_email.focus();
		return false;
	}
	else if (!isValidEmail(frm.bn_email.value)) {
		alert('Valid e-mail address is required.');
		frm.bn_email.focus();
		return false;
	}
	else if ((trim(frm.bn_phone.value) != '') && (!isValidPhone(frm.bn_phone.value))){ // if not blank
		alert('Please enter your phone number as ###-###-####.');
		frm.bn_phone.focus();
		return false;
	}
	else if ((trim(frm.bn_account_number.value) != '') && (!isValidAccount(frm.bn_account_number.value))){ // if not blank
		alert('The account number you have entered is invalid.');
		frm.bn_account_number.focus();
		return false;
	}
	else {
		return true;
	}
	
}

function validCheckoutAddress(frm)
{
	if(trim(frm.bn_first_name.value) == '') {
		alert('First Name is required.');
		frm.bn_first_name.focus();
		return false;
	}
	else if(trim(frm.bn_last_name.value) == '') {
		alert('Last Name is required.');
		frm.bn_last_name.focus();
		return false;
	}
	else if(trim(frm.bn_email.value) == '') {
		alert('E-mail address is required.');
		frm.bn_email.focus();
		return false;
	}
	else if (!isValidEmail(frm.bn_email.value)) {
		alert('Valid e-mail address is required.');
		frm.bn_email.focus();
		return false;
	}
	else if(trim(frm.bn_address.value) == '') {
		alert('Billing address is required.');
		frm.bn_address.focus();
		return false;
	}
	else if(trim(frm.bn_city.value) == '') {
		alert('Billing city is required.');
		frm.bn_city.focus();
		return false;
	}
	else if(trim(frm.bn_state.value) == '') {
		alert('Billing state  is required.');
		frm.bn_state.focus();
		return false;
	}
	else if(trim(frm.bn_zip.value) == '') {
		alert('Billing zip is required.');
		frm.bn_zip.focus();
		return false;
	}
	else if ((trim(frm.bn_phone.value) != '') && (!isValidPhone(frm.bn_phone.value))){ // if not blank
		alert('Please enter your phone number as ###-###-####.');
		frm.bn_phone.focus();
		return false;
	}
	else {
		return true;
	}
	
}

function validCheckoutDSL(frm)
{
	var foundit = '';
	if(trim(frm.bn_daytime_phone.value) == '') {
		alert('Contact phone is required.');
		frm.bn_daytime_phone.focus();
		return false;
	}
	else if(trim(frm.bn_contact_time.value) == '') {
		alert('Contact time is required.');
		frm.bn_contact_time.focus();
		return false;
	}
	else if(trim(frm.bn_p_address.value) == '') {
		alert('Complete physical address is required.');
		frm.bn_p_address.focus();
		return false;
	}
	else if(trim(frm.bn_p_city.value) == '') {
		alert('Complete physical address is required.');
		frm.bn_p_city.focus();
		return false;
	}
	else if(trim(frm.bn_p_state.value) == '') {
		alert('Complete physical address is required.');
		frm.bn_p_state.focus();
		return false;
	}
	else if(trim(frm.bn_p_zip.value) == '') {
		alert('Complete physical address is required.');
		frm.bn_p_zip.focus();
		return false;
	}
	else if(frm.bn_terms_conditions.checked == false){
		alert('Please check that you agree with the Terms and Conditions.');
		return false;
	}
	else if(foundit == ''){
		for (var i=0; i<frm.bn_shipping.length; i++)  {
    		if (frm.bn_shipping[i].checked)  {
    			foundit = frm.bn_shipping[i].value; //set found_it equal to checked button's value
    		} 
		}
		if(foundit == ''){
			alert('Please select a shipping method.');
			return false;
		}
	}
	else {
		return true;
	}
	
}

var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) { // found via google; causes invisible exceptions in FireFox
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if(input.value.length >= len && !containsElement(filter,keyCode)) {
		input.value = input.value.slice(0, len);
		input.form[(getIndex(input)+1) % input.form.length].focus();
	}
	function containsElement(arr, ele) {
		var found = false, index = 0;
		while(!found && index < arr.length)
			if(arr[index] == ele)
				found = true;
			else
				index++;
		return found;
	}
	function getIndex(input) {
		var index = -1, i = 0, found = false;
		while (i < input.form.length && index == -1)
			if (input.form[i] == input)index = i;
			else i++;
		return index;
	}
	return true;
}

function js_in_array(the_needle, the_haystack){ // found via google
        var the_hay = the_haystack.toString();
        if(the_hay == ''){
            return false;
        }
        var the_pattern = new RegExp(the_needle, 'g');
        var matched = the_pattern.test(the_haystack);
        return matched;
    }

function phoneVal(phone1,phone2,phone3){ // for dsl qualify
	npa = phone1.value;
	nxx = phone2.value;
	npanxx = npa + nxx;
	digits = phone3.value;
	phone123 = npa + nxx + digits;
	// check phone123 to see that is is all digits and ten long
		var pattern = /[0-9]{10}/; 
		if(!pattern.test(phone123)){
			alert("Phone number must be 10 digits.");
			return false;
		}
		
	return true;
	
}

function addressVal(frm){ // for dsl qualify
	housenum = frm.dsl_address_number.value;
	if(housenum.length == 0){
		alert('You must enter a house number.'); 
		frm.dsl_address_number.focus();
		return false;
	}
	street = frm.dsl_address_street.value;
	if(street.length == 0){
		alert('You must enter a street name.'); 
		frm.dsl_address_street.focus();
		return false;
	}
	city = frm.dsl_address_city.value;
	if(city.length == 0){
		alert('You must select a city.'); 
		frm.dsl_address_city.focus();
		return false;
	}
	return true;
	
}

function checkSA(frm) {
	area = frm.bn_community_id.value;
	nick = frm.bn_nickname.value;
	
	var myRegxp = /^([a-zA-Z0-9_-]+)$/;
	if((myRegxp.test(nick)==false) || (nick.length > 25)){
		alert('Nickname can only contain numbers and letters. Limit 25 characters.')
		frm.bn_nickname.focus();
		return false;
	} 
	if(area == ''){
		alert('Please select a service area to view customized information for your location.');
		frm.bn_community_id.focus();
		return false;
	}
	
	else {
		return true;
	}
	
}

	function validateBSC(frm) {
		if(frm.a_name.value.length ==0)
			return required("a_name", "Your name");
		else if(frm.a_email.value.length == 0)
			return required("a_email","Your e-mail address");
		else if(frm.a_phone.value.length == 0)
			return required("a_phone","Your phone number");
			
		function required(control, msg){
			alert( msg + " is required." );
			formControl = eval("frm." + control);
			formControl.focus();
			return false;
		}		
		
		// e-mail validity check
		var check = /^.+\@.+\..+$/;
		var OK = check.exec(frm.a_email.value);
		if(!OK){
			alert ("A valid e-mail address is required.");
			frm.a_email.focus();
			return false;
		}
	}
	
function validateCustomizeService(frm)
{
	if(trim(frm.bn_company_name.value) == '') {
		alert('Company name is required.');
		frm.bn_company_name.focus();
		return false;
	}
	else if(trim(frm.bn_company_contact.value) == '') {
		alert('Company contact is required.');
		frm.bn_company_contact.focus();
		return false;
	}
	else if(trim(frm.bn_company_phone.value) == '') {
		alert('Phone is required.');
		frm.bn_company_phone.focus();
		return false;
	}
	else if(trim(frm.bn_company_email.value) == '') {
		alert('E-mail address is required.');
		frm.bn_company_email.focus();
		return false;
	}
	else if (!isValidEmail(frm.bn_company_email.value)) {
		alert('Valid e-mail address is required.');
		frm.bn_company_email.focus();
		return false;
	}
	else if(trim(frm.bn_company_address.value) == '') {
		alert('Address is required.');
		frm.bn_company_address.focus();
		return false;
	}
	else if(trim(frm.bn_company_city.value) == '') {
		alert('City is required.');
		frm.bn_company_city.focus();
		return false;
	}
	
	else {
		return true;
	}
}

function validatePhoneProfile(frm)
{
    //edited by Kevin 
    if(trim(frm.bn_profile_contact.value) == '') {
		alert('Your name is required.');
		frm.bn_profile_contact.focus();
		return false;
	}
    
    if(trim(frm.bn_profile_contact2.value) == '') {
        alert('Company name is required.');
        frm.bn_profile_contact2.focus();
        return false;
    }
    
          var contact_check = true;
      if(trim(frm.bn_profile_contact_phone.value) == '') {
        contact_check = false;
      }
    
    
      if(trim(frm.bn_profile_contact_email.value) == '' && contact_check == false) {
        contact_check = false;
      }    
      else if (!isValidEmail(frm.bn_profile_contact_email.value) && contact_check == false) {
        
        contact_check = 'email';
      }
      else
      {
          contact_check = true;          
      }
    if(contact_check == false)
    {
        alert('Phone and Email information is required.');
        frm.bn_profile_contact_phone.focus();
        return false
    }
    else if( contact_check == 'email')
    {
        alert('Valid e-mail address is required.');
        frm.bn_profile_contact_email.focus();
        return false;
    }
	
	//else {
		return true;
	//}
		}