/**
 * In The Name of Allah, The Most Gracious, The Most Merciful
 * This file includes functions for form processing 
 *
 * @version 6.2.3.x
 * @copyright (c) 2008/1387, vwideas.com
 */
var FileEquivalentsForAnObject = new Array(),
	DragableLayers = new Array();

//------------------------------------------
function FormLoading(v)
{
	var SSD, Table, Save, f//, Scripts,
//	IsForm;

	if(!v){
		SetScreen();
	}

	if (typeof (SSD = GBCG('SetSelectedData', 'function')) == 'function'){
		SSD();
	}
	Table = $("tblTable");
	if (Table && Table.dir)
	{
		if (Table.dir == "rtl")
		{
			SetDirection("rtl");
			if (document.title == "")
			{
				document.title = "سيستم مديريت محتواي پروانه";
			}
		}
		else if (Table.dir == "ltr")
		{
			SetDirection("ltr");
			if (document.title == "")
			{
				document.title = "Butterfly CMS";
			}
		}
	}
	if (Save = $("btnSave"))
	{
		if (Save.onclick == null)
		{
			Save.onclick = FormSubmit;
		}
	}

	if (typeof (f = GBCG('FormLoading_', 'function')) == 'function' && f !== $empty) {
		f();
	}
}
//------------------------------------------
function FormSubmit(FormID, Options)
{
	var Form, $Form, A;
	Options = Options || {};
	if (document.GetInfo){
		Form = document.GetInfo();
	}else{
		Form = (A = GBCG('GetInfo', 'function'))();
	}

	if (typeof Form == 'string' && Form == 'unsavedtableexist')
	{
		alert(W_WARNING_SAVE_ROW);
		return false;
	}
	if (!Form)
	{
		if (FormID)
		{
			Form = FormID;
		}
		else
		{
			Form = document.forms[0];
		}
	}

	if (FormValidate(Form))
	{
		$Form = $(Options.form = Form.id);
		if (Options.Group){
			$Form.action = PrepareUrl({'Address': $Form.action, 'Options': {'Parameters': [{'Parameter': 'Group','Value': Options.Group}]}});
		}
		FormSubmit2(Options);
	}
}

function FormSubmit2(fncpOptions) {
	fncpOptions = fncpOptions || {};
	if (!fncpOptions.form)
		return false;

	var fnclvForm = $(fncpOptions.form);
	if(fE = $('_systemRequestionType')) {
		switch(fE.value) {
			case 'AJAX':
				var fE = fnclvForm.getElementById('_systemResponseType');
				if(fE) {
					FreezeFrame(GetWaitingFor());
//					FreezeFrame();
					switch(fncpOptions.responseType || fE.value) {
						case 'JSON':
							var request = new Request.JSON({url: fnclvForm.action, method: fnclvForm.method, 'onSuccess': AfterSave}).send(fnclvForm);
							break;
						case 'HTML':
							var request = new Request.HTML({url: fnclvForm.action, method: fnclvForm.method, 'onComplete': PageLoader, evalScripts: false}).send(fnclvForm);
							break;
						default:
							alert('Your Request For Undefined Response Handler Can\'t be done!');
					}
				}
				break;
			case 'NORMAL':
				fnclvForm.submit();
				break;
		}
	} else {
		fnclvForm.submit();
	}
}

function AfterSave(JSONObject, JSONText)
{
	alert(JSONObject.FinalMessage);
	if (JSONObject.Status == 'true') {
		//$(window.document.getElementsByTagName('body')[0]).get('load', {url: JSONObject.ReferTo, method: 'get', evalScripts: true}).send();
		var request = new Request.HTML({url: JSONObject.ReferTo, method: 'get', 'onSuccess':PageLoader, evalScripts: false}).send();
		return;
	}
	DefrostFrame();
}

