function getXHTTP() {
    var xhttp;
    try {   // The following "try" blocks get the XMLHTTP object for various browsers
        xhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (e) {
        try {
            xhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } 
        catch (e2) {
            // This block handles Mozilla/Firefox browsers...
            try {
                xhttp = new XMLHttpRequest();
            } 
            catch (e3) {
                xhttp = false;
            }
        }
    }
    return xhttp; // Return the XMLHTTP object
}

function doHttpRequest(httpObj, page, post, callback) {  // This function does the AJAX request
    var url = page + "?" + post;
   
    //httpObj.open("POST", page, true);
    httpObj.open("GET", url, true );
    httpObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    httpObj.onreadystatechange = callback;
    //http.send(post);
    httpObj.send(null);
}

function loadhtml(httpObj, url, id) {
    httpObj.open("GET", url+"?boeing787=barresss", false);	// The "?" is to force the browser to bypass the local cache (for now)
    httpObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    httpObj.send(null);
    document.getElementById(id).innerHTML = httpObj.responseText;
}

function detectBrowser() {
/*   
     if ((navigator.appName.indexOf("Netscape") != -1))
        browser = "1";
    if ((navigator.appName.indexOf("Microsoft") != -1))
        browser = "0";
        
*/ 

// re-written by jf


  if ((navigator.userAgent.indexOf("MSIE") != -1))
        browser = kBROWSER_MSIE;
     

  if ((navigator.userAgent.indexOf("Firefox") != -1))
        browser = kBROWSER_FIREFOX;
        
     
  if ((navigator.userAgent.indexOf("Safari") != -1))
        browser = kBROWSER_SAFARI; 
        
    
    if ((navigator.userAgent.indexOf("iPhone") != -1))
       g_device_is_iphone = 1;
       
         
     if ((navigator.userAgent.indexOf("iPod") != -1))
       g_device_is_ipod = 1;   
       
       
}

function readCookie() {
    cookie = document.cookie;
}

// Connect class - manages Ajax request object pool
// Methods: init, request
function Connect() {
	var httpObjs = new Array(NUM_CONCURRENT_REQUESTS);
	var pendingRequests = new Array(NUM_CONCURRENT_REQUESTS);
	var tags = new Array(NUM_CONCURRENT_REQUESTS);
	var callback = null;
	
	this.init = init;
	this.request = request;
	
	// Public Methods
	function init(cb) {
		var size = httpObjs.length;
		for (var i = 0; i<size; i++) {
			httpObjs[i] = getXHTTP();
			pendingRequests[i] = false;
		}
		callback = cb;
	}
	
	function request(url, post, tag) {
		var size = httpObjs.length;
		for (var i = 0; i<size; i++) {
			if (!pendingRequests[i]) {
				pendingRequests[i] = true;
				tags[i] = tag;
				makeHttpRequest(httpObjs[i], url, post);
				break;
			}
		}
		if (i == size) {
			if (url != "s/synch.php")
				alert("ERROR: httpobj pool empty; abandoned ajax request:"+url+"?"+post);
		}
	}
	
	// Private methods
	function makeHttpRequest(hObj, page, post) {
		var url = page + "?" + post;
    	hObj.open("GET", url, true );
    	hObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	var handlerFunction = readyStateHandler(hObj);
    	hObj.onreadystatechange = handlerFunction;
    	hObj.send(null);
	}
	
	function readyStateHandler(hObj) {
		// Return an anonymous function that listens to the Ajax request instance  
		return function() {
			var tag = SERVICE_NONE;
			if (hObj.readyState == 4) {
        		// Complete
        		var size = httpObjs.length;
        		for (var i = 0; i<size; i++) {
        			if (httpObjs[i] == hObj) {
        				pendingRequests[i] = false;
        				tag = tags[i];
        				break;
        			}
        		}
        		if (i == size)
        			alert("ERROR: Couldn't locate httpobj in callback");
        		
        		callback(hObj.responseText, tag);
        	}
        }
	}
}

var cookie;
var browser=-1;
var realName;
var userId;
var numLogins;


var g_device_is_iphone = 0;
var g_device_is_ipod = 0;

// Constants

var kBROWSER_MSIE = "0";
var kBROWSER_FIREFOX = "1";
var kBROWSER_SAFARI = "2";


var SERVICE_NONE = -1;
var SERVICE_LOGOUT = 1;
var SERVICE_JOIN = 2;
var SERVICE_WAGER = 3;
var SERVICE_SYNCH = 4;
var SERVICE_REVERSE = 5;
var SERVICE_DELETE = 6;

var PLAYID_START = 0;
var DRIVEID_START = 1000;
var QUARTERID_START = 1500;
var GAMEID_START = 1600;

var NUM_CONCURRENT_REQUESTS = 4;

detectBrowser();
readCookie();