var DB_results=new Array();
var DB_current_record=-1;

document.write('<DIV style="POSITION: absolute; DISPLAY: none; TOP: 0px; LEFT: 0px; border: 1px solid gray" id=floating_div></DIV>');

var admin=false;
var errstate='';

if (runningInGr8stuff() || location.hostname=='pandanote' || location.hostname=='localhost') {
	var hst=location.hostname;
	if (hst=='') hst='pandanote';
	var dbserver='http://'+hst+':90/webclients/constantiawaldorfnightmarket.co.za/dbserver.asp';
} else {
	var dbserver='http://www.constantiawaldorfnightmarket.co.za/dbserver.asp';
}

function IE() { if(navigator.appName == "Microsoft Internet Explorer") { return true; } else { return false; } }

function gpn( ) // gpn stands for 'get parameter names'
{
	var params = new Array( );
	var regex = /[\?&]([^=]+)=/g;
	while( ( results = regex.exec( window.location.href ) ) != null )
		params.push( results[1] );
	return params;
}

function gpnv(pn)  // gpn stands for 'get parameter names value'
{
	var s=location.search.substr(1).split(pn+'=')[1];
	var y=s.indexOf('&');
	if (y>=0) s=s.substr(0,y);
	return s;
}

function show_login() {
	getEle('loginbut').style.display='none'; getEle('logindet').style.display='inline';
	if (runningInGr8stuff()) {
		var loginfrm=document.forms['loginfrm'];
		loginfrm.email.value='admin'; loginfrm.pw.value='cwnmadmin';
	}
}
function hide_login() { logindet.style.display='none'; loginbut.style.display='inline'; }
function go_login() {
	var loginfrm=document.forms['loginfrm'];
	var email=loginfrm.email.value; var pw=loginfrm.pw.value;
	ajax_get(dbserver+'?action=login&email='+escape(email)+'&pw='+escape(pw),valid_login);
}

function valid_login(email,pw) {
	if (!(r=ajax())) { if (errstate!='') { alert(errstate); } return false; }
	if (r=='invalid') { alert('Login failed: Invalid email or password.\nPlease try again.'); return false; }
	if (r=='0') {
		if (runningInGr8stuff()) {
			parent.we_submenu('^gotofolder_admin/clients.htm');
		} else { location.href='admin/clients.htm'; }
//		loginbut.innerHTML='<A title=Logout href=javascript:logout();>Logout</A>';
//		hide_login();
//		return true;
	} else {
		if (runningInGr8stuff()) {
			parent.we_submenu('^gotofolder_admin');
		} else { location.href='admin/index.htm'; }
	}
}

function logout() {
	ajax_get(dbserver+'?action=logout',logged_out);
}
function logged_out() {
	loginbut.innerHTML='<A title="Registered stall holders and administrations login" href="javascript:show_login();">Login</A>';
}

function goto_applications() {
	if (runningInGr8stuff()) {
		parent.we_submenu('^gotofolder_applications/info.htm');
	} else { location.href='applications/info.htm'; }
}

function goto_fair_applications() {
	if (runningInGr8stuff()) {
		parent.we_submenu('^gotofolder_applications/fair_info.htm');
	} else { location.href='applications/fair_info.htm'; }
}

function goto_root() {
	if (runningInGr8stuff()) {
		parent.we_submenu('^gotofolder_../');
	} else { location.href='../index.htm'; }
}

function goto_root_page(pg) {
	if (runningInGr8stuff()) {
		parent.we_submenu('^gotofolder_../'+pg);
	} else { location.href='../'+pg; }
}

// -----------
// DB routines
// -----------

function setCurrDB(r) {
	DB_results=r.split('<br>');
	if (r=="") { DB_current_record=-1; } else { DB_current_record=0; }
}
function setTable(dataset,tbl) {
	if (dataset.indexOf('<'+tbl+'>')<0) { DB_results=''; return false; }
	var d=dataset.split('<'+tbl+'>');
	var r=d[1].split('</'+tbl+'>')[0];
	setCurrDB(r);
	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 '';
	return getFieldVal(DB_results[DB_current_record],fld);
}