function AddToListFromList(ListID1, ListID2)
{
	ListID1 = $(ListID1);
	ListID2 = $(ListID2);

	for (var i = 0; i < ListID1.length; i++)
	{
		if (ListID1[i].selected)
		{
			View = ListID1[i].text;
			Value = ListID1[i].value;
			//------------------------------------------
			if (!IsInList(Value, ListID2))
			{
				n = ListID2.options.length;
				ListID2.options[n] = new Option(View, Value);
				ListID2.options[n].title = View;
			}
			else
			{
				alert(View + ' ' + W_WARNING_SELECTED);
			}
			//------------------------------------------
		}
	}
}
//------------------------------------------
function addToList(View, Value, ListID)
{
	ListID = $(ListID);

	if (!IsInList(Value, ListID)) {
		n = ListID.options.length;
		ListID.options[n] = new Option(View, Value);
		ListID.options[n].title = View;
	} else {
		alert(View + ' ' + W_WARNING_SELECTED);
	}
}
//------------------------------------------
function ReturnToList(ListID2, ListID1)
{
	ListID1 = $(ListID1);
	ListID2 = $(ListID2);

	for (var i = 0; i < ListID2.length; i++) {
		if (ListID2[i].selected) {
			for (var j = 0; j < ListID1.length; j++) {
				if (ListID1[j].value == ListID2[i].value) {
					xColor(ListID1[j], '#000000');
				}
			}
		}
	}
	//----------------------
	DeleteFromList(ListID2);
}
//------------------------------------------
function DeleteFromList(ListID)
{
	ListID = $(ListID);

	for (var i = 0; i < ListID.length; )
	{
		if (ListID[i].selected) {
			ListID.removeChild(ListID[i]);
		} else {
			i++;	
		}
	}
}
//------------------------------------------
function RemoveFromList(ListID)
{
	ListID = $(ListID);

	for (var i = 0; i < ListID.length; i++) {
		if (ListID[i].selected) {
			xColor(ListID[i], '#BBBBBB');
			ListID[i].selected = false;
		}
	}
}
//------------------------------------------
function deactiveAnElementFromList(Value, ListID)
{
	ListID = $(ListID);
	var Index = 0;
	if (Index = IsInList(Value, ListID)) {
//		for (var i = 0; i < ListID.length; i++) {
//			if (ListID[i].selected) {
				xColor(ListID[Index - 1], '#BBBBBB');
				ListID[Index - 1].selected = false;
//			}
//		}
	}
	else
	{
	}
}
//------------------------------------------
function SelectAllList(ListID)
{
	ListID = $(ListID);

	for (var i = 0; i < ListID.length; i++)
	{
		ListID[i].selected = true;
	}
}
//------------------------------------------
function DeselectAllList(ListID)
{
	ListID = $(ListID);

	for (var i = 0; i < ListID.length; i++)
	{
		ListID[i].selected = false;
	}
}
//------------------------------------------
function MoveToList(ListID1, ListID2)
{
	AddToListFromList(ListID1, ListID2);
	DeleteFromList(ListID1);
}
//------------------------------------------
function CopyToList(ListID1, ListID2)
{
	AddToListFromList(ListID1, ListID2);
	RemoveFromList(ListID1);
}
//------------------------------------------
function IsInList(Value, ListID)
{
	ListID = $(ListID);

	for(var i = 0; i < ListID.length; i++)
	{
		if (Value == ListID[i].value)
		{
			return i + 1;
		}
	}
	return false;
}
//------------------------------------------
function IsInTable(Value, TableID)
{
	TableID = $(TableID);

	for (var i = 0; i < TableID.rows.length; i++)
	{
		if (Value == TableID.rows[i].id)
		{
			return true;
		}
	}
	return false;
}
//------------------------------------------
function EmptyTable(TableID, TableType)
{
	TableID = $(TableID);
	switch(trim(TableType).toLowerCase())
	{
		case 'dynamic':
			for (var i = TableID.rows.length - 1; i > 0; i--)
			{
				TableID.deleteRow(i);
			}
			return true;
			break;
		case 'static':
			alert('This function is Not Available!');
			return true;
			break;
	}
	return false;
}
//------------------------------------------
function AddToTable(ListID, TableID)
{
	ListID = $(ListID);
	TableID = $(TableID);

	for (var i = 0; i < ListID.length; i++)
	{
		if (ListID[i].selected)
		{
			Value = ListID[i].value;
			View = ListID[i].text;
			//------------------------------------------
			if (!IsInTable(Value, TableID))
			{
				TR = TableID.insertRow(-1);
				TR.className = "TableListClass";
				TR.height = "20";
				TR.id = Value;

				var TD = xCreateElement('td');
				TD.className = "TableListClass";
					/**/
					var tmpElement = xCreateElement("input");
					tmpElement.type = "checkbox";
					/**
					var tmpElement = xCreateElement("img");
					tmpElement.src = "../admin/images/icon-delete.gif";
					tmpElement.title = W_DELETE;
					tmpElement.onclick = DeleteTableRow;
					tmpElement.style.cursor = "hand";
					/**/
				xAppendChild(TD, tmpElement);
				xAppendChild(TR, TD);

				var TD = xCreateElement('td');
				TD.className = "TableListClass";
				xInnerHtml(TD, (TableID.rows.length - 1) + '');
				xAppendChild(TR, TD);
				
				if (TableID.rows[0].cells.length == 4)
				{
					var TD = xCreateElement('td');
					TD.className = "TableListClass";
					xInnerHtml(TD, getParent("cmb" + ListID.id.substr(3), Value));
					xAppendChild(TR, TD);
				}
				xAppendChild(TR, TD);
			
				var TD = xCreateElement('td');
				TD.className = "TableListClass";
				xInnerHtml(TD, View);
				xAppendChild(TR, TD);
			}
			else
			{
				alert(View + W_WARNING_SELECTED);
			}
			//------------------------------------------
			//ListID[i].selected = false;
		}
	}
	//-----------------------
	RemoveFromList(ListID);
}
//------------------------------------------
function DeleteFromTable(TableID)
{
	TableID = $(TableID);

	for (var i = 0; i < TableID.rows.length; )
	{
		if (xFirstChild(TableID.rows[i].cells[0]).checked)
		{
			TableID.deleteRow(i);
		}
		else
		{
			i++;	
		}
	}
}
//------------------------------------------
function SelectAllTable(TableID)
{
	TableID = $(TableID);

	for (var i = 0; i < TableID.rows.length; i++)
	{
		xFirstChild(TableID.rows[i].cells[0]).checked = true;
	}
}
//------------------------------------------
function DeselectAllTable(TableID)
{
	TableID = $(TableID);

	for (var i = 0; i < TableID.rows.length; i++)
	{
		xFirstChild(TableID.rows[i].cells[0]).checked = false;
	}
	return true;
}
//------------------------------------------
function Select_Deselect(TableID, Evt)
{
	Evt = new xEvent(Evt);
	var tmpElement = Evt.target;

	TableID = $(TableID);

	if (tmpElement.checked)
	{
		SelectAllTable(TableID);
	}
	else
	{
		DeselectAllTable(TableID);
	}
	return true;
}
//------------------------------------------
function DataSetting(ComboID, ListID)
{
	var DataArray,
	View, Value;

	ComboID = $(ComboID);
	ListID = $(ListID);

	for (var i = 0; i < ListID.length; )
	{
		ListID.removeChild(ListID[i]);
	}
	//------------------------------------------
	DataArray = GBCG("DataArray_" + ComboID.id, 'var');
	var n = 0;
	for (var i = 0; i < DataArray.length; i++)
	{
		if (DataArray[i].Parent == ComboID.value)
		{
			View = DataArray[i].View;
			Value = DataArray[i].Value;
			//------------------------------------------
			ListID.options[n] = new Option(View, Value);
			ListID.options[n].title = View;
			n++;
			//------------------------------------------
		}
	}
	return true;
}
//------------------------------------------
function DataSetting_DL_MS_MP(ComboID, ListID)
{
	ComboID = $(ComboID);
	ListID = $(ListID);

	var DataArray = GBCG("DataArray_" + ComboID.id, 'var');
	DataSetting(ComboID, ListID);

//	ListID2 = $(ListID2);
//	for (var i = 0; i < DataArray.length; i++) {
//		deactiveAnElementFromList(DataArray[i].Value, ListID);
//	}

	return true;
}
//------------------------------------------
function DataSetting3(ComboID, ListID1, ListID2)
{
	ComboID = $(ComboID);
	ListID1 = $(ListID1);
	ListID2 = $(ListID2);

	DataSetting(ComboID, ListID1);
	// Delete All From List :
	SelectAllList(ListID2);
	DeleteFromList(ListID2);
	return true;
}
//------------------------------------------
function IsSavedTable(Table)
{
	if (typeof Table == 'string' && Table.substr(0,3) != 'tbl')
		Table = 'tbl' + Table;

	Table = $(Table);

	for (var i = 0; i < Table.rows.length; i++)
	{
		//if (TableID.rows[i].id != "SAVED")
		if (Table.rows[i].mode == "NEW" || Table.rows[i].mode == "EDIT")
		{
			return false;
		}
	}
	return true;
}
//------------------------------------------
function AddTableRow(TableID)
{
	var Table, TRow, TR, TD, tr, Fields, TableObject,
	Data_, Error = false, NonEditableContent;

	TableID = $(TableID);

	TableObject = GetTableSpec(TableID);

	if (IsSavedTable(TableID))
	{
		//------------------------------------------
		Fields = GBCG('Fields_' + TableID.id, 'var');

		TR = TableID.insertRow(TableObject.StartRowAt);
//		TR.id = "NEW";
		TR.mode = "NEW";
		TR.className = "TableClass";


		if (TableObject.RowsCheckable)
		{
			TD = xCreateElement("td");
			TD.className = "TableClass";
			var tmpElement = xCreateElement("img");
				tmpElement.src = "../admin/images/icon-delete.gif";
				tmpElement.title = W_DELETE;
				tmpElement.onclick = DeleteTableRow;
				//xAddEventListener(tmpElement,"click",DeleteTableRow)
				tmpElement.style.cursor = "pointer";
			xAppendChild(TD, tmpElement);
			xAppendChild(TR, TD);
		}

		if (TableObject.Arrangable)
		{
			TD = xCreateElement("td");
			TD.className = "TableClass";
				var fE = xCreateElement("img");
				fE.src = "../admin/images/up.gif";
				fE.title = W_UP;
				fE.direction = -1;
				fE.onclick = MoveTableRow;
				fE.style.cursor = "pointer";
				fE.id = "1";
			xAppendChild(TD, fE);
			fE.insertAdjacentHTML("afterEnd","<br />");
			//fE.insertAdjacentText("afterEnd", "\n");
				var fE = xCreateElement("img");
				fE.src = "../admin/images/dn.gif";
				fE.title = W_DOWN;
				fE.direction = +1;
				fE.onclick = MoveTableRow;
				fE.style.cursor = "pointer";
			xAppendChild(TD, fE);
			xAppendChild(TR, TD);
		}

		if (TableObject.RowsEditable)
		{
			TD = xCreateElement("td");
			TD.className = "TableClass";
				var fE = xCreateElement("input");
				fE.type = "button";
				fE.value = W_SAVE;
				fE.className = "ButtonClass";
				fE.onclick = SaveTableRow;
				//xRemoveEventListener(fE,"click",EditTableRow);
				//xAddEventListener(fE,"click",SaveTableRow)
			xAppendChild(TD, fE);
			xAppendChild(TR, TD);
		}
		//------------------------------------------
		for (var i = 0; i < Fields.length; i++)
		{
			TD = xCreateElement("td");
			TD.className = "TableClass";

			if (!Fields[i] || !Fields[i].Type || Fields[i].Type != 'NonEditableContent')
			{
				var Data = Fields[i].Data.concat(), ii;
				if (Data)
				{
					if (Fields[i].Type == 'USE_ONCE')
					{
						for(tr = 0; tr<TableID.rows.length;tr++)
						{
							TRow = TableID.rows[tr];
							
							if (TRow.rowIndex == TR.rowIndex)
							{
								continue;
							}
							if ((!TRow.EditableRow && i < 0) || TRow.EditableRow == 'true')
							{
								for(ii = 0; ii < Data.length; ii++)
								{
									if (TRow.cells[i + TableObject.StartContentDataAt].id == Data[ii].Value)
									{
										delete Data[ii];
									}
								}
							}
						}
					}
					if (typeof Data == 'object')
					{
						Data_ = new Array();
						for(ii = 0; ii < Data.length; ii++)
						{
							if (Data[ii])
							{
								Data_[Data_.length] = Data[ii];
							}
						}
						Data = Data_;
					}
				}
				if (Fields[i].Type == 'NonEditableContent')
				{
					NonEditableContent = true;
				}
				else
				{
					NonEditableContent = false;
				}
	
				var fE = '';

				if(Fields[i].Content)
				{
					TD.innerHTML = TD.Content = Fields[i].Content;
					TD.id = '';
				}
				else if (Data)
				{
					fE = xCreateElement("select");
					fE.className = "TableClass";
					for (var j = 0; j < Data.length; j++)
					{
						View = Data[j].View;
						Value = Data[j].Value;
						fE.options[j] = new Option(View, Value);
						fE.options[j].title = View;
						fE.readOnly = NonEditableContent;
					}
					//if (j == 1 && View == "")
					//if (fE.length == 1 && fE[0].text == "")
					if (Data.length == 1 && Data[0].View == "")
					{
						TD.style.width = "0%";
						fE.className = "";
						//fE.style.width = "0px";
						xWidth(fE, 0);
						xVisibility(fE, false);
					}
					else if (Data.length == 0)
					{
						Error = true;
					}
				}
				else if (Fields[i].Type == 'DATE')
				{
					TD.dir = 'ltr';
					fE = xCreateElement("input");
					fE.type = "text";
					fE.onfocus = DoOnDateEnter
					fE.dir = 'ltr';
					fE.className = "TableClass";
					fE.readOnly = NonEditableContent;
				}
				else
				{
					fE = xCreateElement("input");
					fE.type = "text";
					fE.className = "TableClass";
					fE.readOnly = NonEditableContent;
				}
				if (fE){
					xAppendChild(TD, fE);
				}
			}
			xAppendChild(TR, TD);
		}
		//------------------------------------------
		if (Error)
		{
			TableID.deleteRow(TR.rowIndex);
			alert("اطلاعات كافي براي نمايش سطر جديد وجود ندارد !");
		}
	}
	else
	{
		alert(W_WARNING_SAVE_ROW);
	}
}

function DoOnDateChange(Evt)
{

	var Evt = new xEvent(Evt);
	var CE = Evt.target;
	var currentText = CE.value;
	var newText = '';
	var DateDefaultValue = '****/**/**';
	//if (trim(C.value) == '')
	//{
	//	CE.value = DateDefaultValue;
	//}
	var code = Evt.keyCode;
	currentText = currentText.clear();
//	var DateForm = /^([0-9*]{4}\/[0-9*]{2}\/[0-9*]{2})|([0-9*]{4}\/[\x60-\x69*]{2}\/[\x60-\x69*]{2})$/ ;
	var DateForm = /^[1-9*]{1}[0-9*]{3}\/(([0]{1}[1-9*]{1})|([1*]{1}[0-2*]{1}))\/(([0-2*]{1}[0-9*]{1})|([3]{1}[0-1*]{1}))$/ ;
//	Evt.preventDefault();
	Evt.returnValue = false;
	if (DateForm.test(currentText))
	{
		if (code == 8)
		{
			// Backspace
			AsterikPosition = -1;
			if (AsterikPosition = currentText.indexOf('*'))
			{
				if (AsterikPosition== -1)
				{
					AsterikPosition = currentText.length;
				}
				AsterikPosition--;
				if (AsterikPosition == 4 || AsterikPosition == 7)
				{
					AsterikPosition--;
				}
				newText = currentText.replaceCharAt(AsterikPosition , '*')
			}

		}
		else if (code == 9)
		{
			return true;
		}
		else
		{
			if (code < 106 && code > 95)
			{
				code -= 96;
			}
			else if (code < 58 && code > 47)
			{
				code -= 48;
			}
			else
			{
				return false;
			}
			if (!(code > 9 || code < 0))
			{
				// For Checking The Validation of Characters is Not Out Numeric Range!
				newText = currentText.replace(/\*/ , String.fromCharCode(code + 48))
			}
			else
			{
				
			}
		}
		if (!DateForm.test(newText))
		{
			newText = currentText;
		}
		CE.value = newText;
		return false;
	}
	else
	{
		if (confirm(W_DATE_FORMAT_IS_INCORRECT + ', ' + W_DO_YOU_WANT_CORRECT_THAT))
		{
			CE.value = DateDefaultValue;
		}
	}
	return false;
}

