// ----------
// Initialise
// ----------

if (runningInGr8stuff() || location.hostname=='pandanote' || location.hostname=='localhost') {
	var hst=location.hostname;
	if (hst=='') hst='pandanote';
	var dbserver='http://'+hst+':90/webclients/capetowntransportation.co.za/dbserver.asp';
} else {
	var dbserver='http://www.capetown-airport-transfers.co.za/dbserver.asp';
}

var xmlhttp = xmlhttp_create();
var errstate='';
var DB_results=new Array();
var DB_current_record=-1;

function execSQL(sql) {
	// Execute the sql on the server and return the records in the array DB_results.
	// Each element of the array is of format fieldname=fieldvalue|..|fieldname=fieldvalue
	//
	// Returns TRUE if succesful else returns FALSE (errstate holds error msg)
	
	DB_current_record=-1;
	if (sql.toLowerCase().substr(0,8)=='getstats') {
		// getstats&yr=2009&mth=6&dy=17
		var r=getHttp(dbserver+'?action='+sql);
	} else {
		var r=getHttp(dbserver+'?sql='+escape(sql));
	}
	if (errstate!='') { return false; }
	if (r.toLowerCase().indexOf('error')==0) { errstate=r; }
	if (r.toLowerCase().indexOf('<html>')>=0) { errstate=r; }
	if (errstate!='') {
		var es=errstate;
//		if (!isLoggedIn()) { errstate='Your session has expired.'; location.href='../index.htm'; } else { errstate=es; }
		return false;
	}
	DB_results=r.split('<br>');
//	DB_current_record=0;
	if (r=="") { DB_current_record=-1; } else { DB_current_record=0; }
	return true;
}

function moveFirst() { DB_current_record=0; }
function moveNext() { DB_current_record+=1; if (DB_current_record>=DB_results.length) { DB_current_record=-1; } }
function moveLast() { DB_current_record=DB_results.length-1; }
function DB_eof() { if (DB_current_record<0) { return true; } else { return false; } }

function getField(fld) {
	if (DB_current_record>=DB_results.length) return '';
	var s='|'+DB_results[DB_current_record]+'|';
	var y=s.indexOf('|'+fld+'=');
	if (y>=0) {
		y=s.indexOf('=',y); var y1=s.indexOf('|',y);
		return s.substr(y+1,y1-y-1).replace(/\{124\}/g,'|').replace(/\{38\}/g,"&").replace(/\{61\}/g,"=").replace(/\{32\}/g," ");
	} else { return ''; }
}

function setField(fld,fldval) {
	if (DB_current_record>=DB_results.length) return false;
	var s='|'+DB_results[DB_current_record]+'|';
	var y=s.indexOf('|'+fld+'=');
	if (y>=0) {
		y=s.indexOf('=',y); var y1=s.indexOf('|',y);
		s=s.substr(0,y+1)+fldval+s.substr(y1);
		s=s.substr(1); s=s.substr(0,s.length-1);
		DB_results[DB_current_record]=s;
		return true;
	} else { return false; }
}

function getHttp(serverUrl) {
	var rand = Math.floor(Math.random()*1000001);
	try {
		xmlhttp.open("GET", serverUrl+'&r='+rand, false);
		xmlhttp.send(null);
		if (xmlhttp_receive_state()) {
			return fixreply(xmlhttp.responseText);
		} else { return errstate; }
	} catch (genException) { return 'Error: Unable to connect. Check that internet is up.'; }
}

function postHttp(serverUrl,postdata) {
	try {
		xmlhttp.open("POST", serverUrl, false);
		xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		xmlhttp.setRequestHeader('Content-Length',postdata.length);
		xmlhttp.send(postdata);
		if (xmlhttp_receive_state()) {
			return fixreply(xmlhttp.responseText);
		} else { return errstate; }
	} catch (genException) { return 'Error: Unable to connect. Check that internet is up.'; }
}

function isLoggedIn() {
	var r=getHttp(dbserver+'?action=loggedin');
	if (r=='true') { return true; } else { return false; }
}

function runningInGr8stuff() { if (parent.location.href==location.href) { return false; } else { return true; } }

// -----------------
// Support functions
// -----------------

function fixreply(r) {
	var s=r.replace(/\r/g,'').replace(/\n/g,'');
	return Trim(s);
}
function Trim(v) {
	if (v=='') return v;
	var s=v;
	while (s.substr(0,1)==' ') { s=s.substr(1); }
	while (s.substr(s.length-1,1)==' ') { s=s.substr(0,s.length-1); }
	return s;
}

/*
Create an instance of xmlHttpRequest object as xmlhttp, sends and
Receives requests and response respectively.
*/

// Create the xmlHttpRequest object and return it.

function xmlhttp_create() {

	var xmlHttpRequest = false;
	//Internet Explorer
	try { xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (xml2Exception) {
		try { xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); }
		catch (xmlException) { xmlHttpRequest = false; }

	}

	//Netscape, Mozila, Firefox, Safari, Opera
	if (!xmlHttpRequest && typeof XMLHTTPRequest == 'undefined') {
		try { xmlHttpRequest = new XMLHttpRequest(); }
		catch (genException) { XMLHttpRequest = false; }
	}
	return xmlHttpRequest;
}

// Send a request to the server url and set response function

function xmlhttp_send(httpMethod, serverUrl, isAsync, respFunc) {
	xmlhttp.open(httpMethod, serverUrl, isAsync);
	xmlhttp.onreadystatechange = respFunc;
	xmlhttp.send(null);
}

// Check the state and the status of the response
// readystate: 0 – uninitialized, 1 – loading, 2 – loaded, 3 – interactive, 4 – complete

function xmlhttp_receive_state() {

	try {
		if (xmlhttp.readyState == 4) // Completed
		{
			if (xmlhttp.status == 200) // “OK”
			{ errstate=''; return true; }

			else if (xmlhttp.status == 403) // “Forbidden”
			{ errstate="Error (xmlhttp): Access denied.!"; }

			else if (xmlhttp.status == 404) // “URL Not Found”
			{ errstate="Error (xmlhttp): URL not found. Please check the URL!"; }

			else // Miscellaneous
			{ errstate="Error (xmlhttp): status code " + xmlhttp.status; }
		}
		return false;
	}
	catch (genException) { errstate="Error (xmlhttp): Unknown"; }
}

