/*
	Copyright Interactive Co.,Ltd 2005;
	cs_table.js v 1.0 2005-03-11;
	update : 2005-03-22;
	Table Javascript File;
*/

/* Хүснэгт үүсгэх, засварлах, устгах класс */
function _cs_otable()
{
	this._self = 'name';
	this._iid = 'table1';
	this._cal = new Array();

	this._itr = new Array();
	this._itd = new Array('№');

	/* Хүснэгтийн шинэ мөр бүрдийн өгөгдлийг агуулах */
	this._ilist = new Array();
	this._idata = new Array();
	
	this._ikey = 1;

	/* Хүснэгтийн шинэ мөр бүрдийн өгөгдлийг түр агуулах */
	this._itmplist = new Array();
	this._itmpdata = new Array();

	/* Хүснэгтийн устгасан мөр бүрдийн өгөгдлийг түр агуулах */
	this._dtmplist = new Array();
	
	/* Хүснэгтэд оруулах оролтын төрөл түр агуулах */
	this._itmpinput = new Array();

	/* Хүснэгтийн өөрчлөгдсөн мөр бүрдийн өгөгдлийг түр агуулах */
	this._etmplist = new Array();
	
	/* Хүснэгтэд оруулах оролтын төрөл түр агуулах */
	this._iselectdata = new Array();

	/* Хүснэгтийн өөрчлөгдсөн мөр бүрдийн өгөгдлийг түр агуулах */
	this._etmplist = new Array();
	this._etmpdata = new Array();

	/* Хүснэгтийн толгойн хэсгийн гарчигийн өгөгдлийг агуулах */
	this._itop = new Array(' ');
	this._ibtm = new Array('0');

	this._tmpdlt = "";
	
	this._iwidth = new Array();
	
	this._idinit = function( id, self )
	{
		this._iid = id;
		this._self = self;
//		alert( "ID:" + this._iid + " SELF: " + this._self );
	}

	this._hdrtable = function()
	{
		var l_width = 0;
		for( var i_l = 0; i_l < this._iwidth.length; i_l++ )
			l_width = l_width + parseInt( this._iwidth[i_l] );
//		alert( "Total :"+l_width );
		document.write( '<table class="ctable" id="' + this._iid + '" width="'+l_width+'" cellspacing="0" border="0"><thead></thead><tbody>' );
		var thead = document.getElementById( this._iid ).getElementsByTagName( "THEAD" )[0];

		if( this._itop.length > 0 )
		{
			this._itr[0] = document.createElement( "TR" );
			this._itr[1] = document.createElement( "TR" );
			var icolspan = 1;
			var i = 0;

			while( i < this._itop.length )
			{
				if( this._ibtm[i] == 0 )
				{
					if( this._itop[i] != this._itop[i - 1] )
						this._itd[i] = document.createElement( '<TH class="cth" rowspan="2">' );
				}
				else
				{
					if( this._itop[i] == this._itop[i + 1] && 
						this._itop[i] == this._itop[i + 2] && 
						this._itop[i] == this._itop[i + 3] )
					{
						icolspan = 4;
						irowspan = 1;						
						i+=3;
					}
					if( this._itop[i] == this._itop[i + 1] && 
						this._itop[i] == this._itop[i + 2] )
					{
						icolspan = 3;
						irowspan = 1;						
						i+=2;
					}
					if( this._itop[i] == this._itop[i + 1] && 
						this._itop[i] != this._itop[i + 2] && 
						this._itop[i] != this._itop[i + 3] )
					{
						icolspan = 2;
						irowspan = 1;						
						i++;
					}

					this._itd[i] = document.createElement( '<TH class="cth" colspan="'+icolspan+'" rowspan="'+irowspan+'">' );
//					this._browse();
				}
				this._itd[i].appendChild( document.createTextNode( this._itop[i] ) );
				this._itr[0].appendChild( this._itd[i] );
				i++;
			}

			for( var i = 0; i < this._itop.length; i++ )
			{
				if( this._ibtm[i] != 0 )
				{
					this._itd[i] = document.createElement( '<TH class="cth" width="'+this._iwidth[i]+'">' );
					this._itd[i].appendChild( document.createTextNode( this._ibtm[i] ) );
					this._itr[1].appendChild( this._itd[i] );
				}
			}
			thead.appendChild( this._itr[0] );
			thead.appendChild( this._itr[1] );
		}
		document.write( '</tbody></table>' );
	}

	this._crtrows = function( fctname )
	{
		var n = 0;
		var tbody = document.getElementById( this._iid ).getElementsByTagName( "TBODY" )[0];
		var lastRow = document.getElementById( this._iid ).rows.length;

		this._itr[lastRow-1] = document.createElement( "TR" );
		for( var i = 0; i < this._itop.length; i++ )
		{
			if( i == 0 )
			{
				this._itd[i] = document.createElement( '<TD class="ctd1">' );
				var none = document.createElement( '<input class="cbutton" type="image" id="cred' + i + '" name="cred' + i + '"  src="/image/grid/bbDel.gif">' );
				this._itd[i].appendChild( none );
			}
			else if( i == 1 )
			{
				this._itd[i] = document.createElement( '<TD class="ctd3">' );
				var id = document.createElement( '<input class="cinput" type="text" id="cred' + i + '" name="cred' + i + '" value="0" readonly>' );
				this._itd[i].appendChild( id );
			}
			else
			{
				this._itd[i] = document.createElement( '<TD class="ctd3">' );
				switch( this._itmpinput[i] )
				{
					case 'calendar':
					{
						this._cal[n] = new cs_calendar( 'cred' + i, this._self+'._cal[' + n +']');
						
						this._itd[i].innerHTML = this._cal[n].calendar_text();
						this._itd[i].innerHTML += this._cal[n].calendar_echo();
//						alert( this._cal.value + ", "+this._self );
						n++;
					}
						break;
					case 'textarea':
						this._itd[i].appendChild( document.createElement( '<textarea id="cred' + i + '" name="cred' + i + '" class="cinput"></textarea>' ) );
						break;
					case 'select':
					{
						var selects = document.createElement( '<select id="cred' + i + '" name="cred' + i + '">' );
						for( var i_sels = 0; i_sels < this._iselectdata.length; i_sels++ )
						{
							var tmpoption = document.createElement( '<option value="' + this._iselectdata[i_sels] + '">' );					
							tmpoption.appendChild( document.createTextNode( this._iselectdata[i_sels] ) );
							selects.appendChild( tmpoption );
						}
//						alert( selects );
						this._itd[i].appendChild( selects );
					}
						break;
					default:
						this._itd[i].appendChild( document.createElement( '<input class="cinput" type="' + this._itmpinput[i] + '" id="cred' + i + '" name="cred' + i + '">' ) );
				}
			}
			this._itr[lastRow-1].appendChild( this._itd[i] );
		}
		tbody.appendChild( this._itr[lastRow-1] );
		
		this._itr[lastRow-1] = document.createElement( "TR" );
		this._itd[0] = document.createElement( '<TD class="ctd1" colspan="'+this._itop.length+'">' );
		var btnsave = document.createElement( '<input type="button" class="cbutton" name="saverow1" value="Оруулах" onclick="' + fctname._self + '._sverows();'+this._self+'newrow.disabled=false;">' );
		this._itd[0].appendChild( btnsave );
		this._itr[lastRow-1].appendChild( this._itd[0] );
		tbody.appendChild( this._itr[lastRow-1] );
	}

	this._dltrows = function()
	{
		alert( "Устгагдлаа" );
	}
	
	this._pos = function( trid, alltd, e )
	{
		var tbody = document.getElementById( this._iid ).getElementsByTagName( "TBODY" )[0];
		var n = 0;

		for( var inp = 0; inp < alltd; inp++ )
		{
			var srcEl1 = document.getElementById( this._self + '_td' + trid + inp );
			srcEl1.style.background="#3E6DB9";
			srcEl1.style.color="#FFFFFF";

			if( inp == 1 )
			{
				var finder = document.createElement( '<input  id="' + this._self + '_edit' + inp + '" name="' + this._self + '_edit' + inp + '" type="hidden" value="' + this._ilist[trid][inp] + '">' );
				tbody.appendChild( finder );
			}
			else if( inp != 0 )
			{
				srcEl1.style.padding='0px';
				switch( this._itmpinput[inp] )
				{
					case 'calendar':
					{
						this._cal[n] = new cs_calendar( this._self + '_edit' + inp, this._self+'._cal[' +n+']');
						
						srcEl1.innerHTML = this._cal[n].calendar_text();
						srcEl1.innerHTML += this._cal[n].calendar_echo();
						document.getElementById( this._self + '_edit' + inp ).value = this._ilist[trid][inp];
//						alert( this._cal.value + ", "+this._self );
						n++;
					}
						break;
					case 'textarea':
						srcEl1.innerHTML = '<textarea id="' + this._self + '_edit' + inp + '" name="' + this._self + '_edit' + inp + '" class="cinput">' + this._ilist[trid][inp] + '</textarea>';
						break;
					case 'select':
					{
						var tmpsels = '';
						for( var i_sel = 0; i_sel < this._iselectdata.length; i_sel++ )
							tmpsels += '<option value="'+this._iselectdata[i_sel]+'">' + this._iselectdata[i_sel] + '</option>';
						srcEl1.innerHTML = '<select id="' + this._self + '_edit' + inp + '" name="' + this._self + '_edit' + inp + '">'+tmpsels+'</select>';
					}
						break;
					default:
						srcEl1.innerHTML = '<input id="' + this._self + '_edit' + inp + '" name="' + this._self + '_edit' + inp + '" type="' + this._itmpinput[inp] + '" class="cinput" value="' + this._ilist[trid][inp] + '">';
				}
			}

			if( inp == 0 )
			{
				var passtr = "'" + this._ilist[trid][inp] + "'";
				srcEl1.innerHTML = '<input type="image" class="cbutton" name="editdatas" src="/image/grid/bbPost.gif" onclick="' + this._self + '._edtrows( ' + passtr + ' )">';
			}
		}
	}
	
	this._edtrows = function( vstr )
	{
		var edtstr = '';

		for( var finders = 0; finders < this._ilist.length; finders++ )
		{
			if( vstr == this._ilist[finders][0] )
			{
				this._ilist[finders][0] = vstr;
				this._ilist[finders][1] = vstr;
				edtstr = vstr+",";
				for( var fnd = 2; fnd < this._ilist[finders].length; fnd++ )
				{
					this._ilist[finders][fnd] = document.getElementById( ( this._self + '_edit' + fnd ) ).value;

					edtstr += this._ilist[finders][fnd];
					if( fnd != ( this._ilist[finders].length - 1 ) )
						edtstr += ",";
				}
				this._etmplist[this._etmplist.length] = edtstr;
				break;
			}
		}
		var currRow = document.getElementById( this._iid ).getElementsByTagName( "TBODY" )[0];
		var lastRow = currRow.rows.length; 

		for( var num = 0; num < lastRow; num++ )
		{
			currRow.deleteRow();
		}

		this._viwrows();
		this._actrows( this._self );
//		this._browsed();
		this._initedt();
	}
	
	this._initedt = function()
	{
		var tbody = document.getElementById( this._iid ).getElementsByTagName( "TBODY" )[0];

		for( var edt = 0; edt < this._etmplist.length; edt++ )
		{
			var edthidden = document.createElement( '<input type="hidden" name="' + this._self + '_chd' + edt + '" value="' + this._etmplist[edt] + '">' );
			tbody.appendChild( edthidden );
		}
	}

//	this._viwrows = function( hyper )
	this._viwrows = function()
	{
		var tbody = document.getElementById( this._iid ).getElementsByTagName( "TBODY" )[0];

		for( var l = 0; l < this._ilist.length; l++ )
		{
			bg = ( l % 2 == 0 )?'#E7F2FE' : '#FFFFFF';

			this._itr[l] = document.createElement( '<TR id="'+this._self+'_tr'+l+'" bgcolor="'+bg+'" ondblClick="'+this._self+'._pos( '+l+', '+this._ilist[l].length+', event );">' );
			for( var i = 0; i < this._ilist[l].length; i++ )
			{
				if( i == 0 )
				{
					this._itd[i] = document.createElement( '<TD id="'+this._self+'_td'+l+i+'" class="ctd1">' );
					var passtr = "'"+this._ilist[l][1]+"'";
					var dlt = document.createElement( '<input type="image" class="cbutton" name="deletedatas" src="/image/grid/bbDel.gif" onclick="' + this._self + '._rmvrows('+ l +', '+passtr+')">' );
					this._itd[i].appendChild( dlt );
				}
/*
				else if( i == hyper )
				{
					this._itd[i] = document.createElement( '<TD id="'+this._self+'_td'+l+i+'" class="ctd2" align="center">' );
					var hyper = document.createElement( '<A href="?'+this._ilist[l][i]+'">' );
					var img = document.createElement( '<IMG src="/image/grid/bbGotopage.gif" border="0">' );
					hyper.appendChild( img );
					this._itd[i].appendChild( hyper );
				}
*/
				else
				{
					if( this._ikey == 1 )
					{
						this._itd[i] = document.createElement( '<TD id="'+this._self+'_td'+l+i+'" class="ctd2">' );
						this._itd[i].appendChild( document.createTextNode( this._ilist[l][i] ) );
					}
					else
					{
						if( i != 1 )
						{
							this._itd[i] = document.createElement( '<TD id="'+this._self+'_td'+l+i+'" class="ctd2">' );
							this._itd[i].appendChild( document.createTextNode( this._ilist[l][i] ) );
						}
					}
				}
				this._itr[l].appendChild( this._itd[i] );
			}
			tbody.appendChild( this._itr[l] );
		}
	}

	this._actrows = function( fctname )
	{
		var tbody = document.getElementById( this._iid ).getElementsByTagName( "TBODY" )[0];
		var btnnew = document.createElement( '<input class="cbutton" id="'+this._self+'newrow" type="button" name="'+this._self+'re' + 1 + '" value="Нэмэх" onclick="'+fctname+'._crtrows( '+fctname+' );'+this._self+'newrow.disabled=true;">' );
		var btnreset = document.createElement( '<input class="cbutton" id="'+this._self+'reset" type="button" name="'+this._self+'reset' + 1 + '" value="Болих" onclick="'+fctname+'._rebuildrows();">' );
		var lastRow = document.getElementById( this._iid ).rows.length;

		this._itr[lastRow] = document.createElement( "TR" );
		var avrage = 0;
		avrage = ( this._itd.length % 2 == 0 ) ? this._itd.length / 2 : ( this._itd.length / 2 ) + 0.5;
//		alert( "Дундаж :"+avrage );
		this._itd[0] = document.createElement( '<TD class="ctd1" colspan="' + avrage + '">' );
		this._itd[1] = document.createElement( '<TD class="ctd1" colspan="' +( this._itd.length - avrage )+ '">' );
		this._itd[0].appendChild( btnreset );
		this._itd[1].appendChild( btnnew );
		this._itr[lastRow].appendChild( this._itd[0] );
		this._itr[lastRow].appendChild( this._itd[1] );

		tbody.appendChild( this._itr[lastRow] );
	}
	
	this._sverows = function()
	{
		var vtmpstr = '', check = 0;
		for( var i = 1; i < this._itop.length; i++ )
		{
			if( document.getElementById( ( "cred" + i ) ).value != "" )
			{
				vtmpstr += "'" + document.getElementById( ( "cred" + i ) ).value + "'";
				if( i != ( this._itop.length - 1 ) )
					vtmpstr += ",";
				check++;
			}
			else
				alert( i + "-p баганд өгөдөл оруулна уу !" );
		}
		this._itmpdata = vtmpstr.split( "," );
//alert( "TOTAL :" + check );
		if( check == ( this._itop.length - 1 ) )
		{
			this._itmplist[this._itmplist.length] = this._itmpdata;
			var tbody = document.getElementById( this._iid ).getElementsByTagName( "TBODY" )[0];
			var lastRow = tbody.rows.length;
		
			this._itr[lastRow] = document.createElement( "TR" );
			for( var j = 0; j < this._itop.length; j++ )
			{
//				alert( "cred" );
//				alert( document.getElementById( ( "cred" + i ) ).value );
				var vstr = document.getElementById( "cred" + j ).value;
//				alert(document.getElementById( "cred"+j ).value);
				if( j == 0 )
				{
					this._itd[j] = document.createElement( '<TD class="ctd1">' );
					var dlt = document.createElement( '<input type="image" class="cbutton" src="/image/grid/bbDel.gif">' );
					this._itd[j].appendChild( dlt );

					for( var row = 0; row < this._itmplist.length; row++ )
					{
						var vtmphidden = '';
						for( var cell = 0; cell < this._itmplist[row].length; cell++ )
						{
							vtmphidden += this._itmplist[row][cell];
							if( cell != ( this._itmplist[row].length - 1 ) )
								vtmphidden += ",";
						}
						var hidden = document.createElement( '<input type="hidden" name="' + this._self + row + '" value="' + vtmphidden + '">' );
						this._itd[j].appendChild( hidden );
					}
				}
				else
				{
					this._itd[j] = document.createElement( '<TD class="ctd2">' );
					var strobj = document.createTextNode( vstr );
					this._itd[j].appendChild( strobj );
				}
				this._itr[lastRow].appendChild( this._itd[j] );
			}
			tbody.appendChild( this._itr[lastRow] );
			this._rmvrow();
		}
	}

	this._rmvrow = function()
	{
		var currRow = document.getElementById( this._iid ).getElementsByTagName( "TBODY" )[0];
		var lastRow = currRow.rows.length; 

			currRow.deleteRow( lastRow - 2 );
			currRow.deleteRow( lastRow - 3 );
	}
	
	this._inithidden = function()
	{
		var currRow = document.getElementById( this._iid ).getElementsByTagName( "TBODY" )[0];
		for( var i = 0; i < this._dtmplist.length; i++ )
		{
			var hiddend = document.createElement( '<input type="hidden" name="' + this._self + "d" + i + '" value="' + this._dtmplist[i] + '">' );
		}
		currRow.appendChild( hiddend );
	}

	this._rebuildrows = function()
	{
		var currRow = document.getElementById( this._iid ).getElementsByTagName( "TBODY" )[0];
		var lastRow = currRow.rows.length;

		for( var num = 0; num < lastRow; num++ )
		{
			currRow.deleteRow();
		}

		this._viwrows();
		this._actrows( this._self );
	}

	this._rmvrows = function( vnumber, vstr )
	{
		var currRow = document.getElementById( this._iid ).getElementsByTagName( "TBODY" )[0];
		var lastRow = currRow.rows.length;

		for( var num = 0; num < lastRow; num++ )
		{
			currRow.deleteRow();
		}

		for( var row = 0; row < this._ilist.length; row++ )
		{
			if( vstr == this._ilist[row][1] )
			{
				this._ilist.splice( row, 1 );
				this._dtmplist[this._dtmplist.length] = vstr;
			}
		}

		this._viwrows();
		this._actrows( this._self );
			
//		this._dbrowse();
		this._inithidden();
	}

	/* Хүснэгтийн шинэ мөр бүрдийн өгөгдлийг агуулах */
	this._initd = function( istr )
	{
		this._idata = istr.split( "," );
		this._ilist[this._ilist.length] = this._idata;
		this._idata[0] = this._idata[1];
	}
	
	this._browsed = function()
	{
		var str = '';
		for( var l = 0; l < this._ilist.length; l++ )
		{
			for( var i = 0; i < this._ilist[l].length; i++ )
				str += this._ilist[l][i]+"--"; 
			str += "\n";
		}
		alert( str );
	}
	
	/* Хүснэгтийн толгойн хэсгийн гарчигийн өгөгдлийг агуулах */
	this._init = function( itop, ibtm )
	{
		this._itop[this._itop.length] = itop;
		this._ibtm[this._ibtm.length] = ibtm;
	}
	
	this._keyfield = function( define )
	{
		this._ikey = define;
	}
	
	this._initinput = function( vstrtype )
	{
		this._itmpinput = vstrtype.split( ',' );
//		alert( "INPUT TYPES:"+this._itmpinput );
	}
	
	this._initselect = function( vstrtype )
	{
		this._iselectdata = vstrtype.split( ',' );
//		alert( "INPUT TYPES:"+this._itmpinput );
	}	

	this._browse = function()
	{
		var str = 'НИЙТ ӨГӨГДӨЛ\n----------------------------------------------\n';
		for( var i = 0; i < this._itop.length; i++ )
			 str += "Дээд тал :"+this._itop[i]+", Доод тал :"+this._ibtm[i]+"\n";
		alert( str );
	}
	
	this._dbrowse = function()
	{
		var str = 'НИЙТ УСТГАХ ӨГӨГДӨЛ\n----------------------------------------------\n';
		for( var i = 0; i < this._dtmplist.length; i++ )
			 str += i + "-р мөр :"+this._dtmplist[i]+"\n";
		alert( str );
	}
	
	this._fieldwidth = function( vstr )
	{	
//		this._iwidth[0] = '';
		this._iwidth = vstr.split( ',' );
//		alert( this._iwidth.length );
	}
}