function DoOnDateEnter(Evt)
{
	var Evt = new xEvent(Evt);
	var CE = Evt.target;
	
	xRemoveEventListener(CE, 'keydown', DoOnDateChange);
	xAddEventListener(CE, 'keydown', DoOnDateChange);

	xRemoveEventListener(CE, 'blur', DoOnDateExit); 
	xAddEventListener(CE, 'blur', DoOnDateExit); 
	
	var DateDefaultValue = '****/**/**';

	var code = Event.keyCode;
	CE.value = CE.value.clear();
//	var DateForm = /^([0-9*]{4}\/[0-9*]{2}\/[0-9*]{2})|([0-9*]{4}\/[\x60-\x69*]{2}\/[\x60-\x69*]{2})$/ ;
	var DateForm = /^[1-9]{1}[0-9]{3}\/(([0]{1}[1-9]{1})|([1]{1}[0-2]{1}))\/(([0-2]{1}[0-9]{1})|([3]{1}[0-1]{1}))$/ ;
	if (!DateForm.test(CE.value))
	{
		CE.value = DateDefaultValue;
	}

	return true;
}

function DoOnDateExit(Evt)
{
	var Evt = new xEvent(Evt);
	var CE = Evt.target;
	//if (trim(C.value) == '')
	//{
	//	CE.value = DateDefaultValue;
	//}
	var code = Evt.keyCode;
	CE.value = CE.value.clear();

//	var DateForm = /^([0-9*]{4}\/[0-9*]{2}\/[0-9*]{2})|([0-9*]{4}\/[\x60-\x69*]{2}\/[\x60-\x69*]{2})$/ ;
	var DateForm = /^[1-9]{1}[0-9]{3}\/(([0]{1}[1-9]{1})|([1]{1}[0-2]{1}))\/(([0-2]{1}[0-9]{1})|([3]{1}[0-1]{1}))$/ ;
	if (!DateForm.test(CE.value))
	{
		CE.value = '';
	}

	return true;
}

