function getXMLHttpRequest() 
{
    if (window.XMLHttpRequest) 
    {
			//alert("ajax code: new XMLHttpRequest() called");
        return new XMLHttpRequest();
    }
    else 
    {
        try 
        {
				//	alert("ajax code: new ActiveXObject() called");
            return new ActiveXObject("MSXML2.XMLHTTP.3.0");
        }
        catch(ex) 
        {
            return null;
        }
    }
}

// ripped off from http://msdn.microsoft.com/en-us/library/ms537509(VS.85).aspx
function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}


/*
document.getElementsByClassName = function(cl) 
{
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	//var elem = this.getElementsByTagName('*');
	//alert("28 getElementsByClassName (in ajax.js)");
	var elem = document.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) 
	{
		var classes = elem[i].className;
		if (myclass.test(classes)) retnode.push(elem[i]);
	}
	return retnode;
}; 
*/

 
document.getElementsByClassName = function(iClassName) 
{
	// Get Browser
	var BrowserType = navigator.userAgent.toLowerCase();
	var BrowserIsIE = true;
	if ( -1 == BrowserType.indexOf('msie') ) BrowserIsIE = false;

	var retnode = [];
	
	//alert("49 >>> ajax.js getElementsByClassName b4 document.getElementsByTagName");
	var elem = document.getElementsByTagName('*');
	//alert("51 <<< after document.getElementsByTagName, numElems=" + elem.length);
	
	for (var i = 0; i < elem.length; i++) 
	{
		var curElemClassName;
		//if ( BrowserIsIE ) curElemClassName = elem[i].getAttribute('className');
		if ( BrowserIsIE ) curElemClassName = elem[i].className;
		else               curElemClassName = elem[i].getAttribute('class'); 
		if ( iClassName == curElemClassName ) retnode.push(elem[i]);
	}
	
	return retnode;
}

document.getElementsInTableByClassName = function(iClassName, iTableName, iTag) 
{
	// Get Browser
	var BrowserType = navigator.userAgent.toLowerCase();
	var BrowserIsIE = true;
	if ( -1 == BrowserType.indexOf('msie') ) BrowserIsIE = false;

	var retnode = [];
	
	if ( iTag == "" ) iTag = '*';
	
	var tableToSearch = document.getElementById(iTableName);
	
	//alert("49 >>> ajax.js getElementsByClassName b4 document.getElementsByTagName");
	var elem = tableToSearch.getElementsByTagName(iTag);
	//alert("78 getElementsInTableByClassName <<< after document.getElementsByTagName, numElems=" + elem.length);
	
	for (var i = 0; i < elem.length; i++) 
	{
		var curElemClassName;
		//if ( BrowserIsIE ) curElemClassName = elem[i].getAttribute('className');
		if ( BrowserIsIE ) curElemClassName = elem[i].className;
		else               curElemClassName = elem[i].getAttribute('class'); 
		if ( iClassName == curElemClassName ) retnode.push(elem[i]);
	}
	
	return retnode;
}

 


function ReformatDate(oldStr)
{
 // sort date method wants month/day
	var dateNoYear = oldStr;
   	var oldLen     = oldStr.length;
   	var outString  = "";
   
   dashIndex = oldStr.indexOf("-");
   // alert("oldStr=" + oldStr + " dashIndex= " + dashIndex);
   if ( dashIndex !== -1 )
   {
  		dateNoYear = oldStr.substring(dashIndex+1, oldLen);  		 
    }
    
    var tempString = dateNoYear.replace("-", "/");
    dateNoYear     = tempString;
    
    var blankIndex = dateNoYear.indexOf(" ");
    var Col1Index  = dateNoYear.indexOf(":");
    var Col2Index  = dateNoYear.lastIndexOf(":");
    
    var MonthDay = dateNoYear.substring(0, blankIndex);

    // If Month is single digit, precede it with a blank
    if ( MonthDay.length == 4 ) MonthDay = '  ' + MonthDay;

    
  	//alert('blankIndex=' + blankIndex + ' Col1index=' + Col1Index + ' Col2Index= ' + Col2Index);
    
    var hour = dateNoYear.substring(blankIndex+1, Col1Index);
    var min  = dateNoYear.substring(Col1Index+1,  Col2Index)
    
   // alert(' hour=' + hour + ' min=' + min);
    
    // removes the leading blank
    hour = hour - 0;
     
    if ( hour == 12 )
    {
    	outString = MonthDay + ' '  + hour + ':' + min + ' PM';
    }
    else if ( hour > 12 )
    {
     	hour = hour - 12;
     	if      ( hour < 10  ) outString = MonthDay + '    ' + hour + ':' + min + ' PM';
     	else if ( hour == 12 ) outString = MonthDay + ' '  + hour + ':' + min + ' AM';
     	else             outString = MonthDay + ' '  + hour + ':' + min + ' PM';
    }
    else
    {
    	if ( hour < 10 ) outString = MonthDay + '   ' + hour + ':' + min + ' AM';
     	else             outString = MonthDay + ' '  + hour + ':' + min + ' AM';
    }


    //alert("dateNoYear=" + dateNoYear);
    
  	return outString;
}


