
var loggerMalfunction = false;

function isLogging(){
	return !loggerMalfunction;
}


function logInfo(userName, pageName, pageURL, pageTitle, nav_type, topic, subtopic, section,
			paragraph, trid, standardType, standardNumber, screenHeight, screenWidth, 
			includeIntersectionSubtopics, fasbORSEC, searchText, searchDocType, 
			searchAreaType, searchSourceType, masterGlossaryLetter, browserType, 
			browserVersion, misc)
{
	if(isLogging()){
	
		var url = 'http://' + window.location.hostname + '/log';

		var logReq = newLogHttpRequest();

		var handlerFunction = getLoggingReadyStateHandler(logReq);

		var requestString = '';

		requestString = addParameter(requestString, 'username', userName);
		requestString = addParameter(requestString, 'pagename', pageName);
		requestString = addParameter(requestString, 'pageUrl', pageURL);
		requestString = addParameter(requestString, 'pagetitle', pageTitle);
		requestString = addParameter(requestString, 'nav_type', nav_type);
		requestString = addParameter(requestString, 'topic', topic);
		requestString = addParameter(requestString, 'subtopic', subtopic);
		requestString = addParameter(requestString, 'section', section);
		requestString = addParameter(requestString, 'paragraph', paragraph);
		requestString = addParameter(requestString, 'trid', trid);
		requestString = addParameter(requestString, 'standardType', standardType);
		requestString = addParameter(requestString, 'standardNumber', standardNumber);
		requestString = addParameter(requestString, 'screenHeight', screenHeight);
		requestString = addParameter(requestString, 'screenWidth', screenWidth);
		requestString = addParameter(requestString, 'includeIntersectionSubtopics', includeIntersectionSubtopics);
		requestString = addParameter(requestString, 'fasbORSEC', fasbORSEC);
		requestString = addParameter(requestString, 'searchText', searchText);
		requestString = addParameter(requestString, 'searchDocType', searchDocType);
		requestString = addParameter(requestString, 'searchAreaType', searchAreaType);
		requestString = addParameter(requestString, 'searchSourceType', searchSourceType);
		requestString = addParameter(requestString, 'masterGlossaryLetter', masterGlossaryLetter);
		requestString = addParameter(requestString, 'browserType', browserType);
		requestString = addParameter(requestString, 'browserVersion', browserVersion);
		requestString = addParameter(requestString, 'misc', misc);

		logReq.open("POST", url, true);
		logReq.onreadystatechange = handlerFunction;
		logReq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
		logReq.send(requestString);
	}
}

function addParameter(requestString, paramName, value){
	if(value  && value.length > 0 && value != 'null'){
		if(requestString.length > 0){
			requestString = requestString + '&';
		}
		return requestString + paramName + '=' + escape(value);
	}
	else{
		return requestString;
	}
}


function getLoggingReadyStateHandler(req) {

  // Return an anonymous function that listens to the
  // XMLHttpRequest instance
  return function () {

    // If the request's status is "complete"
    if (req.readyState == 4) {

      // Check that a successful server response was received
      if (req.status == 200) {

	//do nothing.

      } else {

	loggerMalfunction = true;

      }
    }
  }
}



function newLogHttpRequest() {

  var xmlreq = false;

  if (window.XMLHttpRequest) {

    // Create XMLHttpRequest object in non-Microsoft browsers
    xmlreq = new XMLHttpRequest();

  } else if (window.ActiveXObject) {

    // Create XMLHttpRequest via MS ActiveX
    try {
      // Try to create XMLHttpRequest in later versions
      // of Internet Explorer

      xmlreq = new ActiveXObject("Msxml2.XMLHTTP");

    } catch (e1) {

      // Failed to create required ActiveXObject

      try {
	// Try version supported by older versions
	// of Internet Explorer

	xmlreq = new ActiveXObject("Microsoft.XMLHTTP");

      } catch (e2) {

	// Unable to create an XMLHttpRequest with ActiveX
      }
    }
  }

  return xmlreq;
}