//
// Multi-Column Sorting  - Written by Scott Johnson
//                                    Muthu Soundararajan
//
// This code was generated by Seven Simple Steps
// History
//   + 7/23/01 - Turned off case sensitivity sorting - sj
//   + 7/9/01 -Fixed the column ordering -sj
//   + 5/6/01 -Removed the UGLY buttons for more eye please design -sj
//   + 3/1/01 -Original code generator (created buttons) - sj/ms
//
// For more information, visit: www.sevensimplesteps.com
//

	var numberID=0;
	var order_depth = 0;
	var sjBGColor = new Array('D1D1D1','CACDCF','C3C9CD','BCC5CB','B5C1C9','AEBDC7','A7B9C5','A0B5C3','99B1C1','92ADBF','8BA9BD','84A5BB','7DA1B9','769DB7','6F99B5');

	var column_order = new Array('','','','','','','','','','','','','','','');

	var date_format = new String('MM/DD/YYYY HH:NN:SSAM');
	var month_pos = date_format.indexOf('MM');
	var day_pos = date_format.indexOf('DD');
	var year_pos = date_format.indexOf('YYYY');

	var hour_pos = date_format.indexOf('HH');
	var min_pos = date_format.indexOf('NN');
	var sec_pos = date_format.indexOf('SS');
	var ampm_pos = date_format.indexOf('AM');

	function col_obj(col_type, col_length, col_max_val, col_precision)
	{
		this.type = col_type;
		this.length = col_length;
		this.max_val = col_max_val;
		this.precision = col_precision;
	}

	var sss_sortID_c0 = new col_obj('c',1,0,0);
	var sss_sortID_c1 = new col_obj('c',3,0,'0');
	var sss_sortID_c2 = new col_obj('c',10,0,'0');
	var sss_sortID_c3 = new col_obj('c',10,0,'0');
	var sss_sortID_c4 = new col_obj('c',32,0,0);
	var sss_sortID_c5 = new col_obj('c',32,0,0);
	var sss_sortID_c6 = new col_obj('c',32,0,0);
	var sss_sortID_c7 = new col_obj('c',1,0,'0');
	var sss_sortID_c8 = new col_obj('c',32,0,0);
	var sss_sortID_c9 = new col_obj('c',32,0,0);
	var sss_sortID_c10 = new col_obj('c',1,0,'0');
	var sss_sortID_c11 = new col_obj('c',50,0,'0');
	var sss_sortID_c12 = new col_obj('c',30,0,'0');
	var sss_sortID_c13 = new col_obj('c',25,0,'0');
	var sss_sortID_c14 = new col_obj('c',2,0,'0');
	var sss_sortID_c15 = new col_obj('c',5,0,'0');

	var column_objects = new Array(sss_sortID_c0,sss_sortID_c1,sss_sortID_c2,sss_sortID_c3,
		sss_sortID_c4,sss_sortID_c5,sss_sortID_c6,
		sss_sortID_c7,sss_sortID_c8,sss_sortID_c9,
		sss_sortID_c10,sss_sortID_c11,sss_sortID_c12,
		sss_sortID_c13,sss_sortID_c14,sss_sortID_c15);


	function lpad(in_text, length, fill_char, leading_char)
	{
		var tmp_text = new String(in_text);
		var i = 0;
		var out_text = '';
		var len = 0;
		       
		len = tmp_text.length;
		out_text = leading_char;
		       
		for (i=0; i<(length - len); i++)
		{
			out_text += fill_char;
		}
		       
		out_text += in_text;
		return(out_text);
	}

	function rpad(in_text, length, fill_char)
	{
		var i = 0;
		var tmp_text = new String(in_text);
		var out_text = '';
		var len = 0;

		len = tmp_text.length;
		out_text = tmp_text.toLowerCase();

		for (i=0; i<(length - len); i++)
		{
			out_text += fill_char;
		}

		return(out_text);
	}

	function real_pad(in_text, length, precision,leading_char)
	{
		var tmp_text = new String(in_text);
		var len = 0;
		var spot = 0;
		var m = 0;
		var d = 0;
		var v = '';
		var rv = '';

		d = parseFloat(tmp_text);
		d *= parseFloat(precision);
		d *= parseInt(rpad('1', m, '0'));

		v = String(d);
		rv = lpad(v, length, '0', leading_char);

		return(rv);
	}

	function get_date(in_date)
	{
		var tmp_date = new String(in_date);
		var date_string = '';
		var month
		var day
		var year
		var hour
		var min
		var sec
		var ampm
		
		//MM - Month
		//YYYY - Year
		//DD - Date
		//HH - Hour
		//NN - Min
		//SS - Sec
		//AM - AM
		//PM - PM

		month = tmp_date.substr(month_pos,2);
		day = tmp_date.substr(day_pos,2);
		year = tmp_date.substr(year_pos,4);
		hour = tmp_date.substr(hour_pos,2);
		min = tmp_date.substr(min_pos,2);
		sec = tmp_date.substr(sec_pos,2);

		//alert('Hour: ' + hour);

		ampm = new String(tmp_date.substr(ampm_pos,2));
		hourN = parseInt(hour);

		if (ampm.toUpperCase() == 'PM')
		{
			hourN += 12;
		}

		hour_str = new String(hourN);
		hour_str = lpad(hour_str,2,'0','0');

		//alert('Date: ' + tmp_date);
		date_string = year + month + day + hour_str +
			min + sec;

		return(date_string);

	}

	function build_key(row_id)
	{
		var tmp_key = '';
		var cid = 0;
		var rid = 0;
		var i = 0;
		var t = '';
		var int_val = 0;
		var rv = '';

		rid = row_id;
		       
		for (i=0; i < order_depth; i++)
		{
			cid = column_order[i];

			t = String(document.all.item('oTable').rows(rid).cells(cid).innerText);

			switch (column_objects[cid].type)
			{
			           
			case 'i':  // integer/long/byte/autonumber
				if (t == '')
				{
					t = '-' + column_objects[cid].max_val;
				}
				//Lpad with zeros for the length specified
				int_val = parseInt(t);

				if (int_val < 0)
				{
					tmp_t = t.substr(1,t.length-1);
					tmp_t = parseFloat(column_objects[cid].max_val) - parseFloat(tmp_t);
					rv = lpad(tmp_t, column_objects[cid].length, '0', '0');
				}
				else
				{
					rv = lpad(t, column_objects[cid].length, '0', '1');
				}
				break;

			case 'd':  // date

				if (t != '')
				{
					the_date = get_date(t);
				}
				else
				{
					the_date = '-' + column_objects[cid].max_val;
				}
				rv = lpad(the_date, 21, '0', '0');
				break;
					                   
			case 'c':  // char
			           
				if (t == '')
				{
					t = ' ';
				}
				rv = rpad(t, column_objects[cid].length, ' ', ' ');
				break;

			case 'r':  // real

				if (t == '')
				{
					t = '-' + column_objects[cid].max_val;
				}
				real_val = parseFloat(t);
				if (real_val < 0)
				{
					tmp_t = t.substr(1,t.length-1);
					tmp_t = parseFloat(column_objects[cid].max_val) - parseFloat(tmp_t);
					rv = real_pad(tmp_t, column_objects[cid].length, column_objects[cid].precision, '0');
				}
				else
				{
					rv = real_pad(t, column_objects[cid].length, column_objects[cid].precision, '1');
				}
				break; 
			} //End of switch

			tmp_key += rv;

		}//End of for loop

		return(tmp_key);
	}

	function sortTable(sortOrder)
	{
		var iColumnCount;
		var iRowCount;
		var c1,d1,c2;
		var iRow;
		var iCol;
		var t;
		var nrow;
		var c=0;
		var indx=0;

		iColumnCount = document.all.item('oTable').rows(3).cells.length;
		iRowCount = document.all.item('oTable').rows.length;

		//alert('Col Count: ' + iColumnCount);
		//alert('Row Count: ' + iRowCount);

		if (order_depth == 0)
		{
			alert('Please Choose Column Order for Sorting');
			return('');
		}

		iRowCount = iRowCount-3;

		if(sortOrder=='A')
		{
			for(iRow = iRowCount;iRow>2;iRow--)
			{
				d1 = c1 = build_key(iRow);
				//alert(d1);
				indx=0;
				for(j=3;j<=iRow;j++)
				{
					c2 = build_key(j);
					if(c2<c1)
					{
						c1=c2;
						indx=j;
					}
				}
				if(d1!=c1)
				{
					for(iCol=0;iCol<iColumnCount;iCol++)
					{
						t=document.all.item('oTable').rows(iRow).cells(iCol).innerHTML;
						document.all.item('oTable').rows(iRow).cells(iCol).innerHTML=document.all.item("oTable").rows(indx).cells(iCol).innerHTML;
						document.all.item('oTable').rows(indx).cells(iCol).innerHTML=t;
					}
				}
			}
			//alert('Aft For: ' + iRow);
		}
		else
		{
			for(iRow = iRowCount;iRow>2;iRow--)
			{
				d1 = c1 = build_key(iRow);
				indx=0;
				for(j=3;j<=iRow;j++)
				{
					c2 = build_key(j);
					if(c2>c1)
					{
						c1=c2;
						indx=j;
					}
				}
				if(d1!=c1)
				{
					for(iCol=0;iCol<iColumnCount;iCol++)
					{
						t=document.all.item('oTable').rows(iRow).cells(iCol).innerHTML;
						document.all.item('oTable').rows(iRow).cells(iCol).innerHTML=document.all.item("oTable").rows(indx).cells(iCol).innerHTML;
						document.all.item('oTable').rows(indx).cells(iCol).innerHTML=t;
					}
				}
			}
		}
		
	}

	function onClickColumnSelector(nColID)
	{
		var t;


		switch(nColID)
		{
		case 1:
			t = document.form1.sss_sortID_c1.value;
			break;
		case 2:
			t = document.form1.sss_sortID_c2.value;
			break;
		case 3:
			t = document.form1.sss_sortID_c3.value;
			break;
		case 4:
			t = document.form1.sss_sortID_c4.value;
			break;
		case 5:
			t = document.form1.sss_sortID_c5.value;
			break;
		case 6:
			t = document.form1.sss_sortID_c6.value;
			break;
		case 7:
			t = document.form1.sss_sortID_c7.value;
			break;
		case 8:
			t = document.form1.sss_sortID_c8.value;
			break;
		case 9:
			t = document.form1.sss_sortID_c9.value;
			break;
		case 10:
			t = document.form1.sss_sortID_c10.value;
			break;
		case 11:
			t = document.form1.sss_sortID_c11.value;
			break;
		case 12:
			t = document.form1.sss_sortID_c12.value;
			break;
		case 13:
			t = document.form1.sss_sortID_c13.value;
			break;
		case 14:
			t = document.form1.sss_sortID_c14.value;
			break;
		case 15:
			t = document.form1.sss_sortID_c15.value;
			break;
		}

		if(t=='0')
		{
			// global number of column selected

			numberID++;

			switch(nColID)
			{
			case 1:
				document.all.c1.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c1.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 2:
				document.all.c2.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c2.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 3:
				document.all.c3.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c3.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 4:
				document.all.c4.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c4.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 5:
				document.all.c5.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c5.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 6:
				document.all.c6.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c6.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 7:
				document.all.c7.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c7.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 8:
				document.all.c8.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c8.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 9:
				document.all.c9.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c9.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 10:
				document.all.c10.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c10.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 11:
				document.all.c11.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c11.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 12:
				document.all.c12.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c12.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 13:
				document.all.c13.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c13.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 14:
				document.all.c14.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c14.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			case 15:
				document.all.c15.style.backgroundColor=sjBGColor[numberID-1];
				document.form1.sss_sortID_c15.value=numberID;
				column_order[numberID-1] = nColID;
				order_depth++
				break;
			}
		}
		else
		{
			msg = 'To change the selection order, press the Clear Button';
			alert(msg);
		}
	}

	function onClickClear()
	{
		var i;

		numberID=0;

		document.form1.sss_sortID_c1.value='0';
		document.all.c1.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c2.value='0';
		document.all.c2.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c3.value='0';
		document.all.c3.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c4.value='0';
		document.all.c4.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c5.value='0';
		document.all.c5.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c6.value='0';
		document.all.c6.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c7.value='0';
		document.all.c7.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c8.value='0';
		document.all.c8.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c9.value='0';
		document.all.c9.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c10.value='0';
		document.all.c10.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c11.value='0';
		document.all.c11.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c12.value='0';
		document.all.c12.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c13.value='0';
		document.all.c13.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c14.value='0';
		document.all.c14.style.backgroundColor="eeeeee";
		document.form1.sss_sortID_c15.value='0';
		document.all.c15.style.backgroundColor="eeeeee";

		for(i=0; i<15; i++)
		{
			column_order[i] = '';
		}

		order_depth=0;
	}


