/**
 * Author: Fernando Mladineo
 * Date: 5 Jun 2008
 * Version: 0.1
 * Terms: you may freely distribute this as long as you keep this copyright notice intact.
 */
var ruta_captcha = '../buhrecaptcha/';


var http_request = false;
var divId = ""; // name of div ID that will stores the results of the AJAX call
var first_time = true; // variable to track if the user has entered the phone field yet
var whichCb = "1"; // determines when to make 2nd AJAX call (refresh the CAPTCHA)

// Nice little graphic to let the user know we've made an AJAX call
var loading = new Image(220,19);
loading.src = ruta_captcha + "images/ajax-loader-bar.gif";

// Send email to the pre-determined recipient
function sendMail(form_id) {
	// Do a client-side check; if it passes, then move on; otherwise, report an error to the user
	//if (!validatePage(form_id)) return;
	window.scrollTo(0,0);
	
	divId = "results";
	var str = "";
	var elem = document.getElementById(form_id).elements;
	for (var i = 0; i < elem.length; i++) {						
		if ((elem[i].type == "hidden") || (elem[i].type == "text") || (elem[i].type == "textarea")) { // Text field
		   str += elem[i].id + "=" + escape(encodeURI(trimField(elem[i].id))) + "&";
		} else if (elem[i].type == "checkbox") { // Check box
		   if (elem[i].checked) {
			  str += elem[i].id + "=on&";
		   } else {
			  str += elem[i].id + "=off&";
		   }
		} else if (elem[i].type == "select-one") { // Drop-down menu (SELECT)
			var sel = elem[i];
			str += sel.id + "=" + sel.options[sel.selectedIndex].value + "&";
		}
	}
	
	str = str.substring(0, str.length-1);
	str = str.replace(/%250A/g,"\n") // Make sure that line breaks get transmitted properly
	if (form_id == "contact_form") {
		form_page = ruta_captcha + "sendMail.php";
	}
	AjaxRequest(form_page, str, "post");
}

// Make the AJAX request
function AjaxRequest(url, parameters, type) {
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			// set type accordingly to anticipated content type
			//http_request.overrideMimeType('text/xml');
			http_request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		alert("Cannot create XMLHTTP instance");
		return false;
	}
	
	if (type == "post") {
		// POST
		http_request.open('POST', url, true);
		http_request.onreadystatechange = AjaxRequestCb;
		http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		http_request.setRequestHeader("Content-length", parameters.length);
		http_request.setRequestHeader("Connection", "close");
		http_request.send(parameters);
	} else if (type == "get") {
		// GET
		http_request.open('GET', url + parameters, true);
		http_request.onreadystatechange = AjaxRequestCb;
		http_request.send(null);
	} // if...else
}

// AJAX Callback
function AjaxRequestCb() {
	if (http_request.readyState == 1 || http_request.readyState == 2 || http_request.readyState == 3) {
		result = "<p>&nbsp;</p><div style=\"text-align: center; margin-left: auto; margin-right: auto;\"><img src=\"" + loading.src + "\" width=\"220\" height=\"19\" alt=\"\" title=\"Sending...\" /><br />Enviando...</div>";
		document.getElementById(divId).innerHTML = result;
	} else if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			result = http_request.responseText;
			document.getElementById(divId).innerHTML = result;
			
			// If CAPTCHA failed, then repopulate it
			/*if (result.indexOf("CAPTCHA") > -1) {
				Recaptcha.reload();
			} else {*/
				// Clear form after email has been sent
				document.forms["contact_form"].reset(); // Not robust, I know (will modify later)
				/*Recaptcha.reload(); // Display a new CAPTCHA
			}*/
		} else {
			alert("Callback failed. There was a problem with the request.");
		}
	}
}

// Remove any unneccessary whitespace
function trimField(field) {
	re = /(^\s*)([^\b]*\S)(\s*$)/;
	if (re.test(document.getElementById(field).value)) {
		document.getElementById(field).value = document.getElementById(field).value.replace (re, "$2");
		return document.getElementById(field).value;
	} else {
		document.getElementById(field).value = "";
		return "";		
	}
}

// The phone field shows how the user should input a phone number; on the first focus, the value will be cleared so the user can enter a phone number
function clearField(field_id) {
	if (first_time) {
		document.getElementById(field_id).value = "";
		first_time = false;
	}
}