var moz = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined');
var ie = (typeof window.ActiveXObject != 'undefined');

var MM_p = new Array();

function MM_preloadImages() { //v3.0
	var d=document; 
	if(d.images)
	{ 
		var j=MM_p.length
		var a=MM_preloadImages.arguments; 

		for(var i=0; i<a.length; i++)
		{
			if (a[i].indexOf("#")!=0)
			{ 
				MM_p[j]=new Image(19,16); 
				MM_p[j].src=a[i];
				j++;
			}
		}
	}
}

function setFrameset( framesetId, thisRows, thisCols )
{
	var frameset = parent.document.getElementById( framesetId );
	if (frameset)
	{
		frameset.rows = thisRows;
		frameset.cols = thisCols;
	}
}

function getSel()
{
	var txt = "";
	var foundIn = "";
	if (window.getSelection)
	{
		txt = window.getSelection();
		foundIn = 'window.getSelection()';
	}
	else if (document.getSelection)
	{
		txt = document.getSelection();
		foundIn = 'document.getSelection()';
	}
	else if (document.selection)
	{
		txt = document.selection.createRange().text;
		foundIn = 'document.selection.createRange()';
	}

	return txt;
}

function getSelectedTextFromDocument( theDocument )
{
	if (theDocument && theDocument.getSelection)
	{
		return theDocument.getSelection();
	}
	else if (theDocument && theDocument.selection)
	{
		return theDocument.selection.createRange().text;
	}
	return "";
}

function isFileURL()
{
	var href = location.href;
	pos = href.indexOf( "file://" );
	if ( pos == 0 ) { return true; }
	return false;
}

function createNewIdea(theType, theTitle)
{
	var txt = "";
	var newTitle;
	if (theType == "Read")
	{
		txt = getSelectedTextFromRead();
		newTitle = "Idea from Document: " + theTitle;
	}
	else if (theType == "Discover")
	{
		//txt = getSelectedTextFromDiscover();
		txt = "";
		newTitle = "Idea from Discover";
	}
	else if (theType == "Profile")
	{
		//txt = getSelectedTextFromProfile();
		txt = "";
		newTitle = "Idea from Profile";
	}

	var transferFrame = document.getElementById("IdeaTransferFrame");
	if (transferFrame)
	{
		var frameWin;
		if (transferFrame.contentWindow) frameWin = transferFrame.contentWindow;
		else frameWin = transferFrame;

		if (frameWin)
		{
			frameWin.setVal("theTitle", newTitle);
			frameWin.setVal("theText", txt);
			frameWin.submitForm();
		}
	}
}

function getSelectedTextFromRead()
{
	// Have to go through each frame looking for selected text.
	var theText = "";

	var SummaryFrame = parent.dkv_Summary;
	var PowerReadFrame = parent.dkv_PowerRead;

	theText += getSelectedTextFromDocument(SummaryFrame.document);
	if (theText != "") theText += "\r\n";
	theText += getSelectedTextFromDocument(PowerReadFrame.document);

	return theText;
}

function getSelectedTextFromDiscover()
{
	// Have to go through each frame looking for selected text.
	var theText = "";

	var bannerFrame = parent.ios_Discover_Map;
	var mainFrame = parent.ios_Discover_Main;
	var mapFrame = parent.ios_Discover_Map;

	theText += getSelectedTextFromDocument(bannerFrame.document);
	if (theText != "") theText += "\r\n";
	theText += getSelectedTextFromDocument(mainFrame.document);
	if (theText != "") theText += "\r\n";
	theText += getSelectedTextFromDocument(mapFrame.document);

	return theText;
}

function getSelectedTextFromProfile()
{
	// Have to go through each frame looking for selected text.
	var theText = "";

	var bannerFrame = parent.ios_Profile_Map;
	var mainFrame = parent.ios_Profile_Main;
	var mapFrame = parent.ios_Profile_Map;

	theText += getSelectedTextFromDocument(bannerFrame.document);
	if (theText != "") theText += "\r\n";
	theText += getSelectedTextFromDocument(mainFrame.document);
	if (theText != "") theText += "\r\n";
	theText += getSelectedTextFromDocument(mapFrame.document);

	return theText;
}

function explode( txt, sep )
{
	var list = new Array();
	var i = 0;
	var pos1 = 0;
	var pos2 = txt.indexOf( sep, pos1 );
	if ( pos2 == -1 && txt.length > 0 )	// One entry
	{
		list[i] = txt;
	}
	while ( pos1 > - 1 && pos2 > -1 )
	{
		if ( pos2 == pos1 )
		{
			list[i] = "";
		}
		else
		{
			list[i] = txt.substring( pos1, pos2 );
		}
		if ( pos2 == txt.length )
		{
			break;
		}
		pos1 = pos2 + 1;
		pos2 = txt.indexOf( sep, pos1 + 1 );
		if ( pos2 == -1 )
		{
			pos2 = txt.length
		}
		i++;
	}
	return list;
}

function replaceSubstring( st, inst, subst )
{
	// Control characters (like +) require leading \\'s in subst
	// Use end-of-word and case-insensitive chars
	var reg = new RegExp( inst, "gi" );
	return st.replace( reg, subst );
}

function replaceExtension( theString, originalExt, newExt )
{
	if (theString.indexOf(originalExt) == -1) return theString;

	var extPos = theString.length - 3;
	if (theString.lastIndexOf(originalExt) == extPos)
		return theString.substring(0, extPos) + newExt;
	else
		return theString;
}

