// $Id: ajax.js,v 2.1 2010/02/05 04:27:30 pwh Exp $

function GetXmlHttpObject ( errIds )

{
   var xmlHttp=null

   try {

	// Firefox, Opera 8.0+, Safari
	xmlHttp = new XMLHttpRequest ()
   }

   catch ( e ) {

	// Internet Explorer
	try {

		xmlHttp = new ActiveXObject ( "Msxml2.XMLHTTP" )
	}

	catch ( e ) {

		xmlHttp = new ActiveXObject ( "Microsoft.XMLHTTP" )
	}
   }

   if ( ! xmlHttp && errIds.length > 0 ) {

	var i

	for ( i = 0; i < errIds.length; ++i ) {

		document.getElementById ( errIds[i] ).innerHTML
				= "Your browser does not support HTTP requests"
	}
   }

   return ( xmlHttp )
}


function encodeText ( input )

{
   var output = ""
   var outputX = 0
   var inputX = 0
   var searchX = 0

   while ( inputX < input.length
	&& ( searchX = input.substring ( inputX ).search ( /[^0-9a-zA-Z]/ ) )
									>= 0 ) {
	inputX += searchX

	var charCode = input.charCodeAt ( inputX )

	if ( inputX > outputX ) output += input.substring ( outputX, inputX )

	if ( charCode < 16 )
		output += ( "%0" + charCode.toString ( 16 ).toUpperCase () )
	else
		output += ( "%" + charCode.toString ( 16 ).toUpperCase () )

	outputX = ++inputX
   }

   if ( outputX < input.length ) output += input.substring ( outputX )

   return ( output )
}


function buildRequest ( request )

{
   for ( var i = 1; i < arguments.length; i++ ) {

	var element = document.getElementById ( arguments [i] )

	if ( element.type == "checkbox" ) {

		if ( element.checked ) {

			if ( request ) request += ( "&" + arguments [i] + "=" )
			else request = arguments [i] + "="

			request += encodeText ( element.value )
		}

	} else if ( element.value
			&& element.value.search ( /[^ \t\n]/ ) >= 0 ) {

		if ( request ) request += ( "&" + arguments [i] + "=" )
		else request = arguments [i] + "="

		request += encodeText ( element.value )
	}
   }

   return ( request )
}