//------------------------------------------
function SaveTableRow(Evt, Row)  //cross - browser
{
	var Fields, Table, TBody, TR, TD, Cell, TableObject,
	c, ValidationStatus,
	IsEmpty = false, Warning = "", NotValid = "", NotValidWithAlert = "", NotValidForForce = "", NotValidForForceWithAlert = "";

	if (typeof Evt == 'undefined' && Evt == null && typeof Row == 'object')
	{
		TR = Row;
	}
	else
	{
		var Evt = new xEvent(Evt);
		var fE = Evt.target;

		TD = xParentNode(fE, 1);
		TR = xParentNode(TD, 1);
	}

	TBody = xParentNode(TR, 1);

	if(TBody.tagName.toLowerCase() == "table")
	{
		Table = TBody;
	}
	else
	{
		Table = xParentNode(TBody, 1);
	}
	TableObject = GetTableSpec(Table);
	
	c = TableObject.StartContentDataAt;

	Fields = GBCG("Fields_" + Table.id, 'var');

	//------------------------------------------
	for (var i = 0, CellFirstChild, CellInnerHtml, CFCT, si; i < TR.cells.length; i++)
	{
		Cell = TR.cells[i];

		if ((!Cell.NotEditable || trim(Cell.NotEditable.toLowerCase()) != 'noteditable') && (!Fields[i - c] || !Fields[i - c].Type || Fields[i - c].Type != 'NonEditableContent'))
		{
			CellFirstChild = xFirstChild(Cell);
			if (CellFirstChild)
			{
				CFCT = CellFirstChild.tagName;
				ActAs = '';
				if ($defined(Fields[i - c]))
				{
					if ($defined(Fields[i - c].Interface))
					{
						ActAs = Fields[i - c].Interface;
					}
					else
					{
						if (CellFirstChild.tagName == "SELECT")
						{
							ActAs = 'ComboBox';
						}
						else if (CellFirstChild.tagName == "INPUT")
						{
							ActAs = 'TextEditor';
						}
					}
					if (Fields[i - c].Content)
					{
						ActAs = 'Custom';
						//Cell.innerHTML = Cell.View || '';
					}
				}
				else
				{
					if (xFirstChild(Cell).type == "button")
					{
						ActAs = 'SaveButton';
					}
					else if (CellFirstChild.type != "checkbox" && i == 0)
					{
						ActAs = 'DeleteImg';
					}
				}

				switch(ActAs)
				{
					case 'Custom':
						Cell.innerHTML = Cell.View || '';
						break;
					case 'ComboBox':
						if (CFCT == "SELECT" && (si = CellFirstChild.selectedIndex) > -1)
						{
							Cell.id = CellFirstChild.options[si].value;
							xInnerHtml(Cell, CellFirstChild.options[si].text);
						}
						break;
					case 'TextEditor':
					case 'DateEditor':
						if (CFCT == "INPUT")
						{
							CellInnerHtml = xInnerHtml(Cell);
							xInnerHtml(Cell, CellInnerHtml = trim(CellFirstChild.value));

							if ((ValidationStatus = Validate(CellInnerHtml, Fields[i - c].Type, Fields[i - c].Force)) > 0)
							{
							}
							else
							{
								if (ValidationStatus === -2)
								{
									if (Fields[i - c].ForceAlert && Fields[i - c].ForceAlert != '')
									{
										NotValidForForceWithAlert += Fields[i - c].ForceAlert + '\n';
									}
									else
									{
										NotValidForForce += (i - c + 1) + " و ";
									}
								}
								else if (ValidationStatus === -1)
								{
									if (Fields[i - c].ValidationAlert && Fields[i - c].ValidationAlert != '')
									{
										NotValidWithAlert += Fields[i - c].ValidationAlert + '\n';
									}
									else
									{
										NotValid += (i - c + 1) + " و ";
									}
								}
							}
						}
						break;
					case 'SaveButton':
						CellFirstChild.value = W_EDIT;
						CellFirstChild.onclick = EditTableRow;
						break;
					case 'DeleteImg':
						Cell.removeChild(CellFirstChild);
						var fE = xCreateElement("input");
						fE.type = "checkbox";
						xAppendChild(Cell, fE);
						break;
				}
			}
		}
	}
	//------------------------------------------
	if (TR.mode == "NEW" || TR.mode == "EDIT")
	{
		TR.mode = "SAVED";
	}
	TR.className = "TableClass";
	//------------------------------------------
	if (IsEmpty)
	{
		alert(W_WARNING_NO_DATA);
		var TRF = xFirstChild(TR.cells[0]);
		TRF.checked = true;
		DeleteFromTable(Table);
	}
	if (NotValidForForce != "" || NotValidForForceWithAlert != "")
	{
		Warning = NotValidForForceWithAlert;
		if (!(NotValidForForce = NotValidForForce.substr(0, NotValidForForce.length - 3)))
		{
			Warning = Warning.substr(0, Warning.length - 1);
		}
		else
		{
			Warning += W_WARNING_NOT_VALID_FOR_FORCE_1 + ' ' + NotValidForForce + ' ' + W_WARNING_NOT_VALID_FOR_FORCE_2;
		}
	}
	if (NotValid != "" || NotValidWithAlert != "")
	{
		Warning = NotValidWithAlert;
		if (!(NotValid = NotValid.substr(0, NotValid.length - 3)))
		{
			Warning = Warning.substr(0, Warning.length - 1);
		}
		else
		{
			Warning += W_WARNING_NOT_VALID_1 + ' ' + NotValid + ' ' + W_WARNING_NOT_VALID_2;
		}
	}
	if (Warning)
	{
		alert(Warning);
		EditTableRow(null, TR)
	}
	//------------------------------------------
}
//------------------------------------------
function EditTableRow(Evt, Row)  //cross - browser
{
	var Fields, Table, TBody, TR, TRow, TD, Cell, TableObject,
	tr, c, ValidationStatus, NoEditableContent, Data_, View, Value, j;

	if (typeof Evt != 'undefined' && Evt == null && typeof Row == 'object')
	{
		TR = Row;
	}
	else
	{
		var Evt = new xEvent(Evt);
		var fE = Evt.target;
		TD = xParentNode(fE, 1);
		TR = xParentNode(TD, 1);
	}

	TBody = xParentNode(TR, 1);

	if(TBody.tagName.toLowerCase() == "table")
	{
		Table = TBody;
	}
	else
	{
		Table = xParentNode(TBody, 1);
	}

	TableObject = GetTableSpec(Table);

	var c = TableObject.StartContentDataAt, ActAs;

	Fields = GBCG("Fields_" + Table.id, 'var');

	if (IsSavedTable(Table))
	{
		for (var i = 0, fE; i < TR.cells.length; i++)
		{
			if(!Fields[i - c] || !Fields[i - c].Type || Fields[i - c].Type != 'NonEditableContent')
			{
				NonEditableContent = false;
				Cell = TR.cells[i];
				if ($defined(Fields[i - c]) && $defined(Fields[i - c].Interface))
				{
					ActAs = Fields[i - c].Interface;
				}
				else
				{
					ActAs = '';
					if (!xFirstChild(Cell))
					{
						if (Fields[i - c].Content)
						{
							ActAs = 'Custom';
						}
						else if (!Cell.id)
						{
							if (Fields[i - c].Type == 'DATE')
							{
								ActAs = 'DateEditor';
							}
							else
							{
								ActAs = 'TextEditor';
							}
						}
						else
						{
							if (xInnerHtml(Cell) != "")
							{
								ActAs = 'ComboBox';
							}
							else
							{
								ActAs = 'NonEditable';
							}
						}
					}
					else if (!xFirstChild(Cell).tagName)
					{
						if (Cell.id)
						{
							ActAs = 'ComboBox';
						}
						else if (Fields[i - c].Type == 'DATE')
						{
							ActAs = 'DateEditor';
						}
						else
						{
							ActAs = 'TextEditor';
						}
					}
					else if (xFirstChild(Cell).type == "button")
					{
						ActAs = 'EditButton';
					}
				}

				if ($defined(Fields[i - c])) {

					if ((ActAs == 'ComboBox') || ActAs == 'Custom')
					{
						var Data = Fields[i - c].Data.concat(), ii;
						if (Fields[i - c].Type == 'USE_ONCE')
						{
							for(tr = 0; tr<Table.rows.length;tr++)
							{
								TRow = Table.rows[tr];
								if (TRow.rowIndex == TR.rowIndex)
								{
									continue;
								}
								if ((!TRow.EditableRow && i < 0) || TRow.EditableRow == 'true')
								{
									for(ii = 0; ii < Data.length; ii++)
									{
										if (TRow.cells[i].id == Data[ii].Value)
										{
											delete Data[ii];
										}
									}
								}
							}
						}
						if (typeof Data == 'object')
						{
							Data_ = new Array();
							for(ii = 0; ii < Data.length; ii++)
							{
								if (Data[ii])
								{
									Data_[Data_.length] = Data[ii];
								}
							}
							Data = Data_;
						}
					}
				}
				if ((!Cell.NotEditable || trim(Cell.NotEditable.toLowerCase()) != 'noteditable') && (!Cell.NonEditable || trim(Cell.NonEditable.toLowerCase()) != 'noneditable'))
				{
					fE = '';
					if (ActAs == 'Custom'/*Fields[i - c].Content*/)
					{
						Cell.View = Cell.View || Cell.innerHTML || '';
						Cell.innerHTML = Cell.View + (Cell.Content = Fields[i - c].Content);
					}
					else if (ActAs == 'DateEditor'/*!Cell.id*/)
					{
						Cell.dir = 'ltr';
						fE = new Element("input");
						fE.type = "text";
						fE.onfocus = DoOnDateEnter;
						fE.addClass("TableClass");
						fE.dir = "ltr";
						fE.readOnly = NonEditableContent;

						var InnerHTML = xInnerHtml(Cell);
						fE.value = InnerHTML;

						xInnerHtml(Cell, "");
						xAppendChild(Cell, fE);
					}
					else if (ActAs == 'TextEditor'/*!Cell.id*/)
					{
						fE = xCreateElement("input");
						fE.type = "text";
						fE.className = "TableClass";
						fE.readOnly = NonEditableContent;
						var InnerHTML = xInnerHtml(Cell);
						fE.value = InnerHTML;
						xInnerHtml(Cell, "");
						xAppendChild(Cell, fE);
					}
					else if (ActAs == 'ComboBox'/*!Cell.id*/)
					{
						fE = xCreateElement("select");
						fE.className = "TableClass";
						for (j = 0; j < Data.length; j++)	// !!! ???
						{
							View = Data[j].View;
							Value = Data[j].Value;
							fE.options[j] = new Option(View, Value);
							fE.options[j].title = View;
						}
						fE.readOnly = NonEditableContent;
						fE.value = Cell.id;
						xInnerHtml(Cell, "");
						xAppendChild(Cell, fE);
					}
 					else if (ActAs == 'EditButton'/*!Cell.id*/)
					{
						var FirstChild = xFirstChild(Cell);
						FirstChild.value = W_SAVE;
						FirstChild.onclick = SaveTableRow;
						//xRemoveEventListener(FirstChild,"click",EditTableRow);
						//xAddEventListener(FirstChild,"click",SaveTableRow)
					}
					if (fE && Fields[i - c].Listeners && Fields[i - c].Listeners.length)
					{
						for (j = 0; j < Fields[i - c].Listeners.length; j++)	// !!! ???
						{
							xAddEventListener(fE, Fields[i - c].Listeners[j].Event, Fields[i - c].Listeners[j].Listener);
						}
					}
				}
			}
		}
		//------------------------------------------
		if (!TR.mode)
			TR.mode = 'EDIT';
		if (TR.mode == "SAVED")
		{
			TR.mode = "EDIT";
		}

		TR.className = "TableClass";
		//------------------------------------------
	}
	else
	{
		alert(W_WARNING_SAVE_ROW);
	}
}
//------------------------------------------
function AddSaveTableRow(Evt)
{
	var Evt = new xEvent(Evt);
	var fE = Evt.target, Table, TBody, TR, TD, Fields, TableObject,
	ValidationStaus, IsEmpty = false, tmp_,
	Warning = "", NotValid = "", NotValidWithAlert = "", NotValidForForce = "", NotValidForForceWithAlert = "";

	TD = xParentNode(fE, 1);
	TRow = xParentNode(TD, 1);

	TBody = xParentNode(TRow, 1);

	if(TBody.tagName.toLowerCase() == "table")
	{
		Table = TBody;
	}
	else
	{
		Table = xParentNode(TBody, 1);
	}

	TableObject = GetTableSpec(Table);

	Fields = GBCG("Fields_" + Table.id, 'var');

	if (IsSavedTable(Table))
	{
		//------------------------------------------
		TR = Table.insertRow(-1);
		TR.className = "TableClass";
		TR.mode = "SAVED";

		if (TableObject.RowsCheckable)
		{	
			TD = xCreateElement('td');
			TD.className = "TableClass";
				var fE = xCreateElement("input");
				fE.type = "checkbox";
			xAppendChild(TD, fE);
			xAppendChild(TR, TD);
		}

		if (TableObject.Arrangable)
		{
			TD = xCreateElement("td");
			TD.className = "TableClass";
				var fE = xCreateElement("img");
				fE.src = "../admin/images/up.gif";
				fE.title = W_UP;
				fE.direction = -1;
				fE.onclick = MoveTableRow;
				fE.style.cursor = "pointer";
				fE.id = "1";
			xAppendChild(TD, fE);
			fE.insertAdjacentHTML("afterEnd","<br />");
			//fE.insertAdjacentText("afterEnd", "\n");
				var fE = xCreateElement("img");
				fE.src = "../admin/images/dn.gif";
				fE.title = W_DOWN;
				fE.direction = +1;
				fE.onclick = MoveTableRow;
				fE.style.cursor = "pointer";
			xAppendChild(TD, fE);
			xAppendChild(TR, TD);
		}

		if (TableObject.RowsEditable)
		{
			TD = xCreateElement('td');
			TD.className = "TableClass";
				var fE = xCreateElement("input");
				fE.type = "button";
				fE.value = W_EDIT;
				fE.className = "ButtonClass";
				fE.onclick = EditTableRow;
			xAppendChild(TD, fE);
			xAppendChild(TR, TD);
		}

		//TD.innerHTML = TableID.rows.length - 1;

		//------------------------------------------
		for (var i = 0, CountedFields = 0, t; i < TRow.cells.length;i++, CountedFields++)
		{
			if (xFirstChild(TRow.cells[i]).tagName)
			{
				if ((t = xFirstChild(TRow.cells[i]).tagName) == "SELECT")
				{
					TD = xCreateElement('td');
					TD.className = "TableClass";
					si = xFirstChild(TRow.cells[i]).selectedIndex;
					TD.id = xFirstChild(TRow.cells[i]).options[si].value;
					xInnerHtml(TD, xFirstChild(TRow.cells[i]).options[si].text);
					xAppendChild(TR, TD);
				}
				else if (t == "INPUT")
				{
					if (xFirstChild(TRow.cells[i]).type == "text")
					{
						TD = xCreateElement('td');
						TD.className = "TableClass";
						xInnerHtml(TD, trim(xFirstChild(TRow.cells[i]).value));
						xFirstChild(TRow.cells[i]).value = "";
						if ((tmp_ = xInnerHtml(TD)) == "")
						{
						}
						else if ((ValidationStatus = Validate(tmp_, Fields[CountedFields].Type, Fields[CountedFields].Force)) > 0)	// !!! ???
						{
							//IsEmpty = false;
						}
						else
						{
							//IsEmpty = false;
							//NotValid += Table.rows[1].cells[i].innerHTML + " و ";
							if (ValidationStatus === -2)
							{
								if (Fields[CountedFields].ForceAlert && Fields[CountedFields].ForceAlert != '')
								{
									NotValidForForceWithAlert += Fields[CountedFields].ForceAlert + '\n';
								}
								else
								{
									NotValidForForce += i + " و ";
								}
							}
							else if (ValidationStatus === -1)
							{
								if (Fields[CountedFields].ValidationAlert && Fields[CountedFields].ValidationAlert != '')
								{
									NotValidWithAlert += Fields[CountedFields].ValidationAlert + '\n';
								}
								else
								{
									NotValid += i + " و ";
								}
							}
							
						}
						xAppendChild(TR, TD);
					}
					else if ((t = xFirstChild(TRow.cells[i]).type) == 'button' || t == 'checkbox')
					{
						CountedFields--;
					}
				}
				else
				{
					TD = xCreateElement('td');
					if (TRow.cells[i].id)
					{
						TD.id = TRows.cells[i].id;
					}
					TD.className = "TableClass";

					xInnerHtml(TD, xInnerHtml(TRow.cells[i]));
					xAppendChild(TR, TD);
				}
			}
		}
		//------------------------------------------
		if (IsEmpty)
		{
			alert(W_WARNING_NO_DATA);
			xFirstChild(TR.cells[0]).checked = true;
			DeleteFromTable(Table);
		}

		if (NotValidForForce != "" || NotValidForForceWithAlert != "")
		{
			Warning = NotValidForForceWithAlert;
			if (!(NotValidForForce = NotValidForForce.substr(0, NotValidForForce.length - 3)))
			{
				Warning = Warning.substr(0, Warning.length - 1);
			}
			else
			{
				Warning += W_WARNING_NOT_VALID_FOR_FORCE_1 + ' ' + NotValidForForce + ' ' + W_WARNING_NOT_VALID_FOR_FORCE_2;
			}
		}
		if (NotValid != "" || NotValidWithAlert != "")
		{
			Warning = NotValidWithAlert;
			if (!(NotValid = NotValid.substr(0, NotValid.length - 3)))
			{
				Warning = Warning.substr(0, Warning.length - 1);
			}
			else
			{
				Warning += W_WARNING_NOT_VALID_1 + ' ' + NotValid + ' ' + W_WARNING_NOT_VALID_2;
			}
		}
		if (Warning)
		{
			alert(Warning);
			EditTableRow(null, TR)
		}
		//------------------------------------------
	}
	else
	{
		alert(W_WARNING_SAVE_ROW);
	}
}
//------------------------------------------
function DeleteTableRow(Evt)
{
	var Evt = new xEvent(Evt);
	var fE = Evt.target;

	TD = xParentNode(fE,1);
	TR = xParentNode(TD,1);
	TBody = xParentNode(TR,1);

	if(TBody.tagName.toLowerCase() == "table")
	{
		Table = TBody;
	}
	else
	{
		Table = xParentNode(TBody, 1);
	}

	Table.deleteRow(TR.rowIndex);
}
//------------------------------------------
function SetSelectedDataArray(Name, ShouldBeSpecifiedArray)
{
	var SDA;
	if ((typeof ShouldBeSpecifiedArray) == 'undefined')
	{
		ShouldBeSpecifiedArray = false;
	}

	if (!(SDA = GBCG("SelectedDataArray_" + Name, 'var'))){
		if (!ShouldBeSpecifiedArray){
			SDA = GBCG("SelectedDataArray_OSRelation", 'var');
		}
	}
	return SDA;
	//-----------------------------------------------------------
	/**
	if (typeof(eval("SelectedDataArray_" + Name)) != "undefined")
	{
		var SDA = eval("SelectedDataArray_" + Name);
	}
	else if (typeof(SelectedDataArray_OSRelation) != "undefined")
	{
		var SDA = SelectedDataArray_OSRelation;
	}
	else
	{
		alert("Error");
		return false;
	}
	return SDA;
	/**/
	//-----------------------------------------------------------
}
//------------------------------------------
function SetSelectedData_Radio_Check(Name)
{
	SelectedDataArray = SetSelectedDataArray(Name);
	var i = 0;
	while (fE = $(Name + i))
	{
		i++;
		for (var j = 0; j < SelectedDataArray.length; j++)
		{
			if (fE.value == SelectedDataArray[j])
			{
				fE.checked = true;
				break;
			}
		}
	}
}
//------------------------------------------
function SetSelectedData_List(Name)
{
	var SelectedDataArray = SetSelectedDataArray(Name),
	fE = $(Name);

	for (var i = 0; i < fE.length; i++)
	{
		for (var j = 0; j < SelectedDataArray.length; j++)
		{
			if (fE[i].value == SelectedDataArray[j])
			{
				fE[i].selected = true;
				break;
			}
		}
	}
}
//------------------------------------------
function SetSelectedData_TwoList(ListID1,ListID2)
{
	SetSelectedData_List(ListID1);
	ListID1 = $(ListID1);
	ListID2 = $(ListID2);
	//MoveToList(ListID1,ListID2);
	CopyToList(ListID1, ListID2);
}
//------------------------------------------
function SetSelectedData_TableList(Name)
{
	SetSelectedData_List(Name);
	Table = "tbl" + Name.substr(3);
	List = $(Name);
	Table = $(Table);
	AddToTable(List, Table);
}
//------------------------------------------
function SetSelectedData_DL(ComboID, ListID)
{
	ComboID = $(ComboID);
	ListID = $(ListID);

	var DataArray = GBCG("DataArray_" + ComboID.id, 'var'),
	SelectedDataArray = SetSelectedDataArray(ListID.id),
	SelectedDataParent = "", i;

	for (var i = 0; i < DataArray.length; i++)
	{
		for (var j = 0; j < SelectedDataArray.length; j++)
		{
			if (DataArray[i].Value == SelectedDataArray[j])
			{
				var Parent = DataArray[i].Parent;
				if (typeof Parent == 'string')
				{
					Parent = trim(Parent);
				}
				if (DataArray[i].Parent !== 0 && DataArray[i].Parent !== '0')
				{
					SelectedDataParent = DataArray[i].Parent;
				}
			}
		}
	}
	//----------------------------------------------
	for (i = 0; i < ComboID.length; i++)
	{
		if (ComboID[i].value == SelectedDataParent)
		{
			ComboID[i].selected = true;
			break;
		}
	}
	//----------------------------------------------
	DataSetting(ComboID, ListID);
	SetSelectedData_List(ListID.id);
}
//------------------------------------------
function SetSelectedData_DL_MS_SP_2List(ComboID, ListID1, ListID2)
{
	ComboID = $(ComboID);
	ListID1 = $(ListID1);
	ListID2 = $(ListID2);

	SetSelectedData_DL(ComboID.id, ListID1.id);
	//MoveToList(ListID1,ListID2);
	CopyToList(ListID1, ListID2);
}
//------------------------------------------
function SetSelectedData_DL_MS_MP_2List(ComboID, ListID1, ListID2)
{
	ComboID = $(ComboID);
	ListID1 = $(ListID1);
	ListID2 = $(ListID2);

	SetSelectedData_DL(ComboID.id, ListID1.id);
	//AddToListFromList(ListID1, ListID2);

	var DataArray = GBCG("DataArray_" + ComboID.id, 'var'),
	SelectedDataArray = SetSelectedDataArray(ListID1.id),
	view, value, parentValue, parentView;

	for (var i = 0; i < DataArray.length; i++) {
		value = DataArray[i].Value;
		view = DataArray[i].View;
		parentValue = DataArray[i].Parent;
		parentView = getView(ComboID.id, parentValue);
		for (var j = 0; j < SelectedDataArray.length; j++) {
			if (value == SelectedDataArray[j]) {
//				addToList(view + '(' + parentView + ')', value, ListID2);
				addToList(parentView + ' - ' + view, value, ListID2);
//				deactiveAnElementFromList(value, ListID1);
			}
		}
	}
}
//------------------------------------------
function SetSelectedData_DL_MS_TableList(ComboID, ListID, TableID)
{
	ComboID = $(ComboID);
	ListID = $(ListID);
	TableID = $(TableID);

	var DataArray = GBCG("DataArray_" + ComboID.id, 'var'),
	SelectedDataArray = SetSelectedDataArray(ListID.id),
	TR, TD, View, Value, Parent;

	for (var i = 0; i < DataArray.length; i++)
	{
		Value = DataArray[i].Value;
		View = DataArray[i].View;
		Parent = DataArray[i].Parent;
		for (var j = 0; j < SelectedDataArray.length; j++)
		{
			if (Value == SelectedDataArray[j])
			{
				TR = TableID.insertRow(-1);
				TR.className = "TableListClass";
				TR.id = Value;

				TD = xCreateElement('td');
				TD.className = "TableListClass";
					var fE = xCreateElement("input");
					fE.type = "checkbox";
				xAppendChild(TD, fE);
				xAppendChild(TR, TD);

				TD = xCreateElement('td');
				TD.className = "TableListClass";
				xInnerHtml(TD, TableID.rows.length - 1);
				xAppendChild(TR, TD);

				xAppendChild(TR, TD);
				TD = xCreateElement('td');
				TD.className = "TableListClass";
				xInnerHtml(TD, getView(ComboID.id, Parent));
				xAppendChild(TR, TD);

				TD = xCreateElement('td');
				TD.className = "TableListClass";
				xInnerHtml(TD, View);
				xAppendChild(TR, TD);
			}
		}
	}
}
//------------------------------------------
function SetSelectedData_ML_MS_Tree_List(TreeID, ListID)
{
	var List = $(ListID), Tree = $(TreeID), SelectedDataArray;

	if(SelectedDataArray = SetSelectedDataArray(TreeID, true))
	{
		
	}

//	SetSelectedData_ML(TreeID,ListID);
//	ListID1 = document.getElementById(ListID1);
//	ListID2 = document.getElementById(ListID2);
//	AddToListFromList(ListID1,ListID2);
//	DeselectAllList(ListID1);
//	CopyFromTreeToList(TreeID,ListID);
}
//------------------------------------------
function CopyFromTreeToList(TreeID, ListID)
{
	var Tree = $(TreeID),
	ItemText;

	if (ListID = $(ListID))
	{
		try
		{
			var _tree = GBCG('tree_' + TreeID, 'var'), _n, ItemUID;
			if (ItemUID = _tree.getSelectedItemId())
			{
				ItemText = _tree.getItemText(ItemUID);
				//------------------------------------------
				if (!IsInList(ItemUID, ListID))
				{
					_n = ListID.options.length;
					ListID.options[_n] = new Option(ItemText, ItemUID);
					ListID.options[_n].title = ItemText;
				}
				else
				{
					alert(ItemText + ' ' + W_WARNING_SELECTED);
				}
				return true;
			}
			else
			{
				return true;
			}
		}
		catch (Err)
		{
//			alert('An error accurred when is going to copy an item from tree to list');
			return false;
		}
	}
	else
	{
		return false;
	}
}
//------------------------------------------
function ReturnFromListToTree(ListID, TreeID)
{
	List = $(ListID);
//	TreeID = $(TreeID);
	DeleteFromList(List);
}
//------------------------------------------
function getView(ArrayID, Value)
{
	var DataArray = GBCG("DataArray_" + ArrayID, 'var');
	for (var i = 0; i < DataArray.length; i++)
	{
		if (DataArray[i].Value == Value)
		{
			return DataArray[i].View;
		}
	}
}
//------------------------------------------
function getParent(ArrayID, Child)
{
	var DataArray = GBCG("DataArray_" + ArrayID, 'var'),
	Parent;
	for (var i = 0; i < DataArray.length; i++)
	{
		if (DataArray[i].Value == Child)
		{
			Parent = DataArray[i].Parent;
			break;
		}
	}
	return getView(ArrayID, Parent);
}
//------------------------------------------
function SetHiddenValue(Name, hiddenValue)
{
	$("hid" + Name).value = hiddenValue;
}
//------------------------------------------
function GetCheckInfo(Name)
{
	hiddenValue = "";
	var i = 0;
	var k = 0;
	while (fE = $("chk" + Name + i))
	{
		i++;
		if(fE.checked)
		{
			if(k > 0)
			{
				hiddenValue += "*";
			}

			hiddenValue += fE.value;
			k++;
		}
	}
	SetHiddenValue(Name, hiddenValue);
}
//------------------------------------------
function GetListInfo(Name)
{
	var fnclvListID;
	DeselectAllList($((fnclvListID = "lst" + Name) + "[1]") || $(fnclvListID + "_1"));
	//---------------------------------------
	SelectAllList($(fnclvListID + "[2]") || $(fnclvListID + "_2"));
/*
	hiddenValue = "";
	n = 0;
	for (var i = 0; i < ListID.length; i++)
	{
		if (n > 0)
			hiddenValue += "*";
		hiddenValue += ListID[i].value;
		n++;
	}
	SetHiddenValue(Name,hiddenValue);
*/
}
//------------------------------------------
function GetListInfo2(ListID)
{
	List = $(ListID);
	SelectAllList(List);
/*
	hiddenValue = "";
	n = 0;
	for (var i = 0; i < ListID.length; i++)
	{
		if (n > 0)
			hiddenValue += "*";
		hiddenValue += ListID[i].value;
		n++;
	}
	SetHiddenValue(Name,hiddenValue);
*/
}
//------------------------------------------
function GetTableListInfo(Name)
{
	ListID = "lst" + Name;
	ListID = $(ListID);
	DeselectAllList(ListID);
	//---------------------------------------
	TableID = "tbl" + Name;
	TableID = $(TableID);
	hiddenValue = "";
	var n = 0;
	for (var i = 1; i < TableID.rows.length; i++)
	{
		if (n > 0)
		{
			hiddenValue += "*";
		}
		Row = TableID.rows[i];
		//Cell = Row.cells[2];
		hiddenValue += Row.id;
		n++;
	}
	SetHiddenValue(Name, hiddenValue);
}
//------------------------------------------
function GetTableInfo(Name)
{
	TableID = "tbl" + Name;
	TableID = $(TableID);

	for(var tr = 0; i<TableID.rows.length;TableID.rows[tr++].EditableRow = TableID.RowsEditable);

	TableObject = GetTableSpec(TableID);
	var c = TableObject.StartContentDataAt, ActAs, Fields = GBCG("Fields_" + TableID.id, 'var');;

	TableType = false;
	hiddenValueNew = "";
	hiddenValueOld = "";
	for (var i = 0; i < TableID.rows.length; i++)
	{
		Row = TableID.rows[i];
		if (Row.EditableRow && Row.EditableRow == 'false')
		{
			continue;
		}
		if (Row.mode == "SAVED" && (!Row.id || Row.id == ""))
		{
			for (var j = 0; j < Row.cells.length; j++)
			{
				ActAs = '';
				Cell = Row.cells[j];
				if ($defined(Fields[j - c]) && $defined(Fields[j - c].Interface))
				{
					ActAs = Fields[j - c].Interface;
				}
				else
				{
					if (xFirstChild(Cell) && xFirstChild(Cell).tagName)
					{
						switch (xFirstChild(Cell).type || xFirstChild(Cell).tagName.toLowerCase())
						{
							case "button":
								ActAs = 'ActionButton';
								break;
							case "checkbox":
								if (j == 0)
								{
									ActAs = 'CheckBox';
								}
								break;
							case "img":
								if (j == 0)
								{
									ActAs = 'DeleteImg';
								}
								if (j == TableObject.ArrangementPosition)
								{
									ActAs = 'ArrangeElement';
								}
								break;
						}
					}
					else if (Cell.id || Fields[j - c].Content)
					{
						ActAs = 'Custom';
					}
					else
					{
						ActAs = 'TextEditor';
					}
				}
				switch (ActAs)
				{
					case 'ComboBox':
					case 'Custom':
						hiddenValueNew += Cell.id;
						break;
					case 'DateEditor':
					case 'TextEditor':
						hiddenValueNew += xInnerHtml(Cell);
						break;
					case 'ActionButton':
					case 'CheckBox':
					case 'DeleteImg':
					case 'ArrangeElement':
						continue;
					default:
						if (Cell.id)
						{
							hiddenValueNew += Cell.id;
						}
						else
						{
							hiddenValueNew += Cell.innerHTML;
						}
				}
				hiddenValueNew += "*";
			}
			hiddenValueNew = hiddenValueNew.substr(0, hiddenValueNew.length - 1);
			hiddenValueNew += "||";
		}
		else if ((Row.mode && Row.mode == "SAVED" && Row.id != "") || (!Row.mode && Row.id != "NEW" && Row.id != "EDIT" && Row.id != ""))
		{
			hiddenValueOld += Row.id + "*";
			for (var j = 0; j < Row.cells.length; j++)
			{
				ActAs = '';
				Cell = Row.cells[j];
				if ($defined(Fields[j - c]) && $defined(Fields[j - c].Interface))
				{
					ActAs = Fields[j - c].Interface;
				}
				else
				{
					if (xFirstChild(Cell) && xFirstChild(Cell).tagName)
					{
						switch (xFirstChild(Cell).type || xFirstChild(Cell).tagName.toLowerCase())
						{
							case "button":
								ActAs = 'ActionButton';
								break;
							case "checkbox":
								if (j == 0)
								{
									ActAs = 'CheckBox';
								}
								break;
							case "checkbox":
								if (j == 0)
								{
									ActAs = 'DeleteImg';
								}
								break;
							case "img":
								if (j == TableObject.ArrangementPosition)
								{
									ActAs = 'ArrangeElement';
								}
								break;
						}
					}
					else if (Cell.id || Fields[j - c].Content)
					{
						ActAs = 'Custom';
					}
					else
					{
						ActAs = 'TextEditor';
					}
				}
				switch (ActAs)
				{
					case 'ComboBox':
					case 'Custom':
						hiddenValueOld += Cell.id;
						break;
					case 'DateEditor':
					case 'TextEditor':
						hiddenValueOld += xInnerHtml(Cell);
						break;
					case 'ActionButton':
					case 'CheckBox':
					case 'DeleteImg':
					case 'ArrangeElement':
						continue;
					default:
						if (Cell.id)
						{
							hiddenValueOld += Cell.id;
						}
						else
						{
							var CellInnerHTML = xInnerHtml(Cell);
							hiddenValueOld += CellInnerHTML;
						}
				}
				hiddenValueOld += "*";
/*
				if (!xFirstChild(Cell))
				{
					if (Cell.id)
					{
						hiddenValueOld += Cell.id;
					}
					else
					{
						var CellInnerHTML = xInnerHtml(Cell);
						hiddenValueOld += CellInnerHTML;
					}
					hiddenValueOld += "*";
				}
				else if (!xFirstChild(Cell).tagName)
				{
					if (Cell.id)
					{
						hiddenValueOld += Cell.id;
					}
					else
					{
						var CellInnerHTML = xInnerHtml(Cell);
						hiddenValueOld += CellInnerHTML;
					}
					hiddenValueOld += "*";
				}
*/
			}
			hiddenValueOld = hiddenValueOld.substr(0, hiddenValueOld.length-1);
			hiddenValueOld += "||";
		}
		else
		{
			switch(TableType || ((TableType = GetTableType(TableID)) ? TableType : TableType)) {
				case 'DYNAMIC':
				case 'SIMPLECROSS':
					UnrecognizableStatus = i > 0 ? true : false;
				break;
				case 'STATIC':
					UnrecognizableStatus = i > 1 ? true : false;
				break;
				case false:
					UnrecognizableStatus = i > 0 ? true : false;
				break;
			}
			if (UnrecognizableStatus)
				alert('unrecongnized state! on row' + i);
		}
	}
	hiddenValueNew = hiddenValueNew.substr(0, hiddenValueNew.length-2);
	hiddenValueOld = hiddenValueOld.substr(0, hiddenValueOld.length-2);
	hiddenValue = hiddenValueNew + "###" + hiddenValueOld;
	SetHiddenValue(Name, hiddenValue);
}
//------------------------------------------
function DeleteFromTable_(TableID)
{
	TableID = $(TableID);

	hiddenValue = "";
	var n = 0;
	for (var i = 0; i < TableID.rows.length; i++)
	{
		Row = TableID.rows[i];
		//Cell = Row.cells[0];
		if (xFirstChild(Row.cells[0]))
		{
			if (xFirstChild(Row.cells[0]).checked)
			{
				if (n > 0)
				{
					hiddenValue += "*";
				}
				hiddenValue += Row.id;
				n++;
			}
		}
	}
	if (n > 0)
	{
		Name = TableID.id;
		Name = Name.substr(3);
		SetHiddenValue(Name, hiddenValue);
		if (confirm(W_WARNING_CONFIRM))
		{
			document.forms[0].action = "save.php?Mode=DELETE";
			FormSubmit2({form: document.forms[0], responseType: 'HTML'});
		}
	}
	else
	{
		alert(W_WARNING_NO_SELECTED);
	}
}
//------------------------------------------
function Arrange(Evt/*event*/, TableID)
{
	TableID = $(TableID);

	hiddenValue = "";
	var n = 0;
	for (var i = 0; i < TableID.rows.length; i++) {
		Row = TableID.rows[i];
		//Cell = Row.cells[0];
		if (xFirstChild(Row.cells[0]))
		{
			if (n > 0)
			{
				hiddenValue += "*";
			}
			hiddenValue += Row.id;
			n++;
		}
	}
	if (n > 0)
	{
		Name = TableID.id;
		Name = Name.substr(3);
		SetHiddenValue(Name, hiddenValue);
		if (confirm(W_WARNING_CONFIRM))
		{
			document.forms[0].action = "save.php?Mode=ARRANGE";
			FormSubmit2({form: document.forms[0], responseType: 'HTML'});
		}
	}
	else
	{
		alert(W_WARNING_NO_SELECTED);
	}
}
//------------------------------------------
function GetListSelectedItemsWithASeperator(Evt, TableID, Seperator, All)
{
	TableID = $(TableID);

	hiddenValue = "";
	var n = 0;
	for (var i = 0; i < TableID.rows.length; i++)
	{
		Row = TableID.rows[i];
		//Cell = Row.cells[0];
		if (xFirstChild(Row.cells[0]))
		{
			if (xFirstChild(Row.cells[0]).checked || (typeof All != 'undefined' && All))
			{
				if (n > 0)
				{
					hiddenValue += Seperator;
				}
				hiddenValue += Row.id;
				n++;
			}
		}
	}
	return hiddenValue;
}
//------------------------------------------
function Set(TableID, Subject)
{
	TableID = $(TableID);

	hiddenValue = "";
	var n = 0;
	for (var i = 0; i < TableID.rows.length; i++)
	{
		Row = TableID.rows[i];
		//Cell = Row.cells[0];
		if (xFirstChild(Row.cells[0]))
		{
			if (xFirstChild(Row.cells[0]).checked || Subject == 0)
			{
				if (n > 0)
				{
					hiddenValue += "*";
				}
				hiddenValue += Row.id;
				n++;
			}
		}
	}
	if (n > 0)
	{
		Name = TableID.id;
		Name = Name.substr(3);
		SetHiddenValue(Name, hiddenValue);
		if (confirm(W_WARNING_CONFIRM))
		{
			document.forms[0].action = "save.php?Mode=SET&Subject=" + Subject;
			FormSubmit2({form: document.forms[0], responseType: 'HTML'});
		}
	}
	else
	{
		alert(W_WARNING_NO_SELECTED);
	}
}
//------------------------------------------
function SetForStaticTables(TableID, Subject)
{
	TableID = $(TableID);

	hiddenValue = "";
	var n = 0;
	for (var i = 2; i < TableID.rows.length; i++) {
		Row = TableID.rows[i];
		//Cell = Row.cells[0];
		if (xFirstChild(Row.cells[0])) {
			if (xFirstChild(Row.cells[0]).checked || Subject == 0) {
				if (n > 0) {
					hiddenValue += "*";
				}
				hiddenValue += Row.id;
				n++;
			}
		}
	}
	if (n > 0) {
		Name = TableID.id;
		Name = Name.substr(3);
		SetHiddenValue(Name, hiddenValue);
		if (confirm(W_WARNING_CONFIRM)) {
			document.forms[0].action = "save.php?Mode=SET&Subject=" + Subject;
			FormSubmit2({form: document.forms[0], responseType: 'HTML'});
		}
	} else {
		alert(W_WARNING_NO_SELECTED);
	}
}
//------------------------------------------
function SetDirection(dir)
{
	//document.body.dir = dir;
	var FormElementsArray = GBCG('FormElementsArray', 'var');
	if (FormElementsArray)
	{
		for (var i = 0; i < FormElementsArray.length; i++)
		{
			ID = FormElementsArray[i].ID;
			Type = FormElementsArray[i].Type;
			if (Type)
			{
				if (fE = $(ID))
				{
					if (Type == "Fa_STRING" || Type == "STRING" || Type == "NAME")
					{
						fE.dir = dir;
					}
					else if (Type != "TABLE" && Type != "TABLE_LIST" && Type != "RADIO" && Type != "CHECKBOX" && Type != "LIST")
					{
						fE.dir = "ltr";
					}
				}
			}
		}
	}
}
//------------------------------------------
function FormValidate(FormID)
{
	FormID = $(FormID);
	var FEA, FormElementsArray;
	if (FormID)
	{
		if (!(FEA = GBCG("FormElementsArray_" + FormID.id, 'var'))){
			FEA = GBCG("FormElementsArray", 'var');
		}
		FormElementsArray = FEA;
	}
	//----------------------
	var PasswordValue = "", Name, ID, Type, Force,
	ForceAlert, ValidationAlert, Value, Warning, WarningAlert, TableType, Empty;
	//----------------------
	for (var i = 0; i < FormElementsArray.length; i++)
	{
		if (FormElementsArray[i])
		{
			Name = FormElementsArray[i].Name;
			ID = FormElementsArray[i].ID;
			Type = FormElementsArray[i].Type;
			Force = FormElementsArray[i].Force;
			if (Type === 'NonEditableContent')
			{
				continue;
			}
			if (typeof FormElementsArray[i].ForceAlert != 'undefined')
			{
				ForceAlert = FormElementsArray[i].ForceAlert;
			}
			else
			{
				ForceAlert = '';
			}
			if (typeof FormElementsArray[i].ValidationAlert != 'undefined')
			{
				ValidationAlert = FormElementsArray[i].ValidationAlert;
			}
			else
			{
				ValidationAlert = '';
			}
			if (Type)
			{
				if (fE = $(ID))
				{
					Value = fE.value;
				}
				else
				{
					Value = false;
				}

				WarningEmpty = W_WARNING_ENTER_1 + ' ' + Name + ' ' + W_WARNING_ENTER_2;
				Warning = W_WARNING_NOT_VALID_1 + ' ' + Name + ' ' + W_WARNING_NOT_VALID_2;

				if (Type == "TABLE")
				{
					if (!(TableType = GetTableType(fE)) && Force)
					{
						alert(false);
						return false;
					}

					switch(TableType) {
						case 'DYNAMIC':
						case 'SIMPLECROSS':
							Empty = fE.rows.length > 1 ? false : true;
						break;
						case 'STATIC':
							Empty = fE.rows.length > 2 ? false : true;
						break;
					}

					if (Force && Empty)
					{
						alert(WarningEmpty);
						fE.focus();
						return false;
					}

//					k = 0;
//					for (j = 0; j < fE.rows.length; j++)
//					{
//						if (fE.rows[j].id == "NEW" || fE.rows[j].id == "EDIT")
//						{
//							alert(W_WARNING_SAVE_ROW);
//							fE.focus();
//							return false;
//						}
//						else if (fE.rows[j].id == "SAVED")
//						{
//							k++;
//						}
//					}
//					if (Force && k == 0)
//					{
//						alert(WarningEmpty);
//						fE.focus();
//						return false;
//					}
				}
				else if (Type == "TABLE_LIST")
				{
					if (Force)
					{
						if (fE.rows.length < 2)
						{
							alert(WarningEmpty);
							fE.focus();
							return false;
						}
					}
				}
				else if (Type == "RADIO" || Type == "CHECKBOX")
				{
					if (Force)
					{
						k = 0;
						j = 0;
						while (fE = $(ID + j))
						{
							j++;
							if(fE.checked)
							{
								k++;
							}
						}
						if (k == 0)
						{
							alert(WarningEmpty);
							if (fE)
							{
								fE.focus();
							}
							return false;
						}
					}
				}
				else if (Type == "PASSWORD")
				{
					Confirm = $(ID + "Confirm");
					if (Value === Confirm.value)
					{
						if (Force)
						{
							if (Validate(Value, Type, true) < 1)
							{
								alert(Warning);
								fE.focus();
								return false;
							}
							else
							{
								PasswordValue = MD5(Value);
								PasswordElement = fE;
								//fE.value = Value;
								//Confirm.value = Value;
							}
						}
						else
						{
							if(Value === '')
							{
							}
							else
							{
								if (Validate(Value, Type, true) < 1)
								{
									alert(Warning);
									fE.focus();
									return false;
								}
								else
								{
									PasswordValue = MD5(Value);
									PasswordElement = fE;
									//fE.value = Value;
									//Confirm.value = Value;
								}
							}
						}
					}
					else
					{
						fE.value = "";
						Confirm.value = "";
						alert(W_WARNING_PASSWORD_CONFIRM);
						fE.focus();
						return false;
					}
				}
				else
				{
					if(Validate(Value, Type, Force) < 0)
					{
						alert(Warning);
						fE.focus();
						return false;
					}
				}
			}
		}
	}
	//----------------------
	if (PasswordValue != "")
	{
		PasswordElement.value = PasswordValue;
		Confirm.value = PasswordValue;
	}
	//----------------------
	return true;
}
//------------------------------------------
function Add(Name)
{
	//window.location = "index.php?Page="+Name+"&Mode=NEW";
	document.forms[0].action = "index.php?Page=" + Name + "&Mode=NEW";
	FormSubmit2({form: document.forms[0], responseType: 'HTML'});
}
//------------------------------------------
function Edit(Name, Evt)
{
	var Evt = new xEvent(Evt);
	var fE = Evt.target;
	var TD = xParentNode(fE, 1);
	var TR = xParentNode(TD, 1);
	document.forms[0].action = "index.php?Page=" + Name + "&Mode=EDIT&UID=" + TR.id;
	FormSubmit2({form: document.forms[0], responseType: 'HTML'});
}
//------------------------------------------
function Edit_InOtherLanguage(Name, Evt)
{
	var Evt = new xEvent(Evt);
	var fE = Evt.target;
	TD = xParentNode(fE, 1);
	TR = xParentNode(TD, 1);

	if (fE.id == "")
	{
		document.forms[0].action = "index.php?Page=" + Name + "&Mode=NEW&ID=" + TR.categoryid + "&Language=" + TD.id;
	}
	else
	{
		document.forms[0].action = "index.php?Page=" + Name + "&Mode=EDIT&UID=" + fE.id + "&Language=" + TD.id;
	}
	FormSubmit2({form: document.forms[0], responseType: 'HTML'});
}
//------------------------------------------
function MoveTableRow(Direction, Evt)
{
	if(typeof Evt == 'undefined')
	{
		if (typeof Direction != 'number')
		{
			if (typeof Direction != 'undefined')
			{
				Evt = Direction;
				Direction = null;
			}
			else
			{
				Evt = null;
			}
		}
		else
		{
			Evt = null;
		}
	}

	if (Evt == null)
	{
		var Evt = new xEvent();
	}
	else
	{
		var Evt = new xEvent(Evt);
	}

	var fE = Evt.target;

	if (typeof Direction == 'undefined' || Direction == null)
	{
		Direction = fE.direction;
	}

	TD = xParentNode(fE, 1);
	TR = xParentNode(TD, 1);
	TBody = xParentNode(TR, 1);

	if(TBody.tagName.toLowerCase() == "table")
	{
		Table = TBody;
	}
	else
	{
		Table = xParentNode(TBody, 1);
	}

	if ((NewTR = Table.rows[TR.rowIndex + Direction]) && (TR.rowIndex + Direction) > 0)
	{
		swapNodes(TR, NewTR);
		//TR.swapNode(NewTR);
	}
}
//------------------------------------------
function FormInfo()
{
	string = "  :  ( tagName ) ( type ) ( name ) ( id ) ( className ) \n";
	for (i = 0; i < document.forms[0].elements.length; i++)
	{
		string += i + " : ";
		string += " ( " + document.forms[0].elements[i].tagName + " ) ";
		string += " ( " + document.forms[0].elements[i].type + " ) ";
		string += " ( " + document.forms[0].elements[i].name + " ) ";
		string += " ( " + document.forms[0].elements[i].id + " ) ";
		string += " ( " + document.forms[0].elements[i].className + " ) ";
		string += "\n";
	}
	//alert(string);
	w = window.open();
	w.document.write("<pre>" + string + "</pre>");
}
//------------------------------------------
function FormInfoTable()
{
	W = window.open();
	Table = W.document.createElement("table");
	Table.align = "center";
	Table.border = "1";
	Table.borderColor = "#990000";
	TR = Table.insertRow(-1);
	TD = TR.insertCell();
	xInnerHtml(TD, "&nbsp;");
	TD = TR.insertCell();
	xInnerHtml(TD, "tagName");
	TD = TR.insertCell();
	xInnerHtml(TD, "type");
	TD = TR.insertCell();
	xInnerHtml(TD, "name");
	TD = TR.insertCell();
	xInnerHtml(TD, "id");
	TD = TR.insertCell();
	xInnerHtml(TD, "className");
	for (i = 0; i < document.forms[0].elements.length; i++)
	{
		TR = Table.insertRow(-1);
		TD = TR.insertCell();
		xInnerHtml(TD, i);
		TD = TR.insertCell();
		xInnerHtml(TD, document.forms[0].elements[i].tagName);
		TD = TR.insertCell();
		xInnerHtml(TD, document.forms[0].elements[i].type);
		TD = TR.insertCell();
		xInnerHtml(TD, document.forms[0].elements[i].name);
		TD = TR.insertCell();
		xInnerHtml(TD, document.forms[0].elements[i].id);
		TD = TR.insertCell();
		xInnerHtml(TD, document.forms[0].elements[i].className);
	}
	W.document.body.appendChild(Table);
}
//------------------------------------------
function ShowHide(fE)
{
//	if (fE.currentStyle.visibility == "hidden")
	if (xVisibility(fE) == "hidden")
	{
		xVisibility(fE, true);
	}
//	else if (fE.currentStyle.visibility == "visible")
	else if (xVisibility(fE) == "visible")
	{
		xVisibility(fE, false);
	}
}

