// $Id: feedback.js,v 1.1 2008/09/18 03:35:03 pwh Exp $

function GetXmlHttpObject ( element )

{
   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 ) document.getElementById ( element ).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 ()

{
   var i
   var request = null

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

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

	if ( element.value && element.value != "" ) {

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

		request += encodeText ( element.value )
	}
   }

   return ( request )
}


function submitFeedback ()

{
   var connection = GetXmlHttpObject ( "connectErr" )

   if ( connection ) {

	var request = buildRequest ( "email", "name", "comments" )

	connection.open ( "POST", "feedback.php", false )

        connection.setRequestHeader ( "Content-Type",
					"application/x-www-form-urlencoded" )
	connection.send ( request )

	if ( connection.status != 200 ) {

		document.getElementById ( "connectErr" ).innerHTML
							= connection.statusText

	} else {

		var status = parseInt ( connection.responseText.substring ( 0,
								1 ), 10 )
		var badStatus = ( status != 0 )

		if ( status % 2 ) {

			document.getElementById ( "emailErr" ).style.display
								= "inline"
			status--

		} else document.getElementById ( "emailErr" ).style.display
								= "none"

		status /= 2

		if ( status % 2 ) {

			document.getElementById ( "noComment" ).style.display
								= "inline"
			status--

		} else document.getElementById ( "noComment" ).style.display
								= "none"
		if ( status ) {

			document.getElementById ( "connectErr" ).innerHTML
				= "Server returned unknown error code"

		} else document.getElementById ( "connectErr" ).innerHTML = ""

		if ( ! badStatus ) {

			document.getElementById ( "feedback" ).innerHTML
				= connection.responseText.substring ( 1 )
		}
	}
   }
}

