function getElementsByClass(searchClass,node,tag) {
    var classElements = new Array();
    if ( node == null )
        node = document;
    if ( tag == null )
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}

function none_is_checked(elementArray) {
    if (elementArray.length == 0) { return false; }
    for (i=0;i < elementArray.length ; i++) {
        if (elementArray[i].checked) {
            return false;
        }
    }
    return true;
}

function select_tab(tab, tab_prefix, div_prefix) {
	var old				= document.getElementById(tab_prefix + '-current');
	var old_tab 		= document.getElementById(tab_prefix + '-' + old.name);
	var old_step 		= document.getElementById(div_prefix + '-' + old.name);

	var new_step 		= document.getElementById(div_prefix + '-' + tab);
	var new_tab			= document.getElementById(tab_prefix + '-' + tab);

	var show_tab		= document.getElementById(tab_prefix + '-show_tab');					

    if (!(old.name == '1' && tab_prefix == 'tab') || validate_address_information()) {
    	show_tab.value = tab;
    	old.name = tab;
    	old_tab.className = tab_prefix + '-off';
    	old_step.style.display = 'none';

    	new_tab.className = tab_prefix + '-on';
    	new_step.style.display = '';
    }
}

function tab_over(tab_prefix, tab_no) {
    var tab = document.getElementById(tab_prefix + '-' + tab_no);
    if (tab.className != tab_prefix + '-on')
        tab.className = tab_prefix + '-over';
}

function tab_out(tab_prefix, tab_no) {
    var tab = document.getElementById(tab_prefix + '-' + tab_no);
    if (tab.className != tab_prefix + '-on')
        tab.className = tab_prefix + '-off';
}

function validate_address_information() {

    var errors = get_address_information_errors();
    var _qfMsg = '';

    if (errors != '') {
        _qfMsg = dictionary.invalid_info;
        _qfMsg = _qfMsg + errors;
        _qfMsg = _qfMsg + '\n' + dictionary.please_correct_fields;
        alert(_qfMsg);
        return false;
    }

    return true;
}

function validate_compose_letter() {

    var errors = '';
    var _qfMsg = '';

    errors = get_address_information_errors();
    errors = errors + get_compose_letter_errors();

    if (errors != '') {
        _qfMsg = dictionary.invalid_info;
        _qfMsg = _qfMsg + errors;
        _qfMsg = _qfMsg + '\n' + dictionary.please_correct_fields;
        alert(_qfMsg);
        return false;
    }

    return true;
}

function get_address_information_errors() {
    var form = document.getElementById("speakout_form");

    var value = '';
    var errFlag = new Array();
    var _qfGroups = {};
    _qfMsg = '';

    value = form.elements['firstname'].value;
    if (value == '' && !errFlag['firstname']) {
        errFlag['firstname'] = true;
        _qfMsg = _qfMsg + '\n - ' + dictionary.first_name_required;
    }

    value = form.elements['lastname'].value;
    if (value == '' && !errFlag['lastname']) {
        errFlag['lastname'] = true;
        _qfMsg = _qfMsg + '\n - ' + dictionary.last_name_required;
    }

    value = form.elements['email'].value;
    if (value == '' && !errFlag['email']) {
        errFlag['email'] = true;
        _qfMsg = _qfMsg + '\n - ' + dictionary.email_required;
    }

    value = form.elements['email'].value;
    var regex = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
    if (value != '' && !regex.test(value) && !errFlag['email']) {
        errFlag['email'] = true;
        _qfMsg = _qfMsg + '\n - ' + dictionary.invalid_email;
    }

    if (form.elements['phone']) {
        value = form.elements['phone'].value;
        if (value == '' && !errFlag['phone']) {
            errFlag['phone'] = true;
            _qfMsg = _qfMsg + '\n - ' + dictionary.phone_required;
        }

        value = form.elements['phone'].value;
        var regex = /^\s*(\+?1)?[- \.]*(\(\d{3}\)|\d{3})[- \.]*\d{3}[- \.]*\d{4}\s*$/;
        if (value != '' && !regex.test(value) && !errFlag['phone']) {
            errFlag['phone'] = true;
            _qfMsg = _qfMsg + '\n - ' + dictionary.invalid_phone;
        }
    }

    if (form.elements['country']) {
        value = form.elements['country'].value;
        if (value == '' && !errFlag['country']) {
            errFlag['country'] = true;
            _qfMsg = _qfMsg + '\n - ' + dictionary.country_required;
        }
    }

    if(form.elements['city']) {

        value = form.elements['addr1'].value;
        if (value == '' && !errFlag['addr1']) {
            errFlag['addr1'] = true;
            _qfMsg = _qfMsg + '\n - ' + dictionary.address_required;
        }

        value = form.elements['city'].value;
        if (value == '' && !errFlag['city']) {
            errFlag['city'] = true;
            _qfMsg = _qfMsg + '\n - ' + dictionary.city_required;
        }

        /*
        if (form.elements['state_cd']) {
            value = form.elements['state_cd'].value;
            if (value == '' && !errFlag['state_cd'] && bQuery.inArray('us', form.elements['state_cd'].className.split(' '))) {
                errFlag['state_cd'] = true;
                _qfMsg = _qfMsg + '\n - ' + dictionary.state_required;
            }
        }
        */

        if(form.elements['zip']) {
            value = form.elements['zip'].value;
            if (value == '' && !errFlag['zip']) {
                errFlag['zip'] = true;
                _qfMsg = _qfMsg + '\n - ' + dictionary.zip_required;
            }

            if (form.elements['zip'].className == 'us') {
                value = form.elements['zip'].value;
                var regex = /^[0-9]{5,5}$/;
                if (value != '' && !regex.test(value) && !errFlag['zip']) {
                    errFlag['zip'] = true;
                    _qfMsg = _qfMsg + '\n - ' + dictionary.invalid_us_zip;
                }
            }
        }

    }

    if (none_is_checked(getElementsByClass('recipient_check',document.getElementById('recipient_table'),'input'))) {
        errFlag['recipient'] = true;
        _qfMsg = _qfMsg + '\n - ' + dictionary.no_recipients_selected_error;
    }

    return _qfMsg;
}

