	var lrequery;
	var sortby;
	var page=0;
	var useajax=true;
	
	function requery(webq,webparm,webform,targetid) {
		if (lrequery) {
			doquery(webq,webparm,webform,targetid);
			lrequery = false;
		} else {
			lrequery = true;
			//delay for double click;
			setTimeout("delayquery(webq,webparm,targetid)","400");		
		}	
	}
	
	function delayquery(webq,webparm,targetid) {
		if (lrequery) {
			doquery(webq,webparm,targetid);
			lrequery = false;
		}		
	}
	
	function doquery(webq,webparm,webform,targetid) {
		if (!(targetid)) {
			targetid="divdtl";
		}		
		showWait();
		var callback = function(){setTimeout("hideWait()","100")};
		if (useajax && !webparm) {
			webparm = setParm(webform);	
		}	
// 		no ajax, full page refresh 
//		useajax=false;	
		if (!useajax || !loadURLtoDoc(webq,"POST",webparm,targetid,callback)) {
			//full page no ajax; if webform is blank the form will submit itself to the current URL
			if (webform) {
				$e(webform).submit();
			} 
		}		
	}	

	function requeryJ(webq,webparm,webform,jasoncallback) {
		if (lrequery) {
			doqueryJ(webq,webparm,webform,jasoncallback);
			lrequery = false;
		} else {
			lrequery = true;
			//delay for double click;
			setTimeout("delayqueryJ(webq,webparm,targetid)","400");		
		}	
	}
	
	
	function doqueryJ(webq,webparm,webform,jasoncallback) {
		showWait();
		var callback = function(){setTimeout("hideWait()","100")};
		if (useajax && !webparm) {
			webparm = setParm(webform);	
		}	
// 		no ajax, full page refresh 
//		useajax=false;	
		if (!useajax || !loadURLJSON(webq,"POST",webparm,jasoncallback,callback)) {
			//full page no ajax; if webform is blank the form will submit itself to the current URL
			if (webform) {
				$e(webform).submit();
			} 
		}		
	}	
	
	function delayqueryJ(webq,webparm,targetid) {
		if (lrequery) {
			doqueryJ(webq,webparm,targetid);
			lrequery = false;
		}		
	}
	
	function sortquery(sortthis) {
		sortby = sortthis;
		doquery();
	}
	
	function pagequery(thispage) {
		page = thispage;
		doquery();
	}

	function showWait() {
//		dstpos = absPos(document.getElementById("helptip"))
//		var left= dstpos.left + 10;
//		var top = dstpos.top + 5;
		ewait = document.getElementById("divanm");
//		ewait.style.top = top+"px";
//		ewait.style.left = left + "px";	
		if (ewait) {
			ewait.style.visibility="visible";
		}	
	}	
		
	function hideWait() {
		ewait = document.getElementById("divanm");
		if (ewait) {
			ewait.style.visibility="hidden";
		}	

	}
	
// should move to DOM.js
	function absPos(e) {
		var top = 0;	
		var left = 0;
		do {
			left += e.offsetLeft;
			top += e.offsetTop;
		} while (e=e.offsetParent);

		return {"top":top, "left":left};	
	}
	
	
	function setParm(webform) {
		qform =  new form(webform);
		fparm = qform.serialize();
		parms = "ajax=1";
		parms = parms + "&" + fparm;
		return parms;
	}
		
	
	
	form = function(id) {

		this.serialize = function() {
			frm = $e(id)
			es = frm.elements;
			serialstr = "ajax=1";
			for (var i=0; i< es.length;i++) {
				e = es[i];
				switch (e.type.substr(0,8)) {
					case "text": 
					case "textarea": 
					case "hidden":
					case "password":
					case "file": serialstr += "&" + eValuePair(e);
								 break;
					case "select-o" : serialstr += "&" + getSelectValue(e);
									break;
				}	
			}	
	//alert( serialstr);
			return serialstr.substr(1);
		}
		
		return ;
	}

	function serialize(e) {
		if (e.id) { 
			return encodeURIComponent(e.id)+'='+encodeURIComponent(e.value); 
		} else {
			if (e.name) { 
				return encodeURIComponent(e.name)+'='+encodeURIComponent(e.value); 
			} else {
			 	return null; 
			} 	
		};
	}	

	function getSelectValue(e) {
		if (e.type.indexOf("multi") > 0 ) {
			// return multi select option
			nvpair = "";
			ename = (e.id) ? e.id : e.name;
			if (e.options[0].value) {
				for (var ii=0; ii < e.options.length; ii++) { 
					var opt = e.options[ii];
					if (opt.selected) nvpair += "&" + NameValuePair( ename, opt.value) ;
            	}   				
			} else {
	 			for (var ii=0; ii < e.options.length; ii++) { 
					var opt = e.options[ii];
					if (opt.selected) nvpair += "&" + NameValuePair( ename, opt.text);
            	}  
       		}           
    		return nvpair.substr(1);
    		
		} else {
			if (e.value)  {
				return eValuePair(e);
			} else {
				var ename = (e.id) ? e.id : e.name;
				var opt = e.options[e.selectedIndex];
				return NameValuePair(ename,opt.text);
			}	
		}		
	}	
	
	function NameValuePair(name,value) {
			return encodeURIComponent(name)+'='+encodeURIComponent(value); 
	}	
	
	
	function eValuePair(e) {
		if (e.id) { 
			return encodeURIComponent(e.id)+'='+encodeURIComponent(e.value); 
		} else {
			if (e.name) { 
				return encodeURIComponent(e.name)+'='+encodeURIComponent(e.value); 
			} else {
			 	return null; 
			} 	
		};
	}	
		
function addcss(ocss) {
	cssstr = ocss.cssText;
	alert("CSS "+cssstr);
	var cssNode = document.createElement('style');
	cssNode.type = "text/css";
	
	if (cssNode.styleSheet) {
		cssNode.styleSheet.cssText = cssstr;
	} else {
   		var tt1 = document.createTextNode(cssstr);
    	cssNode.appendChild(tt1);
	}	
	var headID = $t("head")[0];	
	headID.appendChild(cssNode);
}
	