function AddFileForObjectEquivalents(Object, FileExt, EquivalentsLanguages)
{
	FileEquivalentsForAnObject = new Array();
	if(typeof EquivalentsLanguages == 'string')
	{
		EquivalentsLanguages = EquivalentsLanguages.split(";");
	}

	if (EquivalentsLanguages.length > 0)
	{
		var Layer = document.createElement("div");
		Layer.style.position = 'absolute';
		xBackground(Layer, 'CC9933');
		xWidth(Layer, 300);

		Layer.style.borderColor = '#CC6600';
		Layer.style.borderStyle = 'dotted';
		Layer.style.borderWidth = '1px';

		Table = document.createElement("table");
		Table.style.textAlign = "center";
		Table.style.borderWidth = "0px";

		for (i = 0; i < EquivalentsLanguages.length; i++)
		{
			EquivalentsLanguages[i] = EquivalentsLanguages[i].split(":");
	
			TR = Table.insertRow(-1);
			TD = xCreateElement('td');
	
			var fE = xCreateElement("input");
				fE.type = "checkbox";
				fE.value = EquivalentsLanguages[i][0];
				fE.title = EquivalentsLanguages[i][1];
			FileEquivalentsForAnObject[FileEquivalentsForAnObject.length] = fE;

			xAppendChild(TD, fE);
			xAppendChild(TR, TD);
	
			TD = xCreateElement('td');
			Text = document.createTextNode(EquivalentsLanguages[i][1]);
			xAppendChild(TD, Text);
			xAppendChild(TR, TD);
		}

		TR = Table.insertRow(-1);
		TD = xCreateElement('td');
		TD.colSpan = 2;

		fE = xCreateElement("input");
			fE.type = "button";
			fE.uid = Object;
			fE.extension = FileExt;
			fE.className = 'buttonClass';
			fE.value = W_REGISTER;
			fE.title = W_REGISTER;
			fE.onclick = AddFileEquivalencyForObject;

		xAppendChild(TD, fE);
		xAppendChild(TR, TD);

		xAppendChild(Layer, Table)
		xAppendChild(document.body, Layer);

		var xpos1 = document.body.scrollLeft + Math.floor(document.body.clientWidth / 2) - Math.floor(25);
		var ypos1 = document.body.scrollTop + Math.floor(document.body.clientHeight / 2) - Math.floor(25);
		//alert("x=" + xpos1 + ", y=" + ypos1);
		//DivLayerElement.moveTo(xpos1, ypos1);
		xMoveTo(Layer, xpos1, ypos1);
	}
	else
	{
		alert('No Equivalents Available!');
	}
}

