/*
  Some js routines for client-side form field validation
*/

function isNotEmail(elem) {
  elem = getNodeElement(elem);
  return !/^[-\w.]+@(localhost|[-\w.]+\.[a-z]{2,6})$/i.test(elem.value);
}

function isEmpty(elem) {
    elem = getNodeElement(elem);
    return /^\s*$/.test(elem.value);
}

function selectIsEmpty(elem) {
    elem = getNodeElement(elem);
    return(elem.selectedIndex == -1
        || elem.options[elem.selectedIndex].value == "");
}

function radioIsEmpty(f, name) {
  var eles = f[name];
  for (var i = 0; i < eles.length; i++) {
    if (eles[i].checked) {
      return false;
    }
  }
  
  return true;
}

function checkboxIsEmpty(form, name) {
    // find a checkbox in that form, with that name, that's checked
    for (var i = 0; i < form.elements.length; i++)
        if (form.elements[i].type == "checkbox"
         && form.elements[i].name == name
         && form.elements[i].checked == true)
            return false;

    return true;
}

function getNodeElement(elem) {
    if (typeof(elem) != 'object') {
        elem = document.getElementById(elem);
        if(!elem) {
            alert('No element found with id "' + arguments[0] + '"');
            return false;
        }
    }
    return elem;
}

/*
  newSecurityImage() - load a new captcha image at the user's request
*/
var reloads_remaining = 5;
function newSecurityImage() {
	if (reloads_remaining <= 2) {
		if (reloads_remaining <= 0) {
    	alert("Sorry, too many reloads.");
			return;
		} else {
			alert('Only ' + reloads_remaining + ' more reload' + (reloads_remaining == 1 ? ' is' : 's are') + ' allowed');
		}
	}

	var img = document.getElementById("captcha_image");
	if (img) {
		var str = img.src.replace(/&count=.+/,'')+'&count='+reloads_remaining;
		img.setAttribute("src",str);
	}

	reloads_remaining--;
}
