


function AjaxIDOL_Dispatch ( oArg )
{
	var http_request = null;
	if( window.XMLHttpRequest )
	{
		http_request = new XMLHttpRequest();
		if( http_request.overrideMimeType )
		{
			http_request.overrideMimeType("application/xml");
		}
	}
	else if ( window.ActiveXObject )
	{
		try
		{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch ( e )
		{
			try
			{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch ( e )
			{
				;
			}
		}
	}
	else
	{
		return( true );
	}
	http_request.onreadystatechange = function ()
	{
		oArg.http_request = http_request;
		AjaxIDOL_Process( oArg );
	};
		var url  = 'http://www.autonomy.com/content/IDOLServer/AJAX/XML/' + oArg.file;
	var post = null;
	switch( oArg.type )
	{
		case "aqg":
			post = 'query=' + oArg.text + '&databases=' + oArg.databases;
			break;
		default:
			post = 'reference=' + oArg.reference;
			break;
	}
	http_request.open( "POST", url, true );
	http_request.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
	http_request.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
	http_request.send( post );
	return( true );
}


function AjaxIDOL_Process ( oArg )
{
	if( oArg.http_request.readyState == 4 )
	{
		if( oArg.http_request.status == 200 )
		{
			switch( oArg.type )
			{
				case "query_suggest":
					AjaxIDOL_Render_QuerySuggest( oArg );
					break;
				case "hyperlink":
					AjaxIDOL_Render_Hyperlink( oArg );
					break;
				case "quote":
					AjaxIDOL_Render_Quote( oArg );
					break;
				case "aqg":
					AjaxIDOL_Render_AQG( oArg );
					break;
				default:
					break;
			}
		}
	}
	return( true );
}


/** Search Results Related Documents **/

function AjaxIDOL_Render_QuerySuggest ( oArg )
{
	var wrapperNode = document.getElementById( "AJAXIDOL" + oArg.id );
	var targetNode  = document.getElementById( "SIMILARDIV" + oArg.id );
	var nodelist    = oArg.http_request.responseXML.getElementsByTagName("hit");
	for( var i = 0 ; i < nodelist.length ; i++ )
	{
		var hitNode     = nodelist[i];
		var title       = AjaxIDOL_GetValue(hitNode,"title") || "Untitled Document";
		var siteicon    = AjaxIDOL_GetValue(hitNode,"siteicon");
		var contenttype = AjaxIDOL_GetValue(hitNode,"contenttype");
		var url         = AjaxIDOL_GetValue(hitNode,"reference");
		if( url )
		{
			var divNode  = document.createElement("div");

			if( contenttype == "application/pdf" )
			{
				var pdfImgNode = document.createElement("img");
				pdfImgNode.setAttribute( "src", "/content/IDOLServer/media/icons-small/pdf.gif" );
				pdfImgNode.setAttribute( "class", "search-result-tiny-icon" );
				pdfImgNode.setAttribute( "width", "16" );
				pdfImgNode.setAttribute( "height", "16" );
				divNode.appendChild( pdfImgNode );
			}

			var imgNode  = document.createElement("img");
			imgNode.setAttribute( "src", siteicon );
			divNode.appendChild( imgNode );

			var aNode    = document.createElement("a");
			var textNode = document.createTextNode( " " + title );
			aNode.setAttribute( "href", url );
			aNode.appendChild( textNode );
			divNode.appendChild( aNode );
			targetNode.appendChild( divNode );
			targetNode.style.display = "none";
			wrapperNode.style.display = "block";
		}
	}
	return( true );
}


/** Active Query Guidance **/

function AjaxIDOL_CrumbTrailAdd ( string )
{
	var searchForm = document.getElementById("IDOLSearchForm");
	var crumbValue = new String( searchForm.crumbtrail.value );
	var terms      = new Array();
	if( crumbValue.length > 0 )
	{
		terms = crumbValue.split( '::' );
		terms.push( string );
	}
	else
	{
		terms = new Array( string );
	}
	searchForm.crumbtrail.value = terms.join('::'); 
	searchForm.submit();
}

function AjaxIDOL_CrumbTrailDelete ( i )
{
	var searchForm = document.getElementById("IDOLSearchForm");
	var crumbValue = new String( searchForm.crumbtrail.value );
	var terms      = crumbValue.split( '::' );
	var newTerms   = new Array();
	for( var j = 0 ; j < terms.length ; j++ )
	{
		if( i == j )
		{
			continue;
		}
		else
		{
			newTerms.push( terms[j] );
		}
	}
	searchForm.crumbtrail.value = newTerms.join('::'); 
	searchForm.submit();
}

function AjaxIDOL_CrumbTrailDeleteAll ()
{
	var searchForm = document.getElementById("IDOLSearchForm");
	searchForm.crumbtrail.value = "";
	searchForm.submit();
}

function AjaxIDOL_ReplaceQuery ( string )
{
	var searchForm         = document.getElementById("IDOLSearchForm");
	var value              = searchForm.query.value;
	searchForm.query.value = string;
	document.getElementById("IDOLSearchForm").crumbtrail.value = "";
	searchForm.submit();
}

function AjaxIDOL_Render_AQG ( oArg )
{
	var targetNode      = document.getElementById( oArg.id );
	var nodelist        = oArg.http_request.responseXML.getElementsByTagName("cluster");
	var imgCrumbtrailID = 0;
	for( var i = 0 ; i < nodelist.length ; i++ )
	{
		var clusterNode = nodelist[i];
		var title       = AjaxIDOL_GetValue(clusterNode,"title") || false;
		if( ! title ) {
			continue;
		}
		if( title )
		{
			var divNode = document.createElement("div");
			divNode.setAttribute("class","cluster-title");
			var labelNode = document.createTextNode( title );
			var sTitleItemANode = document.createElement("a");
			sTitleItemANode.setAttribute( "href", "javascript:AjaxIDOL_ReplaceQuery('" + title + "')" );
			sTitleItemANode.appendChild( labelNode );
			divNode.appendChild( sTitleItemANode );
			targetNode.appendChild( divNode );
			var itemNodelist = clusterNode.getElementsByTagName("item");
			for( var j = 0 ; j < itemNodelist.length ; j++ )
			{
				var itemNode = itemNodelist[j];
				var itemString = AjaxIDOL_GetValue(itemNode,"title");

				var itemDivNode = document.createElement("div");
				itemDivNode.setAttribute("class","cluster-item-title");

				var quoteRe = /(['"])/g;
				srchItemString = itemString.replace( quoteRe, "\\$1");

				var sItemANode = document.createElement("a");
				sItemANode.setAttribute( "href", "javascript:AjaxIDOL_ReplaceQuery('" + srchItemString + "')" );
				var sItemImgNode = document.createElement("img");
				sItemImgNode.setAttribute( "src", "/content/IDOLServer/media/aqg/magnifier.gif" );
				sItemImgNode.setAttribute( "onmouseover", "this.src='/content/IDOLServer/media/aqg/magnifier_h.gif'" );
				sItemImgNode.setAttribute( "onmouseout", "this.src='/content/IDOLServer/media/aqg/magnifier.gif'" );
				sItemANode.appendChild( sItemImgNode );
				itemDivNode.appendChild( sItemANode );

				var itemANode = document.createElement("a");
				itemANode.setAttribute( "href", "javascript:AjaxIDOL_CrumbTrailAdd('" + srchItemString + "')" );
				var itemLabelNode = document.createTextNode( itemString || "Untitled Item" );
				var crumbID = "IDOL_AQG_CRUMB_ADD" + imgCrumbtrailID
				itemANode.setAttribute( "onmouseover", "document.getElementById('" + crumbID + "').src='/content/IDOLServer/media/aqg/crumbtrail-add_h.gif'" );
				itemANode.setAttribute( "onmouseout", "document.getElementById('" + crumbID + "').src='/content/IDOLServer/media/aqg/crumbtrail-add.gif'" );

				var sAddImgNode = document.createElement("img");
				sAddImgNode.setAttribute( "id", crumbID );
				sAddImgNode.setAttribute( "src", "/content/IDOLServer/media/aqg/crumbtrail-add.gif" );
				sAddImgNode.setAttribute( "onmouseover", "this.src='/content/IDOLServer/media/aqg/crumbtrail-add_h.gif'" );
				sAddImgNode.setAttribute( "onmouseout", "this.src='/content/IDOLServer/media/aqg/crumbtrail-add.gif'" );
				itemANode.appendChild( sAddImgNode );
				itemANode.appendChild( itemLabelNode );
				itemDivNode.appendChild( itemANode );

				targetNode.appendChild( itemDivNode );

				imgCrumbtrailID++;
			}

			document.getElementById(oArg.id+"CONTAINER").style.display = "block";
		}
	}
	return( true );
}


/** Automatic Hyperlinking **/

function AjaxIDOL_Render_Hyperlink ( oArg )
{
	var targetNode       = document.getElementById( oArg.id );
	var nodelist         = oArg.http_request.responseXML.getElementsByTagName("hit");
	var showDownloadLink = false;
	for( var i = 0 ; i < nodelist.length ; i++ )
	{
		var hitNode     = nodelist[i];
		var title       = AjaxIDOL_GetValue(hitNode,"title") || "Untitled Document";
		var sitename    = AjaxIDOL_GetValue(hitNode,"sitename");
		var siteicon    = AjaxIDOL_GetValue(hitNode,"siteicon");
		var ref         = AjaxIDOL_GetValue(hitNode,"reference");
		var contenttype = AjaxIDOL_GetValue(hitNode,"contenttype");
		var summary     = AjaxIDOL_GetValue(hitNode,"summary");
		var cluster     = AjaxIDOL_GetValue(hitNode,"cluster");
		var weight      = AjaxIDOL_GetValue(hitNode,"weight");
		if( ref )
		{
			var url    = "";
			var target = "_self";

			if( sitename == "www.autonomy.com" )
			{
				url = ref;
			}
			else
			{
				url    = "http://" + sitename + ref;
				target = "_blank";
			}

			var divNode  = document.createElement("div");
			var imgNode  = document.createElement("img");
			imgNode.setAttribute( "src", siteicon );
			imgNode.setAttribute( "class", "search-result-tiny-icon" );
			imgNode.setAttribute( "width", "16" );
			imgNode.setAttribute( "height", "16" );
			divNode.appendChild( imgNode );

			if( contenttype == "application/pdf" )
			{
				var pdfImgNode  = document.createElement("img");
				pdfImgNode.setAttribute( "src", "/content/IDOLServer/media/icons-small/pdf.gif" );
				pdfImgNode.setAttribute( "class", "search-result-tiny-icon" );
				pdfImgNode.setAttribute( "width", "16" );
				pdfImgNode.setAttribute( "height", "16" );
				divNode.appendChild( pdfImgNode );
			}

			var textNode = document.createTextNode( " " + title );

			if( contenttype == "application/pdf" )
			{
					divNode.appendChild( textNode );
					if( contenttype == "application/pdf" )
					{
						divNode.setAttribute( "style", "color:rgb(255,64,64)" );
						showDownloadLink = true;
					}
			}
			else
			{
				var aNode = document.createElement("a");
				aNode.setAttribute( "href", url );
				aNode.setAttribute( "target", target );
				aNode.appendChild( textNode );
				divNode.appendChild( aNode );
			}

			targetNode.appendChild( divNode );
			document.getElementById(oArg.id+"CONTAINER").style.display = "block";
		}

	}
	if( showDownloadLink )
	{
		var regNode = document.createElement("div");
		regNode.setAttribute( "class", "sidepanel-divider" );
		var regTextNode = document.createTextNode( "Please register to activate the PDF download links above" );
		var regANode = document.createElement("a");
		regANode.setAttribute( "href", '/content/downloads/index.en.html' );
		regANode.appendChild( regTextNode );
		regNode.appendChild( regANode );
		targetNode.appendChild( regNode );
	}
	return( true );
}

function AjaxIDOL_Hyperlink_PopOpen ( event )
{
	var x = event.clientX;
	var y = event.clientY;
	return( true );
}


/** Related Quotes **/

function AjaxIDOL_Render_Quote ( oArg )
{
	var targetNode = document.getElementById( oArg.id );
	var nodelist   = oArg.http_request.responseXML.getElementsByTagName("hit");
	for( var i = 0 ; i < nodelist.length ; i++ )
	{
		var hitNode = nodelist[i];
		var quote   = AjaxIDOL_GetValue(hitNode,"quote");
		var credit  = AjaxIDOL_GetValue(hitNode,"credit");
		if( quote )
		{
			var quoteDivNode = document.createElement("div");
			quoteDivNode.setAttribute( "class", "quote" );
			var quoteTextNode = document.createTextNode( quote );
			quoteDivNode.appendChild( quoteTextNode );
			targetNode.appendChild( quoteDivNode );
			var creditDivNode = document.createElement("div");
			creditDivNode.setAttribute( "class", "quote" );
			var strongNode = document.createElement("strong");
			var creditTextNode = document.createTextNode( credit );
			strongNode.appendChild( creditTextNode );
			creditDivNode.appendChild( strongNode );
			targetNode.appendChild( creditDivNode );
			document.getElementById(oArg.id+"CONTAINER").style.display = "block";
		}
	}
	return( true );
}


/** Utility Functions **/

function AjaxIDOL_GetValue ( node, tagname )
{
	var value    = false;
	var nodelist = node.childNodes;
	for( var i = 0 ; i < nodelist.length ; i++ )
	{
		var item = nodelist[i];
		if( ( item.tagName == tagname ) && ( item.hasChildNodes ) && item.firstChild )
		{
			value = item.firstChild.nodeValue;
			return( value );
		}
	}
	return( value );
}




