jsmx = new jsmxConstructor();
function jsmxConstructor(){
	this.async = true;
	this.onError = onError;
}


function http(url,qry,rm) {
    //reference our arguments
	var callback = rm;
	var qryStr = (!qry) ? '' : qry;
	try{//this should work for most modern browsers excluding: IE Mac
		var req = ( window.XMLHttpRequest ) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP") ;
			req.onreadystatechange = function(){
			switch(req.readyState){
				case 1: break;
				case 2: break;
				case 3: break;
				case 4:

					if ( req.status == 200 ){// only if "OK"
						try{
							rObj = parseResponse( req ) ;
							success = true;
						}catch(e){ 
							jsmx.onError('Parsing Error: The value returned could not be evaluated.');
							success = false;
						}
						if(success) callback( rObj );
					}else{ 
						jsmx.onError("There was a problem retrieving the data:\n" + req.statusText);
					}
					break;
				}
			}
			req.open('post', noCache(url) , jsmx.async );
			req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			req.send(qryStr);
	}catch(e){//a browser not equiped to handle XMLHttp
		//jsmx.onError("There was a problem retrieving the data:");
	}
}

/*--- BEGIN: RESPONSE PARSING FUNCTIONS ---*/
	function parseResponse(rO){	
			return rO.responseText;	
	}	


//IE likes to cache so we will fix it's wagon!
function noCache(url){
	var qs = new Array();
	var arr = url.split('?');
	var scr = arr[0];
	if(arr[1]) qs = arr[1].split('&');
	qs[qs.length]='nocache='+new Date().getTime();
	return scr+'?'+qs.join('&');
}

function onError(str){ alert(str); }

function $(element) {
  if (arguments.length > 1) {
    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($(arguments[i]));
    return elements;
  }
  if (typeof element == 'string')
    element = document.getElementById(element);
  return element;
}