function AddFileEquivalencyForObject(Evt)
{
	Evt = new xEvent(Evt);
	var fE = Evt.target;

	Languages = '';
	for (i = 0; i < FileEquivalentsForAnObject.length; i++)
	{
		//alert(fE.uid + ' : ' + FileEquivalentsForAnObject[i].value + ' : ' + FileEquivalentsForAnObject[i].checked)
		if (FileEquivalentsForAnObject[i].checked)
		{
			if (Languages.length)
			{
				Languages += ';';
			}
			Languages += FileEquivalentsForAnObject[i].value;
		}
	}

	if (Languages.length)
	{
		GoTo('addfileforequivalentsofobject.php?Object=' + fE.uid + '&Remote&Extension=' + fE.extension + '&Languages=' + Languages + '&redirect=' + escape(document.URL));
	}
	else
	{
		alert('No Equivalents Available');
	}
}

function GetTableType(Table)
{
	Table = $(Table);
	if (typeof Table.type != 'undefined')
	{
		TableType = Table.type;
	}
	else if (typeof Table.className != 'undefined')
	{
		TableType = Table.className.substr(0, Table.className.length - 5);
	}
	else
	{
		return false;
	}
	return TableType;
}
function GetTableSpecs(Table, Attribute, CaseSensitive)
{
	Table = $(Table);

	CaseSensitive = !!CaseSensitive;

	var TA, lclvarAttributes = (TA = GetElementAttributes(Table)).Attributes ? TA.split(',') : new Array();

	if (Attribute)
	{
		var tmpAttribute, i = 0;
		if (lclvarAttributes.length){
			for(; i < lclvarAttributes.length; i++)
			{
				if (!CaseSensitive)
				{
					if (lclvarAttributes[i].indexOf(':') > 0)
					{
						lclvarAttributes[i] = lclvarAttributes[i].split(':');
						lclvarAttributes[i].Attribute = lclvarAttributes[i][0];
						lclvarAttributes[i].Value = lclvarAttributes[i][1];
					}
					else
					{
						tmpAttribute = lclvarAttributes[i];
						lclvarAttributes[i] = new Array();
						lclvarAttributes[i].Attribute = tmpAttribute;
						lclvarAttributes[i].Value = lclvarAttributes[i].Attribute;
					}

					if (typeof lclvarAttributes[i].Attribute == 'string' && typeof Attribute == 'string')
					{
						lclvarAttributes[i].Attribute = lclvarAttributes[i].Attribute.toLowerCase();
						Attribute = Attribute.toLowerCase();
					}
				}
				if (lclvarAttributes[i].Attribute == Attribute)
				{
					return lclvarAttributes[i].Value;
				}
			}
		}
		return false;
	}
//	else
//	{
//		return Attributes;
//	}
	return false;
}

