<!--

var m_marker=0;
var m_counter;
var m_strValveToOperate = "";
var wellData;
var m_valveDesc;

var m_moz, m_ie;
var m_xmlWell, m_xmlPerf;
var m_strWell = "DEMO-2";

var m_numValves = 0;
var m_valvePosition;


var bInit = false;
var m_bAppletInitialised = false;
var m_bPerfTablesDrawn = false;

var m_WHP = -1.0;
var m_Qm = 0.0;


function dataRefresh()
//--------------------
{
	clearTimeout(m_counter);

	m_marker++;
	if (m_marker>32000)
		m_marker = 0;

	var strFile;
	var nSP = parseInt(ChokeSP.value);
	if (isNaN(nSP))
		strFile = "welldata.asp?Update=" + m_marker;
	else
		{
		 if (nSP > 160)
			{
			nSP = 160;
			ChokeSP.value = 160;
			strFile = "welldata.asp?Update=" + m_marker + "&ChokeSP=" + nSP;
			}
		else if (nSP<0)
			{
			nSP = 0;
			ChokeSP.value = 0;
			}

		strFile = "welldata.asp?Update=" + m_marker + "&ChokeSP=" + nSP;
		}

	if (m_strValveToOperate.length>0)
		{
		strFile = strFile + "&Valve=" + m_strValveToOperate;
		m_strValveToOperate = "";
		}
	
	getWellData(strFile);
	


	// Get the performance curves
	strFile = "WellPerf.xml";
		
	getWellPerfXML(strFile);

	m_counter=setTimeout("dataRefresh()", 4000);
		
}

function getWellData(strFile)
//---------------------------
{
	
	try
	{
		if (m_moz)
			{
			m_xmlWell = document.implementation.createDocument("", "", null) 
			m_xmlWell.onload = updateTags; 
			m_xmlWell.load(strFile); 
			}
		else if (m_ie)
			{
			m_xmlWell = new ActiveXObject("Microsoft.XMLDOM"); 
			m_xmlWell.async = false; 
		    while(m_xmlWell.readyState != 4)
		    	{}; 
			m_xmlWell.load(strFile); 
			updateTags();		
			}
	}
	catch (e)
	{
		window.alert("Error: " + e + ", for " + strFile);
	}	


}

function updateTags()
//-------------------
{
	var wells = m_xmlWell.getElementsByTagName("Well");
	var numWells = wells.length;

	var iWell = 0;
	var nItem = 0;

	var strTag,strValue;
	var QglSCF;
		
	// Analogs		
	var analogs = wells[iWell].getElementsByTagName("Analog");
	var numAnalogs = analogs.length;

	for (nItem=0;nItem<numAnalogs;nItem++)
	{
		strTag = analogs[nItem].getAttribute("Tag");
		strValue = analogs[nItem].firstChild.nodeValue;
		updateAnalog(strTag,strValue);
		if (strTag == "QMTOTAL")
			{
			try
				{
				m_Qm = parseFloat(strValue);
				}
			catch(e)
				{}
			}

	}


	// Valves
	var valves = wells[iWell].getElementsByTagName("Valve");
	var numValves = valves.length;
	var bInit = false;
		
	if (numValves!=m_numValves)
	{
		m_numValves = numValves;
		m_valvePosition = new Array(numValves);

		m_valveDesc = new Array(numValves);

		bInit = true;

	}
		
	for (nItem=0;nItem<numValves;nItem++)
	{
		updateValve(valves[nItem].getAttribute("Tag"),valves[nItem].getAttribute("Picture"));
		m_valvePosition[nItem] = parseInt(valves[nItem].firstChild.nodeValue)
		if (bInit)	
			m_valveDesc[nItem] = valves[nItem].getAttribute("Tag")
	}
			


}

function updateAnalog(strTag, strValue)
//---------------------------------------
{
	var strDocTag = "tag_" + strTag;

	if (m_ie)
		document.getElementById(strDocTag).innerText = strValue;
	else
		document.getElementById(strDocTag).innerHTML = strValue;

	if (strTag == "WHP")
	{
		try
		{
			m_WHP = parseFloat(strValue);
		}
		catch(e)
		{
		}
	}
	
}

function updateValve(strTag, strImage)
//--------------------------------------
{
	var strDocTag = "tag_" + strTag;

	if (m_ie)
		document.images(strDocTag).src = "bitmaps/" + strImage;
	else
		document.images[strDocTag].src = "bitmaps/" + strImage;

}



