function disableButtons(Action) {
	if (document.forms.length > 0) {
		var field = document.forms[0];
		for (i = 0; i < field.length; i++) {
			if ((field.elements[i].type == "submit")) {
//				if ((field.elements[i].value == "Siguiente")) {
					field.elements[i].disabled = Action;
					return false;
//				}
			}
		}
	}
}
function ajaxRead(Field, Address1, Address2, City, State, Zip) {
disableButtons(true);
	if (MM_findObj(Zip).value == '') {
		MM_findObj(City).value = '';
		MM_findObj(State).value = '';
	}
	insertObj('', Address1);
	insertObj('', Address2);
	insertObj('', City);
	insertObj('', State);
	insertObj('', Zip);
	
	//Check for variables.
	var reqAddress1 = ((typeof Address1 == 'undefined')?'':MM_findObj(Address1).value);
	var reqAddress2 = ((typeof Address2 == 'undefined')?'':MM_findObj(Address2).value);
	var reqCity = ((typeof City == 'undefined')?'':MM_findObj(City).value);
	var reqState = ((typeof State == 'undefined')?'':MM_findObj(State).value);
	var reqZip = ((typeof Zip == 'undefined')?'':MM_findObj(Zip).value);
	var reqZip5 = ((typeof Zip5 == 'undefined')?'':MM_findObj(Zip5).value);
	if (Field.name == MM_findObj(Zip).name) {
		reqCity = '';
		reqState = '';
	}

	//Check and use correct XMLHTTP.
	function createXMLHttp() {
		if (typeof XMLHttpRequest != "undefined") {
			return new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			var aVersions = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
			for (var i = 0; i < aVersions.length; i++) {
				try {
					var oXmlHttp = new ActiveXObject(aVersions[i]);
					return oXmlHttp;
				} catch (oError) {
					//Do nothing
				}
			}
		}
		throw new Error("XMLHttp object could be created.");
	}
	var xmlObj = createXMLHttp();
	
/*	var xmlObj = null;
	if (window.XMLHttpRequest) {
		xmlObj = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		return;
	}*/

	//Execute action according to ready state
	xmlObj.onreadystatechange = function() {
		if (xmlObj.readyState == 4) { //Complete
			function getXml(id) {
				return xmlObj.responseXML.getElementsByTagName(id)[0];
			}
			var rspAddress1 = ((getXml('Address1') == null)?'':capitalizeText(getXml('Address1').firstChild.data));
			var rspAddress2 = ((getXml('Address2') == null)?'':capitalizeText(getXml('Address2').firstChild.data));
			var rspCity = ((getXml('City') == null)?'':capitalizeText(getXml('City').firstChild.data));
			var rspState = ((getXml('State') == null)?'':getXml('State').firstChild.data);
			var rspZip = ((getXml('Zip5') == null)?'':getXml('Zip5').firstChild.data);
			var rspZip4 = ((getXml('Zip4') == null)?'':getXml('Zip4').firstChild.data);
			var rspReturnText = ((getXml('ReturnText') == null)?'':getXml('ReturnText').firstChild.data);
			
			if (getXml('Error') == null) { //No Error
				disableButtons(false);
				updateObj(1, Address1, rspAddress1);
				updateObj(1, Address2, rspAddress2);
				updateObj(1, City, rspCity);
				updateObj(1, State, rspState);
				updateObj(1, Zip, rspZip + '-' + rspZip4);
				
				//If any requests do not match responses then show error
				if (reqAddress2 != rspAddress2 || reqCity != rspCity || reqState != rspState || reqZip != rspZip || rspReturnText != '') {
					if (rspReturnText != '') {
						disableButtons(true);
						//If matched phrase returns translate it to Spanish.
						var MatchReturn = 'Default address: The address you entered was found but more information is needed (such as an apartment, suite, or box number) to match to a specific address.';
						if (rspReturnText == MatchReturn) {
							rspReturnText = 'El domicilio que introdujo fue encontrado, pero se requiere información adicional (ejemplo: número de apartamento, suite, ó número de buzón)  para que concuerde a un domicilio específico.';
						}
						insertObj(rspReturnText, Address1);
					}
					if (MM_findObj(Address2).value == '') {
						disableButtons(true);
					}
				}
			} else { //Yes Error
				disableButtons(true);
				
				//Alert user of missing entry.
				var Field = ((MM_findObj(Address2).value == '')?Address2:Zip);
				insertObj('Llene este campo.', Field);
				
				//Highlight incorrect entry.
				var rspDescription = getXml('Description').firstChild.data;
				switch (getXml('Number').firstChild.data) {
					case '-2147219399': //Zip
						insertObj('Codigo postal invalido', Zip);
						break;
					case '-2147219400x': //City
						insertObj('Ciudad no encontrada', City);
						break;
					case '-2147219401': //Address
						insertObj('Dirección no encontrada, <a href="http://www.mapquest.com/maps/map.adp?formtype=address&country=US&popflag=0&latitude=&longitude=&name=&phone=&level=&addtohistory=&cat=&address=' + reqAddress2.replace(' ','+') + '+' + reqAddress1 + '&city=' + reqCity + '&state=' + reqState + '&zipcode=' + reqZip + '" target="_blank">Verifica en Mapquest</a>', Address2);
//						insertObj('Dirección no encontrada', Address2);
						break;
					case '-2147219402x': //State
						insertObj('Estado no encontrado', State);
						break;
					case '-2147219403': //Address
						insertObj('More than one address found', Address2);
						break;
				}
			}
		}
    }
	
	//Create string to post
	var PostData = '/servicios/internet/dsl/addresses.asp';
		PostData += '?AddressID=0';
		PostData += '&Address1=' + reqAddress1;
		PostData += '&Address2=' + reqAddress2.replace('½','1/2').replace('¼','1/4').replace('¾','3/4');
		PostData += '&City=' + reqCity;
		PostData += '&State=' + reqState;
		PostData += '&Zip5=' + reqZip.replace('-','');
	if (reqAddress2 == '' && reqCity == '' && reqState == '' && reqZip != '') {
		PostData += '&Type=C';
	} else if (reqAddress2 != '' && reqCity != '' && reqState != '' && reqZip == '') {
		PostData += '&Type=Z';
	} else {
		PostData += '&Type=A';
	}
	
	//Send to process
	xmlObj.open ('GET', PostData, true);
	xmlObj.send ('');
}
function updateObj(type, obj, data) {
//	var el = MM_findObj(obj);
	switch(type) {
		case 1: // Insert value to a form field.
			MM_findObj(obj).value = data;
			break;
		case 2: // Insert value to an inside of a tag.
			MM_findObj(obj).firstChild.data = data;
			break;
		case 3: // Insert value to an inside of a tag.
			MM_findObj(obj).innerHTML = data;
			break;
	}
}
function insertObj(message, target) {
	var el = MM_findObj(target);
	if (message != el.value) {
		var MsgId = 'Msg' + target;
		if (MM_findObj(MsgId) == null) {
			// create an empty element node without an ID, any attributes, or any content
			var sp1 = document.createElement('div');
			
			// give it an id attribute called 'newSpan'
			sp1.setAttribute('id', MsgId);
			sp1.setAttribute('className', 'error');
			sp1.style.color = '#c00';
			
			// create some content for the newly created element.
			var sp1_content = document.createTextNode(message);
		
			// apply that content to the new element
			sp1.appendChild(sp1_content);
			var parentDiv = el.parentNode;
			
			// insert the new element into the DOM before sp2
			parentDiv.insertBefore(sp1, el);
		} else {
//			MM_findObj(MsgId).firstChild.data = message;
//		    MM_findObj(MsgId).parentNode.removeChild(MM_findObj(MsgId));
			if (message == ''){
				MM_findObj(MsgId).firstChild.data = message;
			} else {
				MM_findObj(MsgId).innerHTML = message;
			}
		}
	}
}
function capitalizeText(text) {
	var tmpStr, tmpChar, preString, postString, strlen;
	tmpStr = text.toLowerCase();
	stringLen = tmpStr.length;
	if (stringLen > 0) {
		for (i = 0; i < stringLen; i++) {
			if (i == 0) {
				tmpChar = tmpStr.substring(0,1).toUpperCase();
				postString = tmpStr.substring(1,stringLen);
				tmpStr = tmpChar + postString;
			} else {
				tmpChar = tmpStr.substring(i,i+1);
				if (tmpChar == " " && i < (stringLen-1)) {
					tmpChar = tmpStr.substring(i+1,i+2).toUpperCase();
					preString = tmpStr.substring(0,i+1);
					postString = tmpStr.substring(i+2,stringLen);
					tmpStr = preString + tmpChar + postString;
				}
			}
		}
	}
	return tmpStr;
}
function removeHyphen(t) {
	var patt = /(\d{5}).*(\d{4})/;
	var donepatt = /^(\d{5})-(\d{4})$/;
	var str = t.value;
	var result;
	if (!str.match(donepatt)) {
		result = str.match(patt);
		if (result!= null) {
			t.value = t.value.replace(/[^\d]/gi,'');
			str = result[1] + '-' + result[2];
			t.value = str;
		} else {
			if (t.value.match(/[^\d]/gi))
			t.value = t.value.replace(/[^\d]/gi,'');
		}
	}
}
