//scripts for surchargedFlow.html
//10/2/2009
//04/29/2010
//09/15/11 cumec added

//onchange unit select index is now messed up because i added new select!! 07:21 09/15/11

//jquery and dom are used interchageably even to do the same task-but is ok

	function createTable()
	{
		addtable("t",3,12);
		$('tr:eq(2)').css('background-color','#FAEBD7');
		var k = 12;
		while(k){k--;
			write('t',1,k,'-');
		}

		//insert unit selectors
		//	function unit_convert(col,startrow,selector_index)

		var s1 = '<SELECT id="flow_unit2" style="background-color: white; width: 100px" onchange="unit_convert(6,4,6)"><OPTION value="0.6464124">MGD<OPTION value="448.8">GPM<OPTION SELECTED value="1.0">CFS<OPTION value="0.028316847">cumec</select>';
		cell('t',2,6).html(s1);

		var s2 = '<SELECT id="velocity_unit" style="background-color: white; width: 100px" onchange="unit_convert(8,4,7)"><OPTION SELECTED value="1.0">ft/s<OPTION value="1/3.28084">m/s<OPTION value="3600/5280">Mi/hr</select>';
		cell('t',2,8).html(s2);
	
		var s3 = '<SELECT id="depth_unit" style="background-color: white; width: 100px" onchange="unit_convert(12,4,8)"><OPTION selected value="1.0">Feet<OPTION value="12.0">Inch<OPTION value="0.3048">Meter</SELECT>';
		cell('t',2,12).html(s3);

		//results to table

		write('t',0,0,'S. No.');
		write('t',0,1,'Pipe Length');
		write('t',0,2,'Width or Dia');
		write('t',0,3,'Height or Dia');
		write('t',0,4,'Manning\'s n');
		write('t',0,5,'Flow');
		write('t',0,6,'Minor Losses<br/>Factor, k');
		write('t',0,7,'Velocity');
		write('t',0,8,'Friction<br/>Slope, S<sub>f</sub>');
		write('t',0,9,'Frictional<br/>Head Loss, H<sub>f</sub>');
		write('t',0,10,'Velocity<br/>Head Loss, HL<sub>v</sub>');
		write('t',0,11,'Total HL');
		
		//third row to contain col numbers
		var k = 12;
		while(k){k--;
			write('t',2,k,'('+eval(k+1)+')');
		}
		write('t',2,0,"-");

		cell('t',2,2).text('ft');
		cell('t',2,3).text('ft');
		cell('t',2,4).text('ft');
		cell('t',2,10).text('ft');
		cell('t',2,11).text('ft');

		//add slope toggle button
		gt('td')[20].innerHTML='<INPUT TYPE="button" VALUE="slope toggle" onClick="toggleSlope()">';
		gt('caption')[0].innerHTML='Head Loss Calculation for Surcharged Pipes';
		$('tr:eq(0) td').css('text-align','center');
		$('tr:eq(1) td').css('text-align','center');

	}

	function updateTable(resultArray)
	{

		var res=resultArray;
		//console.log(res);
		var decimals = document.getElementById('decimal_set').value;

		//circular?
		var circular = document.getElementById('radio1').checked;

		var r = get('tr').length+1;


		//cell('t',r,1).text(r-3);	//S. No on 1st col
		if(circular)
			{cell('t',r,1).html('&Oslash ' + eval(r-3));}	//S. No on 1st col
		else
			{cell('t',r,1).html('&#35 ' + eval(r-3));}	//S. No on 1st col


		for(var c=2;c<13;c++){
			//option bases are different for array (=0) and column(=1)
			var k = c-2;
			//console.log(k+': \t'+c+' :\t '+res[k])

			datawrite('t',r,c,res[k].toString())	//send data to be stored as value but do not show 
								//toString added to assure that 0 value is also sent to value; otherwise 0.0 could not be stored as value!!
		}

		changeDecimals();	//show data
	}

	function calcSurchargedFlow()
	{	
		//read data form
		var b = eval($('#width').val())/$('#widthunit').val();
		var t = eval($('#height').val())/$('#heightunit').val();
		//var linearFeet = eval($('#pipeLength').val())

		var linearFeet = eval($('#pipeLength').val()) / gd('pipeLength_unit').value;
		console.log('calfSurchargedFlow() :',linearFeet);


		var Q = eval($('#flow').val())*gd('flow_unit1').value;

		var n = eval($('#manning').val());
		var k = eval($('#k').val());

		//which radio button is selected?
		if (document.getElementById('radio1').checked==true){
			//cl('CIRCULAR PIPE')
			var p = new CircularPipe(b,n,0.5)	//pipe slope is meaningless
		}
		else
		{	
			//cl('RECTANGULAR PIPE')
			var p = new RectangularPipe(b,t,n,0.5)	//pipe slope is meaningless
		}

		var results = [];
		results = p.surchargedHeadLoss(Q,linearFeet,k);
		//console.log(results);

		updateTable(results);
		calcEquivCircularDia();
		addLatexEquation();
	}

	function addLatexEquation(){
		if(document.getElementById('radio1').checked==true){
			//toWindow('myWindow',eqn1(createDataObject()));	//circular pipe
			$('#equation').html('<hr />' + eqn1(createDataObject()));
		}else{
			//toWindow('myWindow',eqn2(createDataObject()));	//rectangular pipe
			$('#equation').html('<hr />' + eqn2(createDataObject()));
		}
	}

	function createDataObject(){
		//read data form

		//var linearFeet = eval($('#pipeLength').val());
var linearFeet = eval($('#pipeLength').val()) / gd('pipeLength_unit').value;
console.log('createDataObject() : ',linearFeet);

		var Q = eval($('#flow').val())*gd('flow_unit1').value;
		var n = eval($('#manning').val());
		var k = eval($('#k').val());

		//which radio button is selected?
		if (document.getElementById('radio1').checked==true){
			//cl('CIRCULAR PIPE')
			var t=eval($('#height').val())/$('#heightunit').val();
			return {n:n, Q:Q, D:t, L:linearFeet, k:k};		
		}
		else
		{	
			//cl('RECTANGULAR PIPE')
			var b = eval($('#width').val())/$('#widthunit').val();
			var t = eval($('#height').val())/$('#heightunit').val();
			var w = eval($('#height').val())/$('#heightunit').val();
			return {n:n, Q:Q, W:b, H:t, L:linearFeet, k:k};		
		}
	}

	function unit_convert(col,startrow,selector_index)
	{	
		var converter = eval($('select:eq('+selector_index+')').val());

		var decimals = gd('decimal_set').value;

		//console.log('converter = ' + converter);
		//console.log('decimals = ' + decimals);

		//find the last row index
		var rows = countRow('t');
		
		for(var k=startrow;k<=rows;k++)
		{
			var c = cell('t',k,col);
			c.css('background','pink');
			var x = c.attr('value')*1.0;
			//console.log('val = '+x);
			var y = (x*converter).toFixed(decimals);
			//console.log('y = '+y)
			c.text(y);
		}
	}

	function syncronizePipe()
	{
		if (gd('radio1').checked)
		{	
			//console.log('Deactivate height and show same as diameter');
			var w=gd('width').value;
			gd('widthtext').innerHTML = ' Diameter';
			gd('heighttext').innerHTML = ' Diameter';
			
			gd('height').value = w;
			gd('heightunit')[gd('widthunit').selectedIndex].selected = 1;

			gd('height').disabled = 1;
			gd('heightunit').disabled = 1;
			$('#equivalent').hide('slow'); //eqv circular dia
		}
		else
		{
			//console.log('Activate height');
			gd('height').disabled = 0;
			gd('heightunit').disabled = 0;
			gd('widthtext').innerHTML = ' Width';
			gd('heighttext').innerHTML = ' Height';
			$('#equivalent').show('slow'); //eqv circular dia
		}
	}

	function changeDecimals()
	{
		//revert unit changer
		gd('flow_unit2').selectedIndex = 2;
		gd('velocity_unit').selectedIndex = 0;
		gd('depth_unit').selectedIndex = 0;

		var decimals = gd('decimal_set').value;
		var rows = gt('tr').length;
		var cols = [6,8,12];
		for(var c=0;c<3;c++){
			unit_convert(cols[c],4,5+c);
		}

		var cols = [2,3,4,5,7,9,10,11];
		for(var c=0;c<8;c++){
			for(var r=4;r<rows+1;r++)
			{
				var mycell = cell('t',r,cols[c]);
				var x = mycell.attr('value')*1.0;
				var y = x.toFixed(decimals);
				mycell.text(y);
			}
		}		
	}

	function calcEquivCircularDia(){
		//calculate equivalent circular dia
		//read data form
		var b = eval($('#width').val())/$('#widthunit').val();
		var t = eval($('#height').val())/$('#heightunit').val();
		var pipe = new RectangularSection(b,t);
		var f = $('#equivdia_unit').val();
		var eqvDia = (pipe.getEquivalentCircular()*f).toFixed(3);
		$('#diameter').val(eqvDia);
	}

	function toggleSlope(){
		var reg = /in/gi;	//regular expression
		var decimals = gd('decimal_set').value;		

		for(r=4;r<gt('tr').length+1;r++)
		{
			var c = cell('t',r,9);
			var s = c.text();
			var x = c.attr('value')*1.0;

			if(s.match(reg))
				{c.text(x.toFixed(decimals))}
			else
			   {c.text('1 in '+(1/x).toFixed(0));}		//optional unit for friction loss 1 ft per x ft
		}
	}

