







var AjaxIDOL_AppName = 'compliant';

switch ( navigator.appName )
{
	case "Netscape" :
		AjaxIDOL_AppName = 'compliant';
		break;
	case "Microsoft Internet Explorer" :
		AjaxIDOL_AppName = 'msie';
		break;
	default :
		AjaxIDOL_AppName = 'compliant';
		break;
}


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.cn/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.src       = "/content/IDOLServer/media/icons-small/pdf.gif";
				pdfImgNode.className = "search-result-tiny-icon";
				pdfImgNode.width     = 16;
				pdfImgNode.height    = 16;
				divNode.appendChild( pdfImgNode );
			}

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

			var aNode    = document.createElement( "a" );
			var textNode = document.createTextNode( " " + title );
			aNode.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.className    = "cluster-title";
			var labelNode        = document.createTextNode( title );
			var sTitleItemANode  = document.createElement( "a" );
			sTitleItemANode.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.className    = "cluster-item-title";
				var quoteRe              = /(['"])/g;
				srchItemString           = itemString.replace( quoteRe, "\\$1");
				var sItemANode           = document.createElement( "a" );
				sItemANode.href          = "javascript:AjaxIDOL_ReplaceQuery('" + srchItemString + "')";
				var sItemImgNode         = document.createElement( "img" );
				sItemImgNode.src         = "/content/IDOLServer/media/aqg/magnifier.gif";
				sItemImgNode.onmouseover = "this.src='/content/IDOLServer/media/aqg/magnifier_h.gif'";
				sItemImgNode.onmouseout  = "this.src='/content/IDOLServer/media/aqg/magnifier.gif'";
				sItemANode.appendChild( sItemImgNode );
				itemDivNode.appendChild( sItemANode );
				var itemANode           = document.createElement( "a" );
				itemANode.href          = "javascript:AjaxIDOL_CrumbTrailAdd('" + srchItemString + "')";
				var itemLabelNode       = document.createTextNode( itemString || "Untitled Item" );
				var crumbID             = "IDOL_AQG_CRUMB_ADD" + imgCrumbtrailID
				itemANode.onmouseover   = "document.getElementById('" + crumbID + "').src='/content/IDOLServer/media/aqg/crumbtrail-add_h.gif'";
				itemANode.onmouseout    = "document.getElementById('" + crumbID + "').src='/content/IDOLServer/media/aqg/crumbtrail-add.gif'";
				var sAddImgNode         = document.createElement( "img" );
				sAddImgNode.id          = crumbID;
				sAddImgNode.src         = "/content/IDOLServer/media/aqg/crumbtrail-add.gif";
				sAddImgNode.onmouseover = "this.src='/content/IDOLServer/media/aqg/crumbtrail-add_h.gif'";
				sAddImgNode.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" );
			divNode.className = "hyperlink-result";
			var imgNode       = document.createElement( "img" );
			imgNode.src       = siteicon;
			imgNode.className = "search-result-tiny-icon";
			imgNode.width     = 16;
			imgNode.height    = 16;
			divNode.appendChild( imgNode );

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

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

			if( contenttype == "application/pdf" )
			{
					divNode.appendChild( textNode );
					if( contenttype == "application/pdf" )
					{
						divNode.style.color = "rgb(255,64,64)";
						showDownloadLink = true;
					}
			}
			else
			{
				var aNode    = document.createElement( "a" );
				aNode.href   = url;
				aNode.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.className = "sidepanel-divider";
		var regTextNode   = document.createTextNode( "Please register to activate the PDF download links above" );
		var regANode      = document.createElement( "a" );
		regANode.href     = "/content/downloads/index.zh.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.className = "quote";
			var quoteTextNode      = document.createTextNode( quote );
			quoteDivNode.appendChild( quoteTextNode );
			targetNode.appendChild( quoteDivNode );
			var creditDivNode       = document.createElement( "div" );
			creditDivNode.className = "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 );
}




/** Suggest on Paragraphs **/

var AjaxIDOL_ParaID = 1;

function AjaxIDOL_getParaID ()
{
	return( "AjaxIDOL_ParaID" + AjaxIDOL_ParaID++ );
}


function AjaxIDOL_buildNodeList ( nodeList, node, tagName )
{
	var nodes = node.getElementsByTagName( tagName );
	for( i = 0 ; i < nodes.length ; i++ ) {
		var queryText = "";
		if( AjaxIDOL_AppName == "msie" ) {
			queryText = nodes[i].innerText;
		} else {
			queryText = nodes[i].textContent;
		}
		if( queryText.length >= 100 ) {
			var elements = new Array( nodes[i], queryText );
			nodeList.push( elements );
		}
	}
}


function AjaxIDOL_runSuggestOnText ()
{
	var contentNode = document.getElementById("CONTENT_CONTAINER");
	var nodeList    = new Array();
	AjaxIDOL_buildNodeList ( nodeList, contentNode, "p" );
	AjaxIDOL_buildNodeList ( nodeList, contentNode, "div" );
	for( i = 0 ; i < nodeList.length ; i++ ) {
		var queryText    = "query=" + encodeURI( nodeList[i][1] );
		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 );
		}
		AjaxIDOL_doSuggestOnText( http_request, i, queryText, nodeList );
	}
}

