// INTERACTION FUNCTIONS

function enable_if(set, val) {
// enables other form elements if val is checked
// works for both radio and checkboxes
// looks for all other form elements with set: in its name (set colon space)
// val can also be negated for radio sets, ie any but this one
	f = document.forms["contactar"].elements;
	negate = false;
	if (val.substr(0,1) == "!") {
		negate = true;
		val = val.substr(1);
	}
	flag = false;
	if (f[set].length > 1) {	// array, so radio set
		for (i=0; i < f[set].length; i++) {
			if (f[set][i].value == val) {
				if (f[set][i].checked && !negate) {
					flag = true;
					break;
				}
			} else {
				if (f[set][i].checked && negate) {
					flag = true;
					break;
				}
			}
		}
	} else {
		if (f[set].checked) {
			flag = true;
		}
	}
	for (i=0; i < f.length; i++) {
		if (f[i].name.indexOf(set + ": ") > -1 && (f[i].type == "text" || f[i].type == "select-one")) {
			if (flag) {
				f[i].disabled = false;
				f[i].style.backgroundColor = "#ffffff";
			} else {
				f[i].disabled = true;
				f[i].style.backgroundColor = "#d7e4d9";
			}
		}
	}
}


// VALIDATION FUNCTIONS

function numbersOnly($f) {
// optional 2nd argument: "quiet" suppresses alert messages	
	$str = $f.value;
	filter = /\D/;
	if (filter.test($str) && $str.length > 0 && arguments[1]!="quiet") {
		errorBubble($f,"<b>Perdona,</b><br />Por favor solo tecla n&uacute;meros aqui.");
	}
	$s = $str.replace(/\D/g,"");
	return $s;
}

function checkEmail($f) {
// optional 2nd argument: "quiet" suppresses alert messages	
	$str = $f.value;
	filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/;
	if (!filter.test($str) && $str.length > 0) {
		if (arguments[1]!="quiet") {
			errorBubble($f, "<b>Perdona,</b><br />Parece que hay un problema con su direcci&oacute;n email.");
		}
		return false;
	} else {
		return true;
	}
}

function checkPhone($f) {
// optional 2nd argument: "quiet" suppresses alert messages
	$str = $f.value;
	if ($str.length>0) {
		// remove all non-numbers
		$str = $str.replace(/\D/g,"");
		if ($str.length != 9) {
			if (arguments[1]!="quiet") {
				errorBubble($f, "<b>Perdona,</b><br />Parece que hay un problema con su n&uacute;mero de tel&eacute;fono.");
			}
		}
	}
	return $str;
}

function proper($str) {
	return $str.substr(0,1).toUpperCase() + $str.substr(1).toLowerCase();
}
	
function check_form(f) {
	errorFlag = false;
	message = "Por favor, llena los campos siguientes:<br />";
// name
	if (f.elements["Nombre"].value.length < 3) {
		errorFlag = true;
		message += "su nombre, ";
	}
		
// Check for valid email syntax
	if (!checkEmail(f.elements["correo"],"quiet") || f.elements["correo"].value.length < 1) {
		errorFlag = true;
		message += "su valida direcci&oacute;n email, ";
	}
	
// Check phone # for valid characters
	temp = checkPhone(f.elements["Telefono"],"quiet");
	if (temp.length < 9) {
		message += "su n&uacute;mero de tel&eacute;fono, ";
		errorFlag = true;
	}
	
// description
	if (f.elements["Mensaje"].value.length < 10) {
		errorFlag = true;
		message += "su mensaje, ";
	}
	
// Final routine	
	if (errorFlag) {
		message = message.substr(0,message.length - 2) + ".";
		errorBubble(document.forms["contactar"].elements["reset"], message);
		return false;
	} else {
		return true;
	}
}

function errorBubble($e, $message) {
	$bubble = document.getElementById("errorBubble");
	$bubble.innerHTML = $message;
// get offsetLeft & Top
	$h = $e.offsetHeight;
	$t = 0;
	$l = $e.offsetWidth + 5;
	while ($e != null){
		$l += $e.offsetLeft;
		$t += $e.offsetTop;
		$e = $e.offsetParent;
	}
	$bubble.style.left = $l + "px";
	$bubble.style.top = ($t + Math.round($h/2) - 63) + "px";
	show("errorBubble");
}