// This handles getting the correct AJAX object.
function getRequestObject() {
	var request; //declare the variable to hold the object.
	try { 
		request = new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch (e) {
		try { 
			request = new ActiveXObject("Microsoft.XMLHTTP"); 
		}
		catch (e) { 
			try { 
				request = new XMLHttpRequest(); 
			}
			catch (e) { 
				request = null; 
			}
		}
	}

	return request;
}

// This handles the control of the XMLHttpRequest object.
function XhttpRequest() {
	var xrequest = getRequestObject();
	var bComplete = false;
	this.bInitialized = false;

	if(xrequest == null) {
		alert('xrequest == null');
	}
	else {
		this.bInitialized = true;
	}
	
	this.connect = function(sURL, sMethod, sVars, func) {		
		if(xrequest == null) {
			alert("Can't connect: request object is NULL");
			return false;
		}

		bComplete = false;
		sMethod = sMethod.toUpperCase();

		try {
			if(sMethod == "GET") {
				
				if((sVars != null) && (sVars.length > 0)) {
					sURL = sURL+'?'+sVars+'';
				}
				
				xrequest.open(sMethod, sURL, true);
				sVars = "";
			}
			else {
				xrequest.open(sMethod, sURL, true);
				xrequest.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
				xrequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
			}			
			xrequest.onreadystatechange = function() {
				if(xrequest.readyState == 4 && bComplete == false) {
					bComplete = true;

					//alert('responsetext = ' + xrequest.responseText);

					if(xrequest.status == 200) {
						func(xrequest.responseText);
					}
					else {
						window.location="https://my.hairboutique.com/";
					}
					xrequest = null;
				}
			};
			xrequest.send(sVars);
		}
		catch(z) {
			alert('connect caught exception');
			return false; 
		};
		return true;
	};
	
	return this;
}