function dkv_getPowerReadTransform( powerReadHref, themeName, themeParas )
{
	var xml = importXML(powerReadHref);
	var xslFilename = "_xsl/transform_dkvPowerRead.xsl";
	if (moz)
	{
		var xsltProcessor = new XSLTProcessor();
		var myXMLHTTPRequest = new XMLHttpRequest();
		myXMLHTTPRequest.open("GET", xslFilename, false);
		myXMLHTTPRequest.send(null);
		xsltProcessor.importStylesheet(myXMLHTTPRequest.responseXML);

		xsltProcessor.setParameter(null, "themeName", themeName);
		xsltProcessor.setParameter(null, "themeParas", themeParas);

		return xsltProcessor.transformToDocument(xml);
	}
	else if (ie)
	{
		var xsl = new ActiveXObject("MSXML2.FreeThreadedDOMDocument.3.0")
		xsl.async = false;
		xsl.load(xslFilename);

		var template = new ActiveXObject("MSXML2.XSLTemplate.3.0");
		template.stylesheet = xsl;
		var processor = template.createProcessor();

		processor.input = xml;
		processor.addParameter("themeName",themeName);
		processor.addParameter("themeParas",themeParas);
		processor.transform();

		return processor.output;
	}
}

function getHitlistTransform(xslFilename, documentIds, theme, loadContentHits, themeAncestry)
{
	var xml = importXML("hitList.xml");
	if (moz)
	{
		var xsltProcessor = new XSLTProcessor();
		var myXMLHTTPRequest = new XMLHttpRequest();
		myXMLHTTPRequest.open("GET", xslFilename, false);
		myXMLHTTPRequest.send(null);
		xsltProcessor.importStylesheet(myXMLHTTPRequest.responseXML);

		xsltProcessor.setParameter(null, "theme", theme);
		xsltProcessor.setParameter(null, "documentIds", documentIds);
		xsltProcessor.setParameter(null, "showContentHits", loadContentHits);
		xsltProcessor.setParameter(null, "themeAncestry", themeAncestry);
		xsltProcessor.setParameter(null, "themeUpperCase", theme.toUpperCase());

		return xsltProcessor.transformToDocument(xml);
	}
	else if (ie)
	{
		var xsl = new ActiveXObject("MSXML2.FreeThreadedDOMDocument.3.0")
		xsl.async = false;
		xsl.load(xslFilename);

		var template = new ActiveXObject("MSXML2.XSLTemplate.3.0");
		template.stylesheet = xsl;
		var processor = template.createProcessor();

		processor.input = xml;
		processor.addParameter("theme",theme)
		processor.addParameter("documentIds",documentIds)
		processor.addParameter("showContentHits",loadContentHits)
		processor.addParameter("themeAncestry",themeAncestry)
		processor.addParameter("themeUpperCase",theme.toUpperCase())
		processor.transform();

		return processor.output;
	}
}

function showSpan(spanid)
{
	if (document.getElementById(spanid))
	{
		document.getElementById( spanid ).style.display = "";
	}
}

function hideSpan(spanid)
{
	if (document.getElementById(spanid))
	{
		document.getElementById( spanid ).style.display = "none";
	}
}

function importXML(theFile)
{
	var xmlDoc;
	if (moz)
	{
		var myXMLHTTPRequest = new XMLHttpRequest();
		myXMLHTTPRequest.open("GET", theFile, false);
		myXMLHTTPRequest.send(null);

		return myXMLHTTPRequest.responseXML;
	}
	else if (ie)
	{
		xmlDoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
		xmlDoc.async = false;
		// while(xmlDoc.readyState != 4) {};
		xmlDoc.load(theFile);
		return xmlDoc;
	}
}


function trim(TRIM_VALUE)
{
	if(TRIM_VALUE.length < 1)
	{
		return "";
	}
	TRIM_VALUE = RTrim(TRIM_VALUE);
	TRIM_VALUE = LTrim(TRIM_VALUE);
	if(TRIM_VALUE == "")
	{
		return "";
	}
	else
	{
		return TRIM_VALUE;
	}
}

function RTrim(VALUE)
{
	var w_space = String.fromCharCode(32);
	var v_length = VALUE.length;
	var strTemp = "";
	if(v_length < 0)
	{
		return "";
	}
	var iTemp = v_length - 1;

	while(iTemp > -1)
	{
		if(VALUE.charAt(iTemp) == w_space)
		{}
		else
		{
			strTemp = VALUE.substring(0,iTemp +1);
			break;
		}
		iTemp = iTemp - 1;
	}
	return strTemp;
}

function LTrim(VALUE)
{
	var w_space = String.fromCharCode(32);
	if(v_length < 1)
	{
		return"";
	}
	var v_length = VALUE.length;
	var strTemp = "";

	var iTemp = 0;

	while(iTemp < v_length){
		if(VALUE.charAt(iTemp) == w_space)
		{}
		else
		{
			strTemp = VALUE.substring(iTemp,v_length);
			break;
		}
		iTemp = iTemp + 1;
	}
	return strTemp;
}

function stripHTML(oldString) {
	return oldString.replace(/(<([^>]+)>)/ig, "");
}

function removeText(theString, txtToRemove)
{
	if (theString.indexOf(txtToRemove) < 0) return theString;

	var startPos = theString.indexOf(txtToRemove);
	var endPos = theString.indexOf(txtToRemove) + txtToRemove.length;

	return theString.substring(0, startPos) + theString.substring(endPos);
}