function ConvertToLocalTime(origTime)
{
   var dashIndex = origTime.indexOf("-");
   var LenOrigString = origTime.length;
   var UTCYear       = origTime.substring(0, dashIndex);

   var dashIndex2 = origTime.indexOf("-", dashIndex+1);
   var UTCMonth   = origTime.substring(dashIndex+1, dashIndex2);

   var blankIndex    = origTime.indexOf(" ", dashIndex2+1);
   var UTCDay        = origTime.substring(dashIndex2+1, blankIndex);
  // alert('UTCDay=' + UTCDay + ' dashIndex2=' +dashIndex2);

	var Colon1Index = origTime.indexOf(":", dashIndex2+1);
   	var UTCHr       = origTime.substring(blankIndex+1, Colon1Index);
   	
   	var Colon2Index  = origTime.indexOf(":", Colon1Index+1);
   	var UTCMin       = origTime.substring(Colon1Index+1, Colon2Index);
   	var UTCSec       = origTime.substring(Colon2Index+1, LenOrigString);

    
   // alert("oldStr=" + oldStr + " dashIndex= " + dashIndex);
   
   //var UTCDateString = month + " " + day + ", " + year + " " + HrMinSec;
   var UTCDate = new Date();
   
   UTCDate.setUTCFullYear(UTCYear);
   UTCDate.setUTCMonth(UTCMonth-1);
   UTCDate.setUTCDate(UTCDay);
   UTCDate.setUTCHours(UTCHr);
   UTCDate.setUTCMinutes(UTCMin);
   UTCDate.setUTCSeconds(UTCSec);
   
   var LocalYear  = UTCDate.getFullYear();
   var LocalMonth = UTCDate.getMonth(); 
   var LocalDay   = UTCDate.getDate();
   var LocalHr    = UTCDate.getHours();
   var LocalMin   = UTCDate.getMinutes();
   var LocalSec   = UTCDate.getSeconds();
   
   //if ( LocalMin.length == 1 ) LocalMin = '0' + LocalMin;
   LocalMonth = LocalMonth+1;

  // var LocalString = UTCDate.toLocalString();
   var LocalString;
   
   if ( LocalDay < 10 ) LocalString = LocalYear + '-' + LocalMonth + '-0' + LocalDay; 
   else                 LocalString = LocalYear + '-' + LocalMonth + '-'  + LocalDay; 

   if ( LocalMin < 10 ) LocalString = LocalString + ' ' + LocalHr + ':0' + LocalMin + ':' + LocalSec;
   else                 LocalString = LocalString + ' ' + LocalHr + ':' + LocalMin + ':' + LocalSec;
   
  // alert('origTime=' + origTime + ' LocalString=' + LocalString);
  
  return LocalString;
  
}

function ReplaceAllOccurences(iStringToReplace, iReplacementString, iString)
{
	var LenStringToReplace = iStringToReplace.length;
	var oString            = iString;
	var pos                = oString.indexOf(iStringToReplace);
	while ( pos != -1 )
	{
		var preString  = oString.substring(0, pos);
		var postString = oString.substring(pos+LenStringToReplace, oString.length);
		oString        = preString + iReplacementString + postString;
		
		pos            = oString.indexOf(iStringToReplace, pos+1);
	}
	
	return oString;
}

function ReplaceSpecCharsWithXMLSpecChars(iString)
{
	
	var oString = iString;
	
	if ( iString == "" ) return oString;
	
	oString = ReplaceAllOccurences("&", "%26amp;", oString);
	oString = ReplaceAllOccurences(">", "%26gt;", oString);
	oString = ReplaceAllOccurences("<", "%26lt;", oString);
	oString = ReplaceAllOccurences("\"", "%26quot;", oString);
	//oString = ReplaceAllOccurences("'", "%26#039;", oString);
	oString = ReplaceAllOccurences("'", "%26apos;", oString);
	
	return oString;
}

function ReplaceXMLSpecCharsWithNormalSpecialChars(iString)
{
	var oString = iString;
	
	if ( iString == "" ) return oString;
	
	oString = ReplaceAllOccurences("%26amp;", "&",  oString);
	oString = ReplaceAllOccurences("%26gt;", ">",  oString);
	oString = ReplaceAllOccurences("%26lt;", "<",  oString);
	oString = ReplaceAllOccurences("%26quot;", "\"",  oString);
	oString = ReplaceAllOccurences("%26#039;", "'",  oString);
	oString = ReplaceAllOccurences("%26apos;", "'",  oString);
	
	return oString;
}

function SearchForSpecChar(iString)
{

	var pos = iString.indexOf("&");
	if ( pos != -1 ) return "&";
	
	pos = iString.indexOf("'");
	if ( pos != -1 ) return "'";
	
	pos = iString.indexOf(">");
	if ( pos != -1 ) return ">";
	
	pos = iString.indexOf("<");
	if ( pos != -1 ) return "<";
	
	pos = iString.indexOf('"');
	if ( pos != -1 ) return '"';
	
	return "";
}