function toggleValve(strValve)
//----------------------------
{
	var nValve, bFound;
	bFound = false;
	for (nValve=0;nValve<9;nValve++)
		{
		if (m_valveDesc[nValve] == strValve)
			{
			bFound = true;
			break;
			}
		}
	if (!bFound)
		return;
			
	var nState = m_valvePosition[nValve];
	var bConfirmation;
	if (nState<1)
		bConfirmation = window.confirm("Open " + strValve + " ?");
	else
		bConfirmation = window.confirm("Close " + strValve + " ?");
		
	m_strValveToOperate = (bConfirmation ? strValve : "");
		
}
	
function valveNotImplemented(strValve)
//------------------------------------
{
	window.alert(strValve + " not operable");
}
	

function toggleDigital(strDigital)
//--------------------------------
{

}


	
function startit()
//----------------
{
	if (!bInit)
	{
		m_moz = (typeof(document.implementation) != 'undefined') && (typeof(document.implementation.createDocument) != 'undefined');
		m_ie = (typeof(window.ActiveXObject) != 'undefined'); 

		if (document.Applet1.isActive())
			{
			initialiseApplet();
			m_bAppletInitialised = true;
			}

		m_counter=setTimeout("dataRefresh()", 4000);
		m_strValveToOperate = "";

		bInit = true;
	}
		
	if (document.Applet1.isActive())
	{
		if (!m_bAppletInitialised)
			{
			initialiseApplet();
			m_bAppletInitialised = true;
			}
		dataRefresh();
	}
	else
	{
		setTimeout("startit()",250)
	}



}


//-------------------------
function initialiseApplet()
//-------------------------
{
	// Title
	document.Applet1.setTitle("Well Performance Table");

	document.Applet1.setBackColour("#252525");

	// X and Y Axes
	document.Applet1.setAxisX(250,0);
	document.Applet1.setAxisY(140,20);

	document.Applet1.setEngUnitsX("T/hr");
	document.Applet1.setEngUnitsY("bar");

	document.Applet1.setXintervals(5);
	document.Applet1.setYintervals(6);

	document.Applet1.setNumDecimalsX(1);
	document.Applet1.setNumDecimalsY(1);

	document.Applet1.setPlotColour(4,"Green");
	document.Applet1.setNumElements(4,1);
	document.Applet1.setMarkerSize(4,5);
	document.Applet1.setMarkerFill(4,true);
	document.Applet1.setLineType(4,0);
	document.Applet1.setDataItem(4,0,-100,-100);

	document.Applet1.setUserKey(m_strUserKey);


}


function getWellPerfXML(strFile)
//------------------------------
{
	try
	{
		if (m_moz)
			{
			m_xmlPerf = document.implementation.createDocument("", "", null) 
			m_xmlPerf.onload = getPerfTables; 
			}
		else if (m_ie)
			{
			m_xmlPerf = new ActiveXObject("Microsoft.XMLDOM"); 
			m_xmlPerf.async = false; 
		    while(m_xmlPerf.readyState != 4)
		    	{}; 
			}

		m_xmlPerf.load(strFile); 

		if (m_ie)
			getPerfTables();		
	}
	catch (e)
	{
		window.alert("Error: " + e + ", for " + strFile);
	}	


}


function getPerfTables()
//---------------------
{
	var tables = m_xmlPerf.getElementsByTagName("Table");
	var numTables = tables.length;

	var iTable = 0;
	var nItem = 0;
	
	var entries, numEntries;
	var i,x,y;
	
	if (!m_bPerfTablesDrawn)
	{
		// entries		
		for (iTable=0;iTable<numTables;iTable++)
		{
			document.Applet1.setMarkerSize(iTable,3);
			document.Applet1.setMarkerType(iTable,1);
			document.Applet1.setLineType(iTable,1);
			if (iTable==0)
				document.Applet1.setSeriesName(iTable,"No Gas Lift");
			else
				{
				strGasLift = iTable + " MMscf/d"
				document.Applet1.setSeriesName(iTable,strGasLift);
				}

			entries = tables[iTable].getElementsByTagName("Flow");
			numEntries = entries.length;

			document.Applet1.setNumElements(iTable,numEntries);

			for (nItem=0;nItem<numEntries;nItem++)
			{
						
				// X = Flow (T/hr)			
				x = parseFloat(entries[nItem].firstChild.nodeValue);
					
				// Y = Tubing head pressure
				y = parseFloat(entries[nItem].getAttribute("THP"));
						
				document.Applet1.setDataItem(iTable,nItem,x,y);

			}
		}
		
		m_bPerfTablesDrawn = true;
		
	}
	
	if (m_WHP>10)
		{
		iTable = 4;
		x = m_Qm;
		y = m_WHP;
		document.Applet1.setDataItem(iTable,0,x,y);
		var strDesc = y + " bar, " + x + "T/hr";
		document.Applet1.setNote(iTable,0,strDesc);
		}


	// Repaint
	// -------
	document.Applet1.reDraw();

}

// -->

