
	var a				= 0.70618658;
	var b				= -0.04117961;
	var c				= -0.043698897;
	var d				= -0.0000069284186;
	var e				= 0.000057802908;
	
	var doorTime		= 0.155;
	var stabilityTime	= 1;
	
	var leakCheckTime	= 0.0;
	var flameCheckTime	= 0.0;
	var eventsTime		= 0;
	
	//setting default  values
	var solventWash		= 0;
	var sampleWash		= 4;
	var samplePump		= 6;	
	var viscosity		= 0;	

	function ValidateTemp(objTemp) 
	{ 
		//alert(objTemp.value);
		//objTemp.className = "disabled";
		if( isNaN(objTemp.value) || objTemp.value=="" || parseInt(objTemp.value)< 30 || parseInt(objTemp.value)> 450)
		{
			alert('Please enter temperature value between 30 & 450 degrees.');
			if(objTemp.value=="" && objTemp.className != "disabled")
			{
				objTemp.value="30"
			}
			objTemp.focus();
			ClearChromoTime();
		}
		else
		{
			
			CalculateChromoTime();
		}
		
	}
	function ValidateTime(objTime) 
	{ 
		//alert(objTime.value);
		if( isNaN(objTime.value) || objTime.value=="" ||parseFloat(objTime.value)< 0 || parseFloat(objTime.value)> 999)
		{
			alert('Please enter Time value between 0 & 999 minutes.');
			if(objTime.value=="" && objTime.className != "disabled")
			{
				objTime.value="0.0"
			}
			objTime.focus();
			
			ClearChromoTime();
			
		}
		else
		{
			
			CalculateChromoTime();
		}
		
	}
	
	function ValidateRate(objRate,rowNum) 
	{ 
		
		if( isNaN(objRate.value) || objRate.value=="" ||parseFloat(objRate.value)< 0 || parseFloat(objRate.value)> 160)
		{
			alert('Please enter Rate value between 0 & 160 C/min.');
			if(objRate.value=="" && objRate.className != "disabled")
			{
				objRate.value="0.0" 
			}
			objRate.focus();
			ClearChromoTime();
			
		}
		else if(parseFloat(objRate.value)== 0)
		{
			//alert('helloq'+rowNum);
			for( rowCount = rowNum +1; rowCount <= 10; rowCount++)
			{	
				var breakflag = 0;
				//alert(rowCount);
				for( colCount = 1 ; colCount <= 3; colCount++)
				{	
					//alert(colCount);
					if(colCount ==1)
						Temptext = "txtTemp" + rowCount;
					else if(colCount ==2)
						Temptext = "txtTime" + rowCount;
					else
						Temptext = "txtRate" + rowCount;
						
					var e = document.getElementById(Temptext);
					if(e.className != "disabled")
					{
						//Only disable those which are enabled
						e.className = "disabled";
						e.value="";
						e.disabled = true;
					}
					else
					{	//Exit loop once you detect disabled cells
						breakflag =1;
						break;
					}
				}
				if(breakflag==1)
					break;				
			}     
				
			CalculateChromoTime();
			
		}
		else
		{
			//alert('hello'+rowNum);
			if( rowNum <10)
			{
				for( colCount = 1 ;colCount <= 3; colCount++)
				{	//alert(colCount);
					if(colCount ==1)
						Temptext = "txtTemp" + (rowNum+1);
					else if(colCount ==2)
						Temptext = "txtTime" + (rowNum+1);
					else
						Temptext = "txtRate" + (rowNum+1);
						
					var e = document.getElementById(Temptext);
					if(e.className == "disabled")
					{
						//enable the next row
						e.className="";
						e.disabled = false;
						//Set focus to the Temp text of the next row
						if(colCount==1)
							e.focus();
					}
					
				}
			}
			
			CalculateChromoTime();
		}
		
		
	}
	
	function CalculateChromoTime()
	{
		var total= 0.0;		
		for( hdnCount=0 ; hdnCount<=10; hdnCount++)
		{
			
			if(hdnCount==0)
			{
				
				total = parseFloat(document.getElementById("txtTime"+ 0).value);
				//alert(total);
			}			
			else
			{
				
				var prevRate = parseFloat(document.getElementById("txtRate" + (hdnCount - 1)).value);
				var prevTemp = parseInt(document.getElementById("txtTemp" + (hdnCount - 1)).value);
				var currTemp = parseInt(document.getElementById("txtTemp" + (hdnCount)).value);
				var currTime = parseFloat(document.getElementById("txtTime" + (hdnCount)).value);
				
				
				if(prevRate>0)
				{
					total = total + (((currTemp - prevTemp)/prevRate) + currTime);
					//alert('total= ' + total);
				}
				else
				{
					break;
				}
				
			}
			
						
		}
		if(total>0)	
		{
			
			lblTotalChromoTime.innerHTML = "" + RoundToTwoPlaces(total);
			CalculateTotalCool();
		}
		
		CalculateTotalCycleTime();
		return;
	
	}
	function ClearChromoTime()
	{
		lblTotalChromoTime.innerHTML = "";
		lblTotalCoolTime.innerHTML = "";		
	}
	
	function CalculateTotalCool()
	{
		var fromTemp;
		var fromTime;
		var toTemp;
		var toTime;
		var totalTime;
		var totalCoolTime;
		
		var maxValue = 0;
		var tempValue= 0;
		
		//Calc fromTemp
		for( rowCount = 0; rowCount <= 10; rowCount++)
		{	
			//alert(rowCount);
							
			var Temptext = document.getElementById("txtTemp" + rowCount);
			if(Temptext.className != "disabled")
			{
				tempValue = parseInt(Temptext.value);
				if(tempValue > maxValue)
				{
					maxValue = tempValue;
					//alert(maxValue);
				}
			}
			else
			{	//Exit loop once you detect disabled cells
				break;
			}
		}   
		
		fromTemp = maxValue;
		
		//Calc fromTemp
		
		var numerator   = (a + (c * fromTemp) + (e * fromTemp * fromTemp) );
		var denominator = (1 + (b * fromTemp) + (d * fromTemp * fromTemp) );
		
		fromTime = Math.pow((numerator/denominator),2);
		//alert(fromTime);
		
		//Calc ToTemp
		
		toTemp = parseInt(document.getElementById("txtTemp0").value);
		
		//Calc fromTime
		
		numerator   = (a + (c * toTemp) + (e * toTemp * toTemp) );
		denominator = (1 + (b * toTemp) + (d * toTemp * toTemp) );
		
		toTime = Math.pow((numerator/denominator),2);
		//alert(toTime);
		
		//Calc totalTime
		totalTime = toTime - fromTime ;
		//alert(totalTime);
		
		//Calc totalCoolTime
		
		totalCoolTime = (totalTime + doorTime + stabilityTime);
		//alert(totalCoolTime);
		//assigning to the textbox
		if(totalCoolTime > 0)
			lblTotalCoolTime.innerHTML = "" + RoundToTwoPlaces(totalCoolTime);		
		else
			lblTotalCoolTime.innerHTML = "" ;
		
		CalculateTotalPreRunTime();
		CalculateTotalCycleTime();
		return;
	}

	function ValidateEquilibrium(objEqui)
	{	
		
		if(isNaN(objEqui.value) || objEqui.value =="" )
		{
			alert('Please enter Equilibrium value between 0 & 99');
			objEqui.value= "0.0";
			objEqui.focus();
			
		}
		else if( parseFloat(objEqui.value)< 0 || parseFloat(objEqui.value)> 99)
		{
			alert('Please enter Equilibrium value between 0 & 99');
			lblTotalPreRunTime.innerHTML = "";
			objEqui.focus();
		}
		CalculateTotalPreRunTime();
		
		
	}
	
	function CalculateTotalPreRunTime()
	{
		var totalPreRunTime;
		if( parseFloat(document.forms[0].txtEquilibrium.value)< 0 || parseFloat(document.forms[0].txtEquilibrium.value)> 99)
		{
			lblTotalPreRunTime.innerHTML = "";
		}
		else
		{
			totalPreRunTime = parseFloat(document.forms[0].txtEquilibrium.value)+ leakCheckTime + flameCheckTime + eventsTime ;
			lblTotalPreRunTime.innerHTML = "" + RoundToTwoPlaces(totalPreRunTime);
			
			CalculateAutoSamplerTime();
			CalculateTotalCycleTime();
		}
	}
	
	function ValidateSolventWashes(objTxt)
	{
		if(isNaN(objTxt.value) ||  objTxt.value==""||parseInt(objTxt.value)< 0 || parseInt(objTxt.value)> 2)
		{
			alert('Please enter Solvent Wash value between 0 & 2.');
			if(objTxt.value=="")
			{
				objTxt.value="0"
			}
			lblAutoSamplerTime.innerHTML = "" ;
			objTxt.focus();
			
		}
		else
		{
			solventWash = parseInt(objTxt.value);
			//alert(solventWash);
			CalculateAutoSamplerTime();
		}
	}
	
	function ValidateSampleWashes(objTxt)
	{
		if( isNaN(objTxt.value) || objTxt.value==""||parseInt(objTxt.value)< 0 || parseInt(objTxt.value)> 10)
		{
			alert('Please enter Sample Wash value between 0 & 10.');
			if(objTxt.value=="")
			{
				objTxt.value="4"
			}
			lblAutoSamplerTime.innerHTML = "" ;
			objTxt.focus();
			
		}
		else
		{
			sampleWash = parseInt(objTxt.value);
			//alert(sampleWash);
			CalculateAutoSamplerTime();
		}
	}
	
	function ValidateSamplePumps(objTxt)
	{
		if( isNaN(objTxt.value) || objTxt.value==""||parseInt(objTxt.value)< 0 || parseInt(objTxt.value)> 10)
		{
			alert('Please enter Sample Pump value between 0 & 10.');
			if(objTxt.value=="")
			{
				objTxt.value="6"
			}
			lblAutoSamplerTime.innerHTML = "" ;
			objTxt.focus();
			
		}
		else
		{	
			samplePump = parseInt(objTxt.value);
			//alert(samplePump);
			CalculateAutoSamplerTime();
		}
	}
	
	function ValidateViscosity(objTxt)
	{
		if( isNaN(objTxt.value) || objTxt.value==""||parseInt(objTxt.value)< 0 || parseInt(objTxt.value)> 999)
		{
			alert('Please enter Viscosity value between 0 & 999 secs.');
			if(objTxt.value=="")
			{
				objTxt.value="0"
			}
			lblAutoSamplerTime.innerHTML = "" ;
			objTxt.focus();
			
		}
		else
		{
			viscosity = parseInt(objTxt.value);
			//alert(viscosity);
			CalculateAutoSamplerTime();
		}
	}
	
	function CalculateAutoSamplerTime()
	{
		var totalWash;
		var totalPreRunTime;
		var ovenStabPreRun;
		var afterReady;
		var autoSamplerTime;
		var solvWash;
		var sampWash;
		var sampPump;
		
		solvWash	= (solventWash * 26)/60; 
		sampWash	= (sampleWash * (20 + viscosity))/60; 
		sampPump	= (samplePump * ( viscosity + 3)+ 5)/60;  
		
		totalWash = solvWash + sampWash ;
		totalPreRunTime = parseFloat(lblTotalPreRunTime.innerHTML);
		ovenStabPreRun = 1.00 + totalPreRunTime ;
		afterReady = 0.00;
		autoSamplerTime;
		
		if(totalWash > ovenStabPreRun)
		{
			afterReady = (totalWash - totalPreRunTime - 1);
		}
		else
		{
			afterReady = 0.00;
		}
		
		autoSamplerTime = afterReady + sampPump;
		//assign Auot Sampler Value
		lblAutoSamplerTime.innerHTML = "" + RoundToTwoPlaces(autoSamplerTime);
		
		CalculateTotalCycleTime();
		return;
	}
	
	function CalculateTotalCycleTime()
	{
		var sumTotalCycleTime = 0.0;
		sumTotalCycleTime =  sumTotalCycleTime +  parseFloat(lblTotalChromoTime.innerHTML);
		sumTotalCycleTime =  sumTotalCycleTime +  parseFloat(lblTotalCoolTime.innerHTML);
		sumTotalCycleTime =  sumTotalCycleTime +  parseFloat(lblTotalPreRunTime.innerHTML);
		sumTotalCycleTime =  sumTotalCycleTime +  parseFloat(lblAutoSamplerTime.innerHTML);
		if(!isNaN(sumTotalCycleTime))
		{
			lblTotalCycleTime.innerHTML = "" + RoundToTwoPlaces(sumTotalCycleTime);
			lblAnaCycleTimeGC.innerHTML = lblTotalCycleTime.innerHTML ;
			CalculateIncremental();
		}
		else
		{
			ClearTotalCycleTime();
		}
		return;
	}
	
	function ClearTotalCycleTime()
	{
		lblTotalCycleTime.innerHTML = "" ;
		lblAnaCycleTimeGC.innerHTML = "" ;
		return;
	}
	
	function ValidateAnaCycleTime(objTemp)
	{
		if(isNaN(objTemp.value) || objTemp.value==""|| parseFloat(objTemp.value)< 0 || parseFloat(objTemp.value)>100)
		{
			alert('Please enter Analytical Cycle Time value between 0 & 100');
			if(objTemp.value=="" )
			{
				objTemp.value="0.00"
			}
			objTemp.focus();
			ClearIncremental();
		}
		else
		{
			
			CalculateIncremental();
		}
		
	}	
	
	
	function CalculateIncremental()
	{		
		var minsInHour = 60;
		var samplesPerHourCurr	=  minsInHour / (parseFloat( document.forms[0].txtAnaCycleTimeCurr.value)); 
		var samplesPerHourGC	=  minsInHour / (parseFloat( lblAnaCycleTimeGC.innerHTML));   
		
		var	hourPerDay			= parseInt(document.forms[0].dayLength.value);
		
		var samplePerDayCurr	= samplesPerHourCurr * hourPerDay;
		var samplePerDayGC		= samplesPerHourGC * hourPerDay ;
		
		var samplePerWeekCurr	= samplePerDayCurr * 5;
		var samplePerWeekGC		= samplePerDayGC * 5;
					
		var samplePerYearCurr	= samplePerDayCurr * 240;
		var samplePerYearGC		= samplePerDayGC * 240;
		
		var incrementalSamplePerDay		= samplePerDayGC - samplePerDayCurr;
		var incrementalSamplePerWeek	= incrementalSamplePerDay * 5;
		var incrementalSamplePerMonth	= incrementalSamplePerWeek * 4;
		var incrementalSamplePerYear	= incrementalSamplePerMonth * 12;			
		
		var increasedProd = (samplePerYearGC - samplePerYearCurr )* 100/ samplePerYearCurr;
		
		var priceperSampleCurr	= 0.0; //parseFloat( document.forms[0].txtPricePerSampleCurr.value);
		var priceperSampleGC	= parseFloat( document.forms[0].txtPricePerSampleGC.value);
		
		var revenuePerDayCurr	= priceperSampleCurr * samplePerDayCurr; 
		var revenuePerWeekCurr	= revenuePerDayCurr*  5; 
		var revenuePerMonthCurr	= revenuePerWeekCurr *  4;		
		var revenuePerYearCurr	= revenuePerDayCurr *  240;		
		
		var revenuePerDayGC		= priceperSampleGC * samplePerDayGC; 
		var revenuePerWeekGC	= revenuePerDayGC *  5; 
		var revenuePerMonthGC	= revenuePerWeekGC*  4;		
		var revenuePerYearGC	= revenuePerDayGC *  240;	
		
		var incrementalRevenuePerWeek	= revenuePerWeekGC - revenuePerWeekCurr;
		
		var incrementalRevenuePerMonthGC	= incrementalSamplePerMonth * priceperSampleGC;
		var incrementalRevenuePerYearGC		= incrementalSamplePerYear * priceperSampleGC;
		
		
		/*
		var priceGC		= parseFloat(document.forms[0].txtPriceGC.value);
		
		var payBackTimeGC	= priceGC /revenuePerWeekGC ;
		*/	
					
		if(!isNaN(samplesPerHourCurr) && isFinite (samplesPerHourCurr)&& !isNaN(samplesPerHourGC) && isFinite (samplesPerHourGC))	
		{		
			lblSampleHourCurr.innerHTML	= "" + RoundToTwoPlaces(samplesPerHourCurr);
			lblSampleHourGC.innerHTML	= "" + RoundToTwoPlaces(samplesPerHourGC);
		}
		
		if(!isNaN(incrementalSamplePerDay) && isFinite (incrementalSamplePerDay))	
		{
			lblIncrementalSampleDay.innerHTML		= "" +  RoundToTwoPlaces(incrementalSamplePerDay);
			lblIncrementalSampleMonth.innerHTML		= "" +  RoundToTwoPlaces(incrementalSamplePerMonth);
			lblIncrementalSampleYear.innerHTML		= "" +  RoundToTwoPlaces(incrementalSamplePerYear);
		}
		if(!isNaN(increasedProd) && isFinite (increasedProd))	
		{
			lblIncreaseProd.innerHTML				= "" +	RoundToTwoPlaces(increasedProd);
		}
		
		if(!isNaN(incrementalRevenuePerMonthGC) && isFinite (incrementalRevenuePerMonthGC))	
		{
			lblIncrementRevMonthGC.innerHTML	= document.forms[0].selCurrency.value + " " + RoundToTwoPlaces(incrementalRevenuePerMonthGC);
			lblIncrementRevYearGC.innerHTML		= document.forms[0].selCurrency.value + " " + RoundToTwoPlaces(incrementalRevenuePerYearGC);
		}
		/*				
		if(!isNaN(payBackTimeGC) && isFinite (payBackTimeGC))	
		{			
			lblPaybackGC.innerHTML	= "" + Math.round(payBackTimeGC);
		}
		*/
					
		
	}
	
	function ClearIncremental()
	{
		lblSampleHourCurr.innerHTML = "" ;
		lblSampleHourGC.innerHTML = "" ;
	}
	
	
	function SetCurrency(Currency)
	{
		if(Currency !="")
		{
			/*lblCurrency1.innerHTML = Currency;*/
			lblCurrency2.innerHTML = Currency;
			/*lblCurrency4.innerHTML = Currency;*/
			
			
			if(lblIncrementRevMonthGC.innerHTML != "" )
			{			
				var indexOfSpace = lblIncrementRevMonthGC.innerHTML.indexOf(" ");
				lblIncrementRevMonthGC.innerHTML = document.forms[0].selCurrency.value + lblIncrementRevMonthGC.innerHTML.substring(indexOfSpace);
				
				indexOfSpace = lblIncrementRevYearGC.innerHTML.indexOf(" ");
				lblIncrementRevYearGC.innerHTML = document.forms[0].selCurrency.value + lblIncrementRevYearGC.innerHTML.substring(indexOfSpace);
			}
		}
	}
	function RoundToTwoPlaces(X) 
	{	
		var roundNumber = ""+ FormatDecimal(X);
		if (roundNumber.indexOf('.') == 0)
		{
			roundNumber = "0" + roundNumber;
		}
		return roundNumber;
		
	}
	
	function FormatDecimal(X) 
	{ 
		var S, T ;
		return (S = new String(Math.round(X*100))).substr(0, T=(S.length-2)) + '.' + S.substr(T, 2) 
    }	
	
	//
	//Function to enable only numbers to be entered
	//
	function NumLock(e)
	{	
		
		if(navigator.appName.indexOf("Netscape")>(-1))
		{
			var oEvent = (window.event) ? window.event : e;
			var nKeyCode =  oEvent.keyCode ? oEvent.keyCode :
							oEvent.which ? oEvent.which : 
							void 0;
		
			if((nKeyCode >=48 && nKeyCode <=57 )|| nKeyCode ==8 || nKeyCode ==9 || nKeyCode ==37 || nKeyCode ==39 )
			{
				//allow  numbers & tab 
				
			}
			else
			{
				try
				{
					//alert(nKeyCode);
					// ignore the key pressed
					oEvent.preventDefault();
					oEvent.stopPropagation();
				}
				catch(ex)
				{
				}
				
			}
		}
		
		else
		{
			if(window.event.keyCode >=48 && window.event.keyCode <=57)
			{
				//do nothing
			}
			else
			{
				// ignore the key pressed
				window.event.keyCode = 27;
			}
		}
	}
	
	//
	//Function to enable only Decimal numbers to be entered
	//
	function DecimalLock(tempObj, e)
	{
		if(navigator.appName.indexOf("Netscape")>(-1))
		{
			var oEvent = (window.event) ? window.event : e;
			var nKeyCode =  oEvent.keyCode ? oEvent.keyCode :
							oEvent.which ? oEvent.which : 
							void 0;
							
			if((nKeyCode >=48 && nKeyCode <=57 )|| nKeyCode ==8 || nKeyCode ==9 || nKeyCode ==37 || nKeyCode ==39 || nKeyCode ==46)
			{
				//allow  numbers or Backspace, Tab , Left, Right arrow, Decimal & Delete (both have 46) 
				//so for only integers delete cannot be enabled, backspace needs to be used for deleting
				//prevent multiple decimal points
				if (nKeyCode == 46 && tempObj.value.lastIndexOf('.') != -1 )
				{					
					// ignore the decimal pressed, but here delete key will also stop if decimal exists, else delete works
					oEvent.preventDefault();
					oEvent.stopPropagation();
				}
			}
			else
			{
				try
				{
					//alert(nKeyCode);
					// ignore the key pressed
					oEvent.preventDefault();
					oEvent.stopPropagation();
				}
				catch(ex){}				
			}
		}
		else
		{//IE
	
			if(window.event.keyCode == 46 || (window.event.keyCode >=48 && window.event.keyCode <=57))
			{
				//prevent multiple decimal points
				if (window.event.keyCode == 46 && tempObj.value.lastIndexOf('.') != -1 )
				{
					// ignore the key pressed
					window.event.keyCode = 27;
				}
			}
			else
			{// ignore the key pressed
				window.event.keyCode = 27;
			}
		}
	}
	
	function AppendZero(tempObj,decimalPlace)
	{
		// Only if a Number
		if(tempObj.value.length >0)
		{
			if(tempObj.value.indexOf('.') == -1)
			{
				tempObj.value = tempObj.value + ".";
			}
			while(tempObj.value.indexOf('.') >= (tempObj.value.length - decimalPlace))
			{
				// append 0 if no value entered after .
				
				tempObj.value = tempObj.value + "0";
			}
		}
	}
	
	function EnforceDecimalLimit(tempObj,decimalPlace)
	{
		var len  = tempObj.value.length;
		var subindex ;
		//the value should have decimal entered
		if(tempObj.value.indexOf('.') != -1)
		{
		//checking if there is at least one more decimal entered than the required decimal place
			if(tempObj.value.indexOf('.') < (tempObj.value.length - (decimalPlace + 1)))
			{	//Prevent more than desired decimal values
				//alert(tempObj.value);
				//Get index of the first  decimal value
				subindex = tempObj.value.indexOf('.') + decimalPlace;
				//additional +1 because the the character at the second index value is not inclusive
				tempObj.value = tempObj.value.substring(0,subindex + 1);
			}
		}
		AppendZero(tempObj,decimalPlace);
	}
	