function getFieldVal(srec,fld) {
	var s='|'+srec+'|';
	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 getFieldCond(fld,cond) {
	for (i=0; i<DB_results.length; i++) {
		var s='|'+DB_results[i]+'|';
		var y=s.indexOf('|'+cond+'|');
		if (y>=0) { DB_current_record=i; return getField(fld); }
	}
	return '';
}

function getDataTableFieldCond(dataset,tbl,fld,cond) {
	if (dataset.indexOf('<'+tbl+'>')<0) { return ''; }
	var d=dataset.split('<'+tbl+'>');
	var r=d[1].split('</'+tbl+'>')[0];
	var xDB_results=DB_results; var xDB_current_record=DB_current_record;
	setCurrDB(r);
	var s=getFieldCond(fld,cond);
	DB_results=xDB_results; DB_current_record=xDB_current_record;
	return s;
}

function getDataTableRecordCond(dataset,tbl,cond) {
	if (dataset.indexOf('<'+tbl+'>')<0) { return ''; }
	var d=dataset.split('<'+tbl+'>');
	var r=d[1].split('</'+tbl+'>')[0];
	r='|'+r.replace(/\<br\>/gi,'|<br>|')+'|';
	var y=r.indexOf('|'+cond+'|');
	if (y>=0) {
		y=r.lastIndexOf('<br>',y);
		if (y<0) { y=0; } else { y=y+4; }
		r=r.substr(y+1);
		var ye=r.indexOf('<br>');
		if (ye<0) ye=r.length;
		return r.substr(0,ye-1);
	}
	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 addslashes(t) {
	var s=t.replace(/\\/g,'\\\\');
	s=s.replace(/\'/g,"\\\'");
	s=s.replace(/\"/g,'\\\"');
	s=s.replace(/\<br\>/gi,'<br id=br>');
	return s;
}

// -------------
// Misc routines
// -------------

function formatDate(d) {
	var yr=d.substr(0,4); var m=d.substr(4,2); var d=d.substr(6);
	var dt=new Date(parseFloat(yr),parseFloat(m)-1,parseFloat(d));
	var x = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
	var mt= new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	return x[dt.getDay()]+', '+dt.getDate()+' '+mt[dt.getMonth()]+' '+dt.getFullYear();
}

function isLoggedIn() {
	var r=getHttp(dbserver+'?action=loggedin');
	if (r=='false') { return false; } else { return r; }
}

function runningInGr8stuff() { if (parent.location.href==location.href) { return false; } else { return true; } }

// ----------------
// GENERAL ROUTINES
// ----------------

function page_print() {
	var st=document.getElementsByClassName('bg-dark');
	if (st.length>=1) { var tite=st[0]; } else { var tite=st; }
	tite.width='100%'; tite.rows[0].style.display='none';
	var bodybg=document.bgColor;
	document.bgColor='white';
//alert(document.bgColor);
	window.print();
	tite.width='980px'; tite.rows[0].style.display='inline';
	document.bgColor=bodybg;
}

document.getElementsByClassName = function(className){
    var nodes = document.getElementsByTagName('*');
    var matches = new Array();
    for(i=0;i<nodes.length;i++){
        var tmp = nodes[i].getAttribute('class') || nodes[i].getAttribute('className');
        if(tmp == className) matches[matches.length] = nodes[i];
    }
    return matches;
}

// --------------------
// ASYNC AJAX Functions
// --------------------
/*
 * USAGE:
 *
 * in code: ajax_get(url,nextstep);
 *
 * function nextstep() {
 *	  if (axmlhttp.readyState != 4) return;
 *    if (!(r=ajax())) { if (errstate!='') { alert(errstate); } return; }
 *    -- code goes here -- r contains response
 * }
*/

document.write('<DIV id="ajaxmsg" style="display:none;position:absolute;left: 45%;top: 40%;vertical-align:middle;background-color:transparent;z-index:40;"><img src=pics/aniloading.gif></DIV>');
var axmlhttp = axmlhttp_create();

function ajax_get(serverUrl,respFunc) {
	var rand = Math.floor(Math.random()*1000001);
	try {
		errstate='';
		getEle('ajaxmsg').style.display='inline';
		if (serverUrl.indexOf('?')>=0) { var url=serverUrl+'&r='+rand; } else { var url=serverUrl+'?r='+rand; }
		axmlhttp.open("GET", url, true);
		axmlhttp.onreadystatechange = respFunc;
		axmlhttp.send(null);
	} catch (genException) { errstate=''; }
//	} catch (genException) { alert('Error: Unable to connect.'); }

}

function ajax_post(serverUrl,postdata,respFunc,async) {
	if (async===undefined || async===null) { var asy=true; } else { var asy=async; }
	if (!IE()) axmlhttp = axmlhttp_create();
	var rand = Math.floor(Math.random()*1000001);
	try {
		getEle('ajaxmsg').style.display='inline';
		var pdata=postdata; errstate='';
		if (serverUrl.indexOf('?')>=0) { var url=serverUrl+'&r='+rand; } else { var url=serverUrl+'?r='+rand; }
//		axmlhttp.open("POST", url, false);
//		axmlhttp.open("POST", url, true);
		axmlhttp.open("POST", url, asy);
		axmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		axmlhttp.setRequestHeader('Content-Length',pdata.length);
		axmlhttp.onreadystatechange = respFunc;
		axmlhttp.send(pdata);
//if (axmlhttp.readyState==4) alert(axmlhttp.responseText);
	} catch (genException) { errstate=''; }
//	} catch (genException) { alert('Error: Unable to connect.'); }
}

function ajax() {

	try {
		if (axmlhttp.readyState == 4) // Completed
		{
			
			getEle('ajaxmsg').style.display='none';

			if (axmlhttp.status == 200 || axmlhttp.status == 0) // “OK”
			{ errstate=''; return fixreply(axmlhttp.responseText); }

			else if (axmlhttp.status == 403) // “Forbidden”
			{ errstate="Error (axmlhttp): Access denied.!"; }

			else if (axmlhttp.status == 404) // “URL Not Found”
			{ errstate="Error (axmlhttp): URL not found. Please check the URL!"; }

			else // Miscellaneous
			{ errstate="Error (axmlhttp): status code " + axmlhttp.status; }
		}
		return false;
	}
	catch (genException) { errstate="Error (axmlhttp): Unknown"; }
}

// Create the xmlHttpRequest object and return it.

function axmlhttp_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;
}

function getFormParams(obj) {
	var getstr = "?";
	for (i=0; i<obj.elements.length; i++) {
		if (obj.elements[i].tagName == "INPUT") {
			if (obj.elements[i].type == "text" || obj.elements[i].type == "hidden") {
				getstr += obj.elements[i].name + "=" + escape(obj.elements[i].value) + "&";
			}
			if (obj.elements[i].type == "checkbox") {
				if (obj.elements[i].checked) {
					getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
				} else {
					getstr += obj.elements[i].name + "=&";
				}
			}
			if (obj.elements[i].type == "radio") {
				if (obj.elements[i].checked) {
					getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
				}
			}
		}   
		if (obj.elements[i].tagName == "SELECT") {
			var sel = obj.elements[i];
			getstr += sel.name + "=" + escape(sel.options[sel.selectedIndex].value) + "&";
		}
		if (obj.elements[i].tagName == "TEXTAREA") {
			getstr += obj.elements[i].name + "=" + escape(obj.elements[i].value) + "&";
		}
         
	}
	if (getstr=='?') { getstr=''; } else { getstr=getstr.substr(0,getstr.length-1); }
	return getstr;
}

// -----------------
// Support functions
// -----------------

function fixreply(r) {
	var s=r.replace(/\r/g,'').replace(/\n/g,'');
	s=Trim(s);
	s=s.replace(/\{10\}/g,'\n').replace(/\{13\}/g,'\r');
	return 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;
}


