function getData( dataSource, divID) {
	var XMLHttpRequestObject = null;
	
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	if ( XMLHttpRequestObject ) {
		var div = document.getElementById(divID);
		XMLHttpRequestObject.open("GET", dataSource );
		XMLHttpRequestObject.onreadystatechange=function(){
			if ( XMLHttpRequestObject.readyState == 1 ) {
					div.innerHTML ="Fetching Data";
			} else if ( XMLHttpRequestObject.readyState == 2 ) {
					div.innerHTML ="Fetching Data";
			} else if ( XMLHttpRequestObject.readyState == 3 ) {
					div.innerHTML ="Fetching Data";
			} else if ( XMLHttpRequestObject.readyState == 4 ) {
				if ( XMLHttpRequestObject.status ==200 ) {

					div.innerHTML = XMLHttpRequestObject.responseText;
				} else {
					div.innerHTML ="The requested Resource could not be found."
				}
			}
		}
		
		XMLHttpRequestObject.send(null);
		
	}
}

function postData( dataSource, postString, divID) {
	var XMLHttpRequestObject = null;
	
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	if ( XMLHttpRequestObject ) {
		var div = document.getElementById(divID);
		XMLHttpRequestObject.open("POST", dataSource );
		
				
		XMLHttpRequestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		XMLHttpRequestObject.setRequestHeader("Content-length", postString.length);
		XMLHttpRequestObject.setRequestHeader("Connection", "close");

		XMLHttpRequestObject.onreadystatechange=function(){
			if ( XMLHttpRequestObject.readyState == 1 ) {
					div.innerHTML ="Fetching Data";
			} else if ( XMLHttpRequestObject.readyState == 2 ) {
					div.innerHTML ="Fetching Data";
			} else if ( XMLHttpRequestObject.readyState == 3 ) {
					div.innerHTML ="Fetching Data";
			} else if ( XMLHttpRequestObject.readyState == 4 ) {
				if ( XMLHttpRequestObject.status ==200 ) {

					div.innerHTML = XMLHttpRequestObject.responseText;
				} else {
					div.innerHTML ="The requested Resource could not be found."
				}
			}
		}
		
		XMLHttpRequestObject.send(postString);
		
	}
}

// function from http://forums.devshed.com/t39065/s84ded709f924610aa44fff827511aba3.html
// author appears to be Robert Pollard

function sprintf()
{
   if (!arguments || arguments.length < 1 || !RegExp)
   {
      return;
   }
   var str = arguments[0];
   var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
   var a = b = [], numSubstitutions = 0, numMatches = 0;
   while (a = re.exec(str))
   {
      var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
      var pPrecision = a[5], pType = a[6], rightPart = a[7];

      numMatches++;
      if (pType == '%')
      {
         subst = '%';
      }
      else
      {
         numSubstitutions++;
         if (numSubstitutions >= arguments.length)
         {
            alert('Error! Not enough function arguments (' + (arguments.length - 1)
               + ', excluding the string)\n'
               + 'for the number of substitution parameters in string ('
               + numSubstitutions + ' so far).');
         }
         var param = arguments[numSubstitutions];
         var pad = '';
                if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
           else if (pPad) pad = pPad;
         var justifyRight = true;
                if (pJustify && pJustify === "-") justifyRight = false;
         var minLength = -1;
                if (pMinLength) minLength = parseInt(pMinLength);
         var precision = -1;
                if (pPrecision && pType == 'f')
                   precision = parseInt(pPrecision.substring(1));
         var subst = param;
         switch (pType)
         {
         case 'b':
            subst = parseInt(param).toString(2);
            break;
         case 'c':
            subst = String.fromCharCode(parseInt(param));
            break;
         case 'd':
            subst = parseInt(param) ? parseInt(param) : 0;
            break;
         case 'u':
            subst = Math.abs(param);
            break;
         case 'f':
            subst = (precision > -1)
             ? Math.round(parseFloat(param) * Math.pow(10, precision))
              / Math.pow(10, precision)
             : parseFloat(param);
            break;
         case 'o':
            subst = parseInt(param).toString(8);
            break;
         case 's':
            subst = param;
            break;
         case 'x':
            subst = ('' + parseInt(param).toString(16)).toLowerCase();
            break;
         case 'X':
            subst = ('' + parseInt(param).toString(16)).toUpperCase();
            break;
         }
         var padLeft = minLength - subst.toString().length;
         if (padLeft > 0)
         {
            var arrTmp = new Array(padLeft+1);
            var padding = arrTmp.join(pad?pad:" ");
         }
         else
         {
            var padding = "";
         }
      }
      str = leftpart + padding + subst + rightPart;
   }
   return str;
}

ynprompt = false;
function yesno( question ) {
	if (ynprompt) {
		ynprompt = false;
		return confirm(question);
	} else {
		return true;
	}
}