function GetTableSpec(Table)
{
	var TableObject = new Object;
	TableObject.StartContentDataAt = 0;
	TableObject.ArrangementPosition = -1;

	var TableType = GetTableType(Table);

	if ((A = GetTableSpecs(Table, 'StartRowAt')) !== false)
	{
		if (Validate(A, 'NUMBER', true) === true)
		{
			TableObject.StartRowAt = A;
		}
		else
		{
			TableObject.StartRowAt = 0;
		}
	}
	else
	{
		if ($(Table.rows[0]).hasClass('HeaderTableClass'))
		{
			TableObject.StartRowAt = 1;
		}
		else
		{
			TableObject.StartRowAt = 0;
		}

		for (var i = TableObject.StartRowAt; i < Table.rows.length; i++)
		{
			if (!Table.rows[i].EditableRow || Table.rows[i].EditableRow == 'true')
			{
				break;
			}
			TableObject.StartRowAt++;
		}
	}

	if (GetTableSpecs(Table, 'RowsNotCheckable') || GetTableSpecs(Table, 'NoRowCheckable') || TableType == 'SIMPLECROSS')
	{
		TableObject.RowsCheckable = false;
	}
	else
	{
		TableObject.RowsCheckable = true;
		TableObject.StartContentDataAt++;
	}

	if (GetTableSpecs(Table, 'RowsNotEditable') || GetTableSpecs(Table, 'NoRowEditable'))
	{
		TableObject.RowsEditable = false;
	}
	else
	{
		TableObject.RowsEditable = true;
		TableObject.StartContentDataAt++;
	}

	if (GetTableSpecs(Table, 'NonArrangementic') || (TableObject.RowsEditable + TableObject.RowsCheckable + 1 > Table.rows[0].cells[0].colSpan) || TableType == 'SIMPLECROSS')
	{
		TableObject.Arrangable = false;
	}
	else
	{
		TableObject.Arrangable = true;
		TableObject.ArrangementPosition = TableObject.RowsCheckable + 0;
		TableObject.StartContentDataAt++;
	}

	return TableObject;
}
/*
function SetCellValue(Options){
	if (Options.id){
		this.id = Options.id;
	} 
	if (Options.innerHTML){
		this.innerHTML = Options.innerHTML;
	} 
}
*/
function TableLayerLoader(ID, Type, Object) {
	Object = $(Object);
	FreezeFrame();
	switch(Type.toLowerCase()){
		case 'element':
			var lElement = $(ID);
			if (lElement){
//				lElement = lElement.clone(true, true);
//				lElement.id = 'cloned_' + lElement.id;
//				var lLayer = new Element('div', {'styles': {'position': 'absolute', 'z-Index': FreezerRoof + 1, 'cursor': 'pointer'}}),
//				lElement.setStyles(lElement.getCoordinates())
				lElement.setStyles({/*'left': 100, 'top': 100*/})
				.setStyles({'position': 'absolute', 'z-Index': FreezerRoof + 1, 'cursor': 'pointer'});
				if (!DragableLayers[lElement.id]){
					DragableLayers[lElement.id] = {
						'onStart': function(el) {
							el.setStyle('opacity', 0.5);
						},
						'onDrag': function(el) {
							var epl, ew, wsl, wsr, ept, eh, wst, wsb;
							if ((epl = parseInt(el.getStyle('left'))) < (wsl = parseInt(window.getScrollLeft())))
							{
								el.setStyle('left', wsl);
							}
							if ((epl + (ew = parseInt(el.getStyle('width')))) > (wsr = wsl + parseInt(document.documentElement.clientWidth)))
							{
								el.setStyle('left', wsr - ew);
							}
							if ((ept = parseInt(el.getStyle('top'))) < (wst = parseInt(window.getScrollTop())))
							{
								el.setStyle('top', wst);
							}
							if ((ept + (eh = parseInt(el.getStyle('height')))) > (wsb = wst + parseInt(document.documentElement.clientHeight)))
							{
								el.setStyle('top', wsb - eh);
							}
							window.status = "el.({left: " + epl + ", top: " + epl + ", width: " + ew + ", height: " + eh + "}) + d.({top: " + wst + ", left: " + wsl + ", right: " + wsr + ", bottom: " + wsb + "})";
						},
						'onComplete': function(el) {
							el.setStyle('opacity', 1);
						}
					}
					var h;
					if (h = $(ID + '_Handle')){
						DragableLayers[lElement.id].handle = h;
						DragableLayers[lElement.id].modifiers = {'x': 'left', 'y': 'top'}; 
					}
					//alert(DragableLayers[lElement.id].onStart + ' ' + DragableLayers[lElement.id].onComplete);
					DragableLayers[lElement.id] = new Drag(lElement, DragableLayers[lElement.id]);
				}
				lElement.fireEvent('call', {Value: Object.id, Caller: Object});

//				lLayer.adopt(lElement);
//				Object.adopt(lLayer);
				lElement.setStyle('visibility', 'visible');
				CenteralizeLayer(lElement);
//				lElement.scrollIntoView(true);
			}
			break;
	}
}
//-----------------End----------------------