function get_compose_letter_errors() {

    var form = document.getElementById("speakout_form");

    var value = '';
    var errFlag = new Array();
    var _qfGroups = {};
    _qfMsg = '';

    value = form.elements['subject'].value;
    if (value == '' && !errFlag['firstname']) {
        errFlag['firstname'] = true;
        _qfMsg = _qfMsg + '\n - ' + dictionary.subject_required;
    }

    value = form.elements['body'].value;
    if (value == '' && !errFlag['lastname']) {
        errFlag['lastname'] = true;
        _qfMsg = _qfMsg + '\n - ' + dictionary.message_required;
    }

    return _qfMsg;
}

function validate_input_fields() {
    if (!validate_compose_letter())
        return false;
    uncheck_hidden_checkboxes();
	if (none_is_checked(getElementsByClass('recipient_check',document.getElementById('recipient_table'),'input'))) {
        alert(dictionary.no_recipients_selected_error);
        return false;
    }
    return true;
}

function preview_letter() {

    if (!validate_compose_letter())
        return false;

    uncheck_hidden_checkboxes();
	if (none_is_checked(getElementsByClass('recipient_check',document.getElementById('recipient_table'),'input'))) {
        alert(dictionary.no_recipients_selected_error);
    } else {
        var speakout_form = document.getElementById('speakout_form');
    	speakout_form.submit();
    }
}

function send_letter() {
	var speakout_form = document.getElementById('speakout_form');
	var send = document.getElementById('send');

	send.value = 1;
	speakout_form.submit();
}

function focusOnField(field) {
	var thefield = document.getElementById(field);
	if (thefield) {
		thefield.focus();
	}
}

// uncheck all the hidden checkboxes so they dont get post'd
function uncheck_hidden_checkboxes() {
    var extra_rows = bQuery('tr.extra');
    for ( i = 0; i < extra_rows.length; i++ ) {
        if ( extra_rows[i].style.display == 'none' ) {
            bQuery(extra_rows[i]).find('input').removeAttr('checked');
        }
    }
}

function validate_participate(frm) {
  var value = '';
  var errFlag = new Array();
  _qfMsg = '';

  value = frm.elements['zip'].value;
  if (value == '' && !errFlag['zip']) {
    errFlag['zip'] = true;
    _qfMsg = _qfMsg + '\n - ' + dictionary.postal_code_required;
  }

  if (_qfMsg != '') {
    _qfMsg = dictionary.invalid_info + _qfMsg;
    _qfMsg = _qfMsg + '\n ' + dictionary.please_correct_fields;
    alert(_qfMsg);
    return false;
  }
  return true;
}

