// JavaScript Document
var xmlHttp

//will do multiple ajax calls based on an array of call arrays via doAjaxQuery below...
function doQueries(arrays){
	var i = 0;
	for(i=0;i<arrays.length;i++){
		doAjaxQuery(arrays[i]);	
	}
}

function doJsonQuery(method,url,query){ 
	//0-'post' or 'get', 1-url of file - 'contacts', 2-query
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null){
		alert ("Browser does not support HTTP Request");
		return;
	}
	
	xmlHttp.onreadystatechange=function(){ jsonStateChange(); };
	url = url + ".php";

	if(query.length>0){vop = "&";}else{vop = "?";}

	if(method=='post'){
		var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
		xmlHttp.open("POST",url,true);
		xmlHttp.setRequestHeader("Content-Type", contentType);
		xmlHttp.send(query+vop+"sid="+Math.random());		
	}else if(method=='get'){
		url = url + query;
		url=url+vop+"sid="+Math.random();
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}else{
		alert("no query request type specified");	
	}
}

function doAjaxQuery(inArr){ 
	//0-'post' or 'get', 1-url of file - 'contacts', 2-query, 3-output elementID, 4-follow up query?, 5-append html?
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null){
		alert ("Browser does not support HTTP Request");
		return;
	}
	
	xmlHttp.onreadystatechange=function(){ stateChange(inArr); };
	url = inArr[1] + ".php";

	if(inArr[2].length>0){
			vop = "&";
	}else{
			vop = "?";	
	}

	if(inArr[0]=='post'){
		var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
		xmlHttp.open("POST",url,true);
		xmlHttp.setRequestHeader("Content-Type", contentType);
		xmlHttp.send(inArr[2]+vop+"sid="+Math.random());		
	}else if(inArr[0]=='get'){
		url = url + inArr[2];
		url=url+vop+"sid="+Math.random();
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}else{
		alert("no query request type specified");	
	}
}

function jsonStateChange(){ 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
		crap = xmlHttp.responseText;
	}else{
		alert(xmlHttp.readyState);	
	} 
}

function stateChange(inArr){ 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
		if(inArr[5]){ 
			document.getElementById(inArr[3]).innerHTML += xmlHttp.responseText;
		}else{
			document.getElementById(inArr[3]).innerHTML=xmlHttp.responseText;
		}
		if(inArr[4].length>0){
			doAjaxQuery(inArr[4]);	
		}
	}else{
		//alert(xmlHttp.readyState);	
	} 
}

function GetXmlHttpObject(){
	var xmlHttp=null;
	// Firefox, Opera 8.0+, Safari
	try{	 
		xmlHttp=new XMLHttpRequest();
	}
	//Internet Explorer
	catch (e){	
		try{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e){
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function showHide(element,toggleOrSet){//element is the id or object, toggleOrSet can be ['show'/'hide'] - will toggle if empty
	var obj = objCheck(element);
	if(!toggleOrSet){
		toggleOrSet = 'toggle';	
	}
	if(toggleOrSet == 'toggle'){
		obj.style.display = (obj.style.display != 'none' ? 'none' : '' );
	}
	if(toggleOrSet == 'show'){
		obj.style.display = '';
	}
	if(toggleOrSet == 'hide'){
		obj.style.display = 'none';
	}
}

function objCheck(object){
	var obj = new Object;
	if(typeof object == 'object'){
		obj = object;
	}else{
		obj = document.getElementById(object);
	}
	if(!obj){
		alert('Javascript error: ' + object + ' is not a DOM object');
		return false;
	}else{
		return obj;
	}
}
