function emailValidator(email){
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if(email.match(emailExp)){
		return true;
	}else{
		return false;
	}
}

function realzip(zip) {
	var zipExp = /^[0-9]{5}$/
	if (zip.match(zipExp)) {
		return true;
	} else {
		return false;	
	}
}

function realphone(phone) {
	var checkphone = phone;
	checkphone = checkphone.replace(/\-/g,'');
	checkphone = checkphone.replace(/\)/g,'');
	checkphone = checkphone.replace(/\(/g,'');
	checkphone = checkphone.replace(/ /g,'');

	var phoneExp = /^[0-9]{10}$/;
	if (checkphone.match(phoneExp)) {
		return true;	
	} else {
		return false;
	}
}

function doChecks(id,check) {
 var good = false;
 var checkval = $(id).value;
 switch (check) {
  case 'phone':
   good = realphone(checkval);
   break
  case 'email':
   good = emailValidator(checkval);
   break
  case 'zip':
   good = realzip(checkval);
   break
 }
 if (!good) {
  badcolors(id);
 }
 return good;
}

function doRequireds(id) {
 var good = false;
 var checkval = $(id).value;
 if (checkval) {
  good = true;
 }
 if (!good) {
  badcolors(id);
 }
 return good;
}

function doRequiredcb(id, count) {
	for (a=1;a<=count;a++) {
		if ($(id+a).checked) {
			return true;
		}
	}
	badcolors(id);
	for (a=1;a<=count;a++) {
		$(id+a).onclick = function onclick(event) { goodcolors(id);};
	}
	return false;
}

function badcolors(which) {
	var red = 'red';
	$(which).style.background = red;
	$(which).style.color = '#fff';
	$(which).blur();
	$(which).onfocus = function onfocus(event) { goodcolors(which);};
}

function goodcolors(which) {
	var white = '#fff';
	$(which).style.background = white;
	$(which).style.color = '#000';
}


function checkform() {
 var good = true;
 var problem = false;

 var checks = $('hiddenchecks').value;
 var requireds = $('hiddenrequireds').value;
 var requiredcb = $('hiddenrequiredcb').value;
 
 var checkArray = checks.split(",");
 var requiredArray = requireds.split(",");
 var requiredcbArray = requiredcb.split(",");
 
 if (checks) {
 for (i=0;i<checkArray.length;i++) {
  var checkArray2 = checkArray[i].split('-');
   good = doChecks(checkArray2[0],checkArray2[1]);
   if (good == false) {
    problem = true;
   }
 }
 }
 
 if (requiredcb) {
 for (i=0;i<requiredcbArray.length;i++) {
    var checkArray3 = requiredcbArray[i].split('-');
 	good = doRequiredcb(checkArray3[0],checkArray3[1]);
 	if (good == false) {
 		problem = true;
 	}
 }
 }
 
 if (requireds) {
 for (i=0;i<requiredArray.length;i++) {
   good = doRequireds(requiredArray[i]);
   if (good == false) {
    problem = true;
   }
 }
 }

 if (!problem) {
  return true;
 } else {
  return false;
 }
}