function verify(step) {
	var problem = false;
    var name = document.getElementById('commentFormNameInput').value;
    var email = document.getElementById('commentFormEmailInput').value;
    var comment = document.getElementById('commentFormCommentInput').value;
    if (document.getElementById('recaptcha_response_field')) var captcha = document.getElementById('recaptcha_response_field').value;
	if (name.length < 2 || name.length > 100) {
		disp_msg('name', 1)
		problem = true;
	} else hide_msg('name');
	if (email.length < 5 || email.indexOf('@') == -1 || !isValidEmail(email)) {
		disp_msg('email', 1)
		problem = true;
	} else hide_msg('email');
	if (comment.length < 2 || comment.length > 6000) {
		disp_msg('comment', 1)
		problem = true;
	} else hide_msg('comment');
    if (step != 1) {
    	if (captcha && (captcha.length < 3 || captcha.length > 100)) {
            disp_msg('captcha', 1);
    		problem = true;
    	} else hide_msg('captcha');
    }
	if (problem == true) return false;
    else return true;
}
function comment_form_switch(toshow) {
    if (toshow == 2) {
        document.getElementById('comment_form_1').style.display = 'none';
        document.getElementById('comment_form_2').style.display = 'block';
    }
    if (toshow == 1) {
        document.getElementById('comment_form_2').style.display = 'none';
        document.getElementById('comment_form_1').style.display = 'block';
    }
}
function toggle_display(targetid) {
    var target = document.getElementById(targetid);
    if (target) {
         if (target.className.indexOf('hidden') != -1)
            target.className = target.className.replace('hidden', '');
         else {
            target.className = target.className.replace('error', '');
            target.className += ' hidden';
        }
    }
}
function toggle_content(targetid, state1, state2) {
    var target = document.getElementById(targetid);
    if(target && state1 && state2) {
        switch (target.innerHTML) {
            case state1:
                target.innerHTML = state2;
            break;
            case state2:
                target.innerHTML = state1;
            break;
            default:
                target.innerHTML = state2;
            break;
        }
    } else if (target && state1)
        target.innerHTML = state1;
}
function toggle_msg(targetid, error) {
    var dn = '?', up = 'x';
    toggle_display(targetid + '_expl');
    toggle_content(targetid + '_help_button', dn, up);
    if (error == 1) {  errorize(targetid + '_expl'); }
}
function disp_msg(targetid, error) {
    var target = document.getElementById(targetid + '_expl');
    var up = 'x';
    toggle_content(targetid + '_help_button', up);
    if (error == 1)
        target.className = 'expl error';
    else target.className = 'expl';
}
function hide_msg(targetid) {
    var target = document.getElementById(targetid + '_expl');
    var dn = '?';
    toggle_content(targetid + '_help_button', dn);
    target.className = 'expl hidden';
}
// Take the links off help buttons that show text already in the document
function remove_help_links() {
    var links = getElementsByClassName('help_button_link', 'a', document.getElementById('comment_form'));
    for (var i in links) {
        links[i].href = 'javascript:void(0);';
        links[i].target = '_self';
    }
}
function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\s)" + className + "(\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}
function errorize(targetid) {
    var target = document.getElementById(targetid);
    if (target.className.indexOf('error') == -1)
        target.className = target.className + ' error';
}
function isValidEmail(emailAddress) {
    var re = /^[^@]{1,64}@[^@]{1,255}$/
    return re.test(emailAddress);
}