function AjaxIDOL_doSuggestOnText ( req, pid, queryText, nodeList )
{
	req.open( "post", "/content/IDOLServer/AJAX/XML/ajax_idol_suggestOnText.xml?pid=" + pid, true );
	req.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
	req.send( queryText );
	req.onreadystatechange = function ()
	{
		if( req.readyState == 4 )
		{
			if( req.status == 200 )
			{
				var HITS_FOUND = false;
				var xmldoc     = req.responseXML;
				var pid        = -1;
				var nodes_pid  = xmldoc.getElementsByTagName("pid");
				for( a = 0 ; a < nodes_pid.length ; a++ )
				{
					pid = nodes_pid[a].getAttribute("value");
				}
				var div_id         = AjaxIDOL_getParaID();
				var div_main       = document.createElement( "div" );
				div_main.id        = div_id;
				div_main.className = "suggest-para";
				var nodes_hit      = xmldoc.getElementsByTagName( "hit" );
				var div_head       = document.createElement( "div" );
				div_head.className = "suggest-title";
				var div_head_text  = document.createTextNode( "Documents related to this section:" );
				div_head.appendChild( div_head_text );
				div_main.appendChild( div_head );
				for( i = 0 ; i < nodes_hit.length ; i++ )
				{
					try {
						var title       = "";
						var href        = "";
						var siteicon    = "";
						var type        = "";
						var nodes_title = nodes_hit[i].getElementsByTagName("title");
						var nodes_href  = nodes_hit[i].getElementsByTagName("reference");
						var nodes_icon  = nodes_hit[i].getElementsByTagName("siteicon");
						var nodes_type  = nodes_hit[i].getElementsByTagName("contenttype");
						for( j = 0 ; j < nodes_title.length ; j++ )
						{
							HITS_FOUND = true;
							nodes_title[j].normalize();
							nodes_href[j].normalize();
							nodes_icon[j].normalize();
							nodes_type[j].normalize();
							title    = nodes_title[j].firstChild.nodeValue;
							href     = nodes_href[j].firstChild.nodeValue;
							siteicon = nodes_icon[j].firstChild.nodeValue;
							type     = nodes_type[j].firstChild.nodeValue;
						}
						var div_item       = document.createElement( "div" );
						div_item.className = "suggest-para-item";
						var img_site       = document.createElement( "img" );
						img_site.src       = siteicon;
						img_site.className = "suggest-siteicon";
						var link           = document.createElement( "a" );
						link.href          = href;
						var label          = document.createTextNode( title );
						div_item.appendChild( img_site );
						link.appendChild( label );
						div_item.appendChild( link );
						div_main.appendChild( div_item );
					}
					catch ( e )
					{
						/* Ignore Exception */
					}
				}
				var oImg         = document.createElement( "img" );
				oImg.src         = "/content/IDOLServer/media/suggest/suggest.gif";
				oImg.className   = "suggest-para-click";
				oImg.onclick     = function () { AjaxIDOL_ParaToggle( div_id ) };
				oImg.onmouseover = function () { this.src='/content/IDOLServer/media/suggest/suggest_h.gif' };
				oImg.onmouseout  = function () { this.src='/content/IDOLServer/media/suggest/suggest.gif' };
				if( HITS_FOUND == true )
				{
					nodeList[pid][0].appendChild( oImg );
					if( nodeList[pid][0].nextSibling != null ) {
						nodeList[pid][0].parentNode.insertBefore( div_main, nodeList[pid][0].nextSibling );
					} else {
						nodeList[pid][0].parentNode.appendChild( div_main );
					}
				}
			}
			else
			{
				/* Error Loading XML */
			}
		}
	};
	return( true );
}


function AjaxIDOL_ParaToggle ( div_id )
{
	if( document.getElementById( div_id ).style.display == "block" ) {
		document.getElementById( div_id ).style.display = "none";
	} else {
		document.getElementById( div_id ).style.display = "block";
	}
}

function AjaxIDOL_waitSuggestOnText ()
{
	if( SITE_PageLoaded == true ) {
		AjaxIDOL_runSuggestOnText();
	} else {
		setTimeout( "AjaxIDOL_waitSuggestOnText()", 1000 );
	}
}


//setTimeout( "AjaxIDOL_waitSuggestOnText()", 1000 );




