
if(!window.$get)eval("function $get(ID){return document.getElementById(ID);}");
document.write("<scr"+"ipt language=\"javascript\" src=\"AutoInterface/Common.js\"></scr"+"ipt>");
document.write("<scr"+"ipt language=\"javascript\" src=\"AutoInterface/FormView.js\"></scr"+"ipt>");
document.write("<scr"+"ipt language=\"javascript\" src=\"AutoInterface/Grid.js\"></scr"+"ipt>");
function GridParams()
{
	this.CPage = 1;
	this.OrderBy = null;
	this.PageSize = 5;
	this.ActionName = null;
	this.ActionValue = null;
}

////AutoInterface Class - Start////////////////

function AutoInterFace(oName,InterfaceType,PrimaryField,FieldList,ViewRemoteMethod)
{
	////Public Property
	this.oName = oName;
	this.InterfaceType = InterfaceType;
	this.PrimaryField = "";
	if(PrimaryField !=null || PrimaryField !="")this.PrimaryField = PrimaryField;
	this.FieldList = FieldList;
	this.ViewRemoteMethod = null;
	if(ViewRemoteMethod != null || ViewRemoteMethod != "")this.ViewRemoteMethod = ViewRemoteMethod;
	this.Captions = "";
	this.RequiredFieldValidation="";
	this.CostFieldValidation="";
	this.IntegerFieldValidation="";
	this.DecimalFieldValidation="";
	this.CompareFieldValidation="";
	this.EmailFieldValidation="";
	this.UserNameFieldValidation="";
	this.AlphabeticFieldValidation="";
	this.RemoveHtmlEncode = "";
	
	////Public Method
	this.RenderInterFace = RenderInterFace;
	this.CustomFieldValidation = Auto_CustomFieldValidation;
	this.ValueCollection = Auto_ValueCollection;
	this.SaveRemoteMethod = Auto_SaveRemoteMethod;
	this.ControlString = Auto_ControlString;
	this.SetFieldType = Auto_SetFieldType;
	this.SetFieldProperty = Auto_SetFieldProperty;
	this.GridOptions = GridOptions;
	this.CheckBoxColumn = Auto_CheckBoxColumn;
	this.ChangeModeLinks = ChangeModeLinks;
	this.DataListView = Auto_DataListView;
	this.DetailsView = Auto_DetailsView;
	this.RemoveFieldOption = RemoveFieldOption;
	this.FiltersControl = Auto_FiltersControl;
	this.PagingRecordCountMethod = Auto_PagingRecordCountMethod;
	this.SetFieldTemplateString = SetFieldTemplateString;
	this.SetFileUploadType = Auto_SetFileUploadType;
	this.Cancel = Cancel;
	this.Save = Save;
	this.Add = Add;
	this.Edit = Edit;
	this.Delete = Delete;
	this.ServerCentric = ServerCentric;
	this.SetFieldCaption = Auto_SetFieldCaption;
	this.RegularExpressionValidation = Auto_RegularExpressionValidation;
	this.SetEditorType = Auto_SetEditorType;
	this.SetFieldPriority = Auto_SetFieldPriority;
	//this.ConditionalVisibility = Auto_ConditionalVisibility;
	
	////Private Propery
	
	this.GridObj = new Grid(oName+".GridObj",new GridParams());
	this.FormObj = new FormView(oName+".FormObj");
	if(InterfaceType==0||InterfaceType==3)this.GridObj.AddNewLink = "<a href=\"javascript:"+oName+".Add();\">Add New</a>";
	this.Runat = "client";
	this.ObjForm = null;
	this.RefetchOnClose = false;
	
			
	////Private Method
	this.SetValidation = SetValidation;
	this.SetGridFields = SetGridFields;
	this.UpdateGrid = UpdateGrid;
	this.RefetchGrid = RefetchGrid;
	this.RefetchFilter = RefetchFilter;
	this.SetFormViewOnly = SetFormViewOnly;
	this.Form_Submit = Form_Submit;
	
	this.Server_Save = Server_Save;
	this.Server_SaveSubmit = Server_SaveSubmit;
	this.Server_Edit = Server_Edit;
	this.Server_Delete = Server_Delete;
	this.Server_Sort = Server_Sort;
	this.Server_ChangePageSize = Server_ChangePageSize;
	this.Server_Navigation = Server_Navigation;
	this.Server_CheckBoxAction = Server_CheckBoxAction;
	this.GetActionValueString = GetActionValueString;
	this.PostBack_onChange = PostBack_onChange;
	//this.ValueCollectionSuccessEvent = ValueCollectionSuccessEvent;
}

function RenderInterFace(ViewContainerObject,AddEditContainerObject,RenderMode,RecordID)
{
	switch(this.InterfaceType)
	{
		case 1: 
				///Grid Only
				if(IsNull(ViewContainerObject))alert("RenderInterFace is missing Container object");
				else
				{
					this.GridObj.Fields = this.FieldList;
					//this.GridObj.Captions = this.Captions;
					this.GridObj.RemoveHtmlEncode = this.RemoveHtmlEncode;
					this.GridObj.RemoteMethod = this.ViewRemoteMethod;
					this.SetValidation(this.GridObj);
					this.GridObj.OutputToContainer(ViewContainerObject);
				}
				break;
		case 2: 
				///Form Only
				this.FormObj.RemoveHtmlEncode = this.RemoveHtmlEncode;
				this.SetFormViewOnly(AddEditContainerObject,RenderMode,RecordID);
				break;
		case 0:
		case 3: 
				if(IsNull(ViewContainerObject) || (!this.FormObj.IsDetailsView && IsNull(AddEditContainerObject)))alert("RenderInterFace is missing Container object");
				else
				{
					//if(this.FormObj.RemoveFromView != "")this.SetGridFields();
					//else
					//{
						//this.GridObj.Fields = this.FieldList;
						//this.GridObj.Captions = this.Captions.replace(/\*/g,"");
					//}
				    this.SetGridFields();
					this.FormObj.Fields = this.FieldList;
					//this.FormObj.Captions = this.Captions;
					this.GridObj.RemoveHtmlEncode = this.RemoveHtmlEncode;
					this.SetValidation(this.FormObj);
					if(!IsNull(AddEditContainerObject))this.FormObj.Container = AddEditContainerObject;
					this.GridObj.RemoteMethod = this.ViewRemoteMethod;
					this.FormObj.Container.style.display = "none";
					//this.GridObj.AddNewLink = "<a href=\"javascript:"+this.oName+".FormObj.RenderAddMode();\" >Add New</a>";
					this.GridObj.OutputToContainer(ViewContainerObject);
				}
				break;
	}
}
function ServerCentric(ObjForm,Value,ViewStateValue)
{
    this.Runat = "server";
    this.ObjForm = ObjForm;
	var HF = "<input type=\"hidden\" name=\"prth_action_"+this.oName+"\" id=\"prth_action_"+this.oName+"\" value=\"\" ><input type=\"Hidden\" name=\"prth_value_"+this.oName+"\" id=\"prth_value_"+this.oName+"\" value=\""+Value+"\" ><input type=\"hidden\" name=\"prth_viewstate_"+this.oName+"\" id=\"prth_viewstate_"+this.oName+"\" value=\""+ViewStateValue+"\" >";
	if(this.InterfaceType == 2)this.FormObj.HiddenFields=HF;
	else this.GridObj.HiddenFields=HF;
	//this.GridObj.HiddenFields=HF;
	this.Save = this.Server_Save;
	this.Delete = this.Server_Delete;
	if(this.InterfaceType!=1)
	{
		this.Edit = this.Server_Edit;
		this.FormObj.ViewStateValue = ViewStateValue;
	}
	else this.GridObj.ViewStateValue = ViewStateValue;
	this.GridObj.Sorting = this.Server_Sort;
	this.GridObj.ChangePageSize = this.Server_ChangePageSize;
	this.GridObj.Navigation = this.Server_Navigation;
	this.GridObj.TakeAction = this.Server_CheckBoxAction;
	
}
function SetGridFields()
{
	if(this.FormObj.RemoveFromView != "")
	{
		var RemoveFromGrid = ","+this.FormObj.RemoveFromView+",";
		var FieldListArray = this.FieldList.split(",");
		//21/1	var CaptionListArray = this.Captions.split(",");
		for(i=0; i < FieldListArray.length; i++)
		{
			if(RemoveFromGrid.indexOf(","+FieldListArray[i]+",") == -1)
			{
				if(this.GridObj.Fields!="")this.GridObj.Fields += ",";
				this.GridObj.Fields += FieldListArray[i];
				//21/1	if(CaptionListArray.length > i){if(this.GridObj.Captions!="")this.GridObj.Captions += ",";this.GridObj.Captions += CaptionListArray[i].replace(/\*/g,"");}
			}
		}
	}
	else
	{
		this.GridObj.Fields = this.FieldList;
	}
}
function Auto_SetFieldPriority(Fields,Template)
{
    if(IsNull(Template) || IsNull(Fields))alert("SetFieldPriority required Template name and Fields");
    else if(this.InterfaceType!=1)
    {
        var FieldArray = this.FieldList.split(",");
        var str = ","+Fields+",";
        for(i=0;i<FieldArray.length;i++)
        {
            if(str.indexOf(","+FieldArray[i]+",") == -1)
            {
                Fields = Fields+","+FieldArray[i];
            }
        }
        this.FormObj.PriorityArray[Template] = Fields;
    }
}
function SetFormViewOnly(AddEditContainerObject,RenderMode,RecordID)
{
	if(IsNull(RenderMode))alert("Render Mode is missing");
	else if(!this.FormObj.IsDetailsView && IsNull(AddEditContainerObject))alert("Container is missing");
	else
	{
		this.FormObj.Fields = this.FieldList;
		this.FormObj.Captions = this.Captions;
		if(!IsNull(AddEditContainerObject))this.FormObj.Container = AddEditContainerObject;
		if(RenderMode=="Add")
		{
			this.SetValidation(this.FormObj);
			this.FormObj.RenderAddMode();
		}
		else if(RenderMode =="Edit" || RenderMode == "View")
		{
			if(IsNull(this.ViewRemoteMethod))alert("Parameter Remotemethod is missing");
			else if(IsNull(RecordID) && this.Runat=="client")alert("Parameter RecordID is missing");
			else
			{
				this.FormObj.RemoteMethod = this.ViewRemoteMethod;
				if(RenderMode == "Edit")
				{
					this.SetValidation(this.FormObj);
					this.FormObj.RenderEditMode(RecordID);
				}
				else this.FormObj.RenderViewMode(RecordID);
			}
		}
	}
}
function Auto_SetFieldCaption(FieldList,CaptionList,Template)
{
	if(this.InterfaceType==1)this.GridObj.SetFieldCaption(FieldList,CaptionList,"View");
	else if(this.InterfaceType==2)this.FormObj.SetFieldCaption(FieldList,CaptionList,Template);
	else
	{
		this.FormObj.SetFieldCaption(FieldList,CaptionList,Template);
		if(Template!="Add" && Template!="Edit")
		{
			CaptionList = CaptionList.replace(/\*/g,"");
			this.GridObj.SetFieldCaption(FieldList,CaptionList,"View");
		}
	}
}
function Auto_SetFileUploadType(FieldName,sitepath,sessionID,action,userID,doctypeID,BrowseBtn,ReuploadBtn,UsedFor,SupportedExtensions,MaxFileSize)
{
    if(this.InterfaceType == 1)this.GridObj.SetFileUploadType(FieldName,sitepath,sessionID,action,userID,doctypeID,BrowseBtn,ReuploadBtn,UsedFor,SupportedExtensions,MaxFileSize);
	else this.FormObj.SetFileUploadType(FieldName,sitepath,sessionID,action,userID,doctypeID,BrowseBtn,ReuploadBtn,UsedFor,SupportedExtensions,MaxFileSize);
}
function Auto_SetEditorType(FieldName,Width,Height)
{
	if(this.InterfaceType == 1)this.GridObj.SetEditorType(FieldName,Width,Height);
	else this.FormObj.SetEditorType(FieldName,Width,Height);
}
function Auto_FiltersControl(FormObject,EventFields)
{
	this.GridObj.FiltersControl(FormObject,EventFields);
}
function Auto_CustomFieldValidation(FieldName,FuncName)
{
	if(this.InterfaceType == 1)this.GridObj.CustomFieldValidation(FieldName,FuncName);
	else this.FormObj.CustomFieldValidation(FieldName,FuncName);
}
function Auto_RegularExpressionValidation(FieldName,Expression)
{
	if(this.InterfaceType == 1)this.GridObj.RegularExpressionValidation(FieldName,Expression);
	else this.FormObj.RegularExpressionValidation(FieldName,Expression);
}
function Auto_ValueCollection(FieldName,ValueCollectionWebMethodObject,RefetchFlag)
{
	if(this.InterfaceType == 1)this.GridObj.ValueCollection(FieldName,ValueCollectionWebMethodObject,RefetchFlag);
	else if(this.InterfaceType == 2)this.FormObj.ValueCollection(FieldName,ValueCollectionWebMethodObject,RefetchFlag);
	else
	{
		//this.FormObj.FieldValueCollectionArray = this.GridObj.FieldValueCollectionArray;this.FormObj.ReFetchArray = this.GridObj.ReFetchArray;
		this.FormObj.ValueCollection(FieldName,ValueCollectionWebMethodObject,RefetchFlag);
		this.GridObj.ValueCollection(FieldName,ValueCollectionWebMethodObject,RefetchFlag);
	}
}
//function Auto_ConditionalVisibility(ConditionalField,SourceField,EventName,ValueList)
//{
//    if(this.InterfaceType==1)this.GridObj.SetFieldProperty(SourceField,EventName,"Visibility_change('"+ConditionalField+"','"+ValueList+"',this)");
//    else this.FormObj.SetFieldProperty(SourceField,EventName,"Visibility_change('"+ConditionalField+"','"+ValueList+"',this)");
//}
//function Visibility_change(FieldName,ValueList,obj)
//{
//    ValueList = "|"+ValueList+"|";
//    if(ValueList.indexOf("|"+obj.value+"|")>-1)$get(FieldName).style.display = "none";
//    else $get(FieldName).style.display = "inline";
//}
function Auto_SaveRemoteMethod(ClassName,EditRemoteMethod,SaveRemoteMethod)
{
	if(IsNull(ClassName))
	{
		alert("SaveRemoteMethod is missing parameter ClassName"); 
		return;
	}
	switch(this.InterfaceType)
	{
		case 1:
			if(IsNull(SaveRemoteMethod) && this.Runat=="client")alert("SaveRemoteMethod is missing parameter SaveMethod"); 
			else
			{
				this.GridObj.ObjectClassName = ClassName;
				this.GridObj.AddEditRemoteMethod = SaveRemoteMethod;
			}	
			break;
		case 0:
		case 2:
		case 3:
			this.FormObj.ObjectClassName = ClassName;
			this.FormObj.RemoteMethod = EditRemoteMethod;
			this.FormObj.AddEditRemoteMethod = SaveRemoteMethod;
			break;
	}
}
function Auto_ControlString(FieldName,Str)
{
	if(this.InterfaceType==1)this.GridObj.ControlString(FieldName,Str);
	else this.FormObj.ControlString(FieldName,Str);
}
function Auto_SetFieldType(FieldName,TypeName,TemplateName)
{
	if(this.InterfaceType == 1)this.GridObj.SetFieldType(FieldName,TypeName,TemplateName);
	else this.FormObj.SetFieldType(FieldName,TypeName,TemplateName);
}
function Auto_SetFieldProperty(FieldName,PropertyName,PropertyValue,TemplateName)
{
	
	if(PropertyName.toLowerCase() == "target")
	{
	    var ObjName = "";
	    if(this.InterfaceType == 1)ObjName = this.GridObj.oName;
	    else ObjName = this.FormObj.oName;
		this.SetFieldProperty(PropertyValue,"onChange",ObjName+".Target_onChange('"+FieldName+"',this.value)",TemplateName);
	    this.SetFieldProperty(FieldName,"disabled","true",TemplateName);
	}
	else if(PropertyName.toLowerCase() == "postback" && PropertyValue == "true")
	{
		if(this.InterfaceType == 1)this.GridObj.ViewState = true;
		else this.FormObj.ViewState = true;
		this.SetFieldProperty(FieldName,"onChange",this.oName+".PostBack_onChange('"+FieldName+"')",TemplateName);
	}
	if(this.InterfaceType == 1)this.GridObj.SetFieldProperty(FieldName,PropertyName,PropertyValue,TemplateName);
	else this.FormObj.SetFieldProperty(FieldName,PropertyName,PropertyValue,TemplateName);
}

function SetFieldTemplateString(FieldName,Str)
{
	if(this.InterfaceType == 1)this.GridObj.SetFieldNotes(FieldName,Str);
	else this.FormObj.SetFieldNotes(FieldName,Str);
}
function GridOptions(IsVertical,SortFieldList,ColumnWidth,Align,VAlign,ShowHeader,HeaderColSpan)
{
	if(IsVertical != "")this.GridObj.VerticalGrid = IsVertical;
	if(SortFieldList != null)this.GridObj.SortFieldList = SortFieldList;
	if(ColumnWidth != null)this.GridObj.ColumnWidth = ColumnWidth;
	if(Align != null)this.GridObj.Align = Align;
	if(VAlign != null)this.GridObj.VAlign = VAlign;
	if(ShowHeader != null)this.GridObj.Header = ShowHeader;
	if(HeaderColSpan != null)this.GridObj.HeaderColspan = HeaderColSpan;
}
function Auto_DataListView(TemplateContainerObject,Columns,Direction,DataListTitle)
{
	this.GridObj.DataListView(TemplateContainerObject,Columns,Direction,DataListTitle);
}
function Auto_CheckBoxColumn(PrimaryField,Position,ValueList,CaptionList,DropDownCaption,ButtonCaption,SuccessMessage)
{
	this.GridObj.CheckBoxColumn(PrimaryField,Position,ValueList,CaptionList,DropDownCaption,ButtonCaption,SuccessMessage);
}
function Auto_PagingRecordCountMethod(TotalRecordCountMethod,PagingStyle,PagingCaption)
{
	this.GridObj.PagingRecordCountMethod(TotalRecordCountMethod,PagingStyle,PagingCaption);
}

function ChangeModeLinks(AddModeAction,EditModeAction,ViewModeAction,AddNewLink)
{																
	if(AddModeAction != null)this.FormObj.AddModeAction = AddModeAction;
	if(EditModeAction != null)this.FormObj.EditModeAction = EditModeAction;
	if(ViewModeAction != null)this.FormObj.ViewModeAction = ViewModeAction;
	if(AddNewLink != null)this.GridObj.AddNewLink = AddNewLink;
}
function Auto_DetailsView(ContainerObject,TitleName,TitleClass,SubContainerClass,SubTitleClass,NotesText,ActionContainerClass)
{
	this.FormObj.DetailsView(ContainerObject,TitleName,TitleClass,SubContainerClass,SubTitleClass,NotesText,ActionContainerClass);
}
function RemoveFieldOption(RemoveFromAdd,RemoveFromEdit,RemoveFromView)
{
	if(RemoveFromAdd != null)this.FormObj.RemoveFromAdd = RemoveFromAdd;
	if(RemoveFromEdit != null)this.FormObj.RemoveFromEdit = RemoveFromEdit;
	if(RemoveFromView != null)this.FormObj.RemoveFromView = RemoveFromView;
}
function SetValidation(ControlObj)
{
	ControlObj.RequiredFieldValidation = this.RequiredFieldValidation;
	ControlObj.CostFieldValidation = this.CostFieldValidation;
	ControlObj.IntegerFieldValidation = this.IntegerFieldValidation;
	ControlObj.DecimalFieldValidation = this.DecimalFieldValidation;
	ControlObj.CompareFieldValidation = this.CompareFieldValidation;
	ControlObj.EmailFieldValidation = this.EmailFieldValidation;
	ControlObj.UserNameFieldValidation = this.UserNameFieldValidation;
	ControlObj.AlphabeticFieldValidation = this.AlphabeticFieldValidation;
}
function Cancel()
{
	
	switch(this.InterfaceType)
	{
		case 1:
			this.GridObj.CancelInLine();
			break;
		case 0:
			if(this.FormObj.Container!=null)
			{
				if(this.Runat=="server")
				{
					var value = this.GetActionValueString("","");
					this.Form_Submit("",value);
				}
				else
				{
					this.FormObj.Container.style.display = "none";
					this.GridObj.Container.style.display = "inline";
					if(this.GridObj.ObjFilterForm!=null)this.GridObj.ObjFilterForm.Container.style.display = "inline";
					this.FormObj.message = "";
					if(this.RefetchOnClose)
					{
						this.RefetchGrid("");
						this.RefetchOnClose = false;
					}
				}
				
			}
			else alert("Missing ContainerName Parameter");
			break;
		case 3:
			if(this.FormObj.Container!=null)
			{
				this.FormObj.Container.style.display = "none";
				this.FormObj.message = "";
			}
			else alert("Missing ContainerName Parameter");
			break;
		case 2:
			if(this.Runat=="server")
			{
				//$get("prth_action_"+this.oName).value = "";
				var value = this.GetActionValueString("","");
				if(this.FormObj.ViewModeAction!="")value = value+"|View";
				this.Form_Submit("",value);
				//$get(this.ObjForm).submit();
			}
			break;
			///Reset the form
	}
	
}
function Edit(RecordIndex)
{
	switch(this.InterfaceType)
	{
		case 1:
			this.GridObj.EditInLine(RecordIndex);
			break;
		case 2:
			if(IsNull(this.ViewRemoteMethod))alert("Parameter Remotemethod is missing");
			else this.FormObj.RemoteMethod = this.ViewRemoteMethod;
			this.SetValidation(this.FormObj);
			this.FormObj.RenderEditMode(RecordIndex);
			//this.SetFormViewOnly(this.FormObj.Container,"Edit",RecordIndex);
			break;
		case 0:
			if(IsNull(this.PrimaryField))alert("Missing PrimaryField Parameter");
			else if(IsNull(this.FormObj.Container))alert("Missing ContainerName Parameter");
			else
			{
				var RecordID = this.GridObj.DataObjectList[RecordIndex][this.PrimaryField];
				this.GridObj.EditRecordIndex = RecordIndex;
				
				this.FormObj.RenderEditMode(RecordID);
				this.FormObj.Container.style.display = "inline";
				this.GridObj.Container.style.display = "none";
				if(this.GridObj.ObjFilterForm!=null)this.GridObj.ObjFilterForm.Container.style.display = "none";
			}
			break;
		case 3:
			if(IsNull(this.PrimaryField))alert("Missing PrimaryField Parameter");
			else if(IsNull(this.FormObj.Container))alert("Missing ContainerName Parameter");
			else
			{
				var RecordID = this.GridObj.DataObjectList[RecordIndex][this.PrimaryField];
				this.GridObj.EditRecordIndex = RecordIndex;
				this.FormObj.RenderEditMode(RecordID);
				this.FormObj.Container.style.display = "inline";
			}
			break;
	}
}
function Add()
{
	
	switch(this.InterfaceType)
	{
		case 1:
			this.GridObj.AddInLine();
			break;
		case 2:
			this.SetValidation(this.FormObj);
			this.FormObj.RenderAddMode();
			//this.SetFormViewOnly(this.FormObj.Container,"Add");
			break;
		case 0:
			if(this.FormObj.Container!=null)
			{
				this.GridObj.Container.style.display = "none";
				if(this.GridObj.ObjFilterForm!=null)this.GridObj.ObjFilterForm.Container.style.display = "none";
				this.FormObj.Container.style.display = "inline";
				this.FormObj.RenderAddMode();
			}
			else alert("Missing ContainerName Parameter");
			break;
		case 3:
			if(this.FormObj.Container!=null)
			{
				this.FormObj.Container.style.display = "inline";
				this.FormObj.RenderAddMode();
			}
			else alert("Missing ContainerName Parameter");
			break;
	}
	
}
function Save(SaveMessage)
{
	switch(this.InterfaceType)
	{
		case 1:
			this.GridObj.SaveInLine(SaveMessage);
			break;
		case 2:
			this.FormObj.FormViewSave(SaveMessage);
			break;
		case 0:
			if(this.FormObj.CurrentMode == "Edit")
			{
			    this.FormObj.After_Save = this.UpdateGrid;
			    if(this.GridObj.ReFetchArray.length > 0)this.FormObj.After_AddEditSuccess = this.RefetchGrid;
				else this.FormObj.After_AddEditSuccess = this.RefetchFilter;
			}
			else
			{
			    this.FormObj.After_Save = null;
			    this.FormObj.After_AddEditSuccess = null;
				
			}
			var validate = this.FormObj.FormViewSave(SaveMessage);
			if(this.FormObj.CurrentMode == "Edit" && validate == 1)this.Cancel();
			else if(this.FormObj.CurrentMode == "Add" && validate==1)this.RefetchOnClose = true;      //Successfully added without validated
			
			//alert(this.GridObj.ObjFilterForm.oName);
			
			
			break;
		case 3:
			this.FormObj.After_AddEditSuccess = this.RefetchGrid;
			this.FormObj.After_Save = this.UpdateGrid;
			this.FormObj.FormViewSave(SaveMessage);
			
		//	if(this.GridObj.ObjFilterForm!=null && validate==1)this.GridObj.ObjFilterForm.RenderAddMode();
			break;
	}
}
function Delete(RecordID,Index)
{
	if(this.InterfaceType != 2)this.GridObj.DeleteInLine(RecordID,Index);
}
function RefetchFilter()
{
    var objAuto = get_parent_obj(this.oName);
    if(objAuto.GridObj.ObjFilterForm!=null && objAuto.GridObj.ObjFilterForm.ReFetchArray.length>0)objAuto.GridObj.ObjFilterForm.RefetchProcess();
}
function RefetchGrid(result)
{
	var objAuto = get_parent_obj(this.oName);
	
	var objContextParam=new ContextParam();
	objContextParam.Object=objAuto.GridObj;
	objContextParam.Mode=objAuto.FormObj.CurrentMode;
	objAuto.GridObj.AddEditRemoteMethod_Onsuccess("",objContextParam);
	objAuto.RefetchFilter();
	return true;
}
function UpdateGrid()
{
	var objAuto = get_parent_obj(this.oName);
	if(objAuto.FormObj.CurrentMode == "Add")
	{
		var size = objAuto.GridObj.DataObjectList.length;
		if(!eval("window."+objAuto.FormObj.ObjectClassName))eval("function " + objAuto.FormObj.ObjectClassName + "(){}");
		objAuto.GridObj.DataObjectList[size] = eval("new "+objAuto.FormObj.ObjectClassName+"()");
		//for(i in objAuto.FormObj.DataObjectList[objAuto.FormObj.EditRecordIndex])
		//{
		//	objAuto.GridObj.DataObjectList[size][i] = objAuto.FormObj.DataObjectList[objAuto.FormObj.EditRecordIndex][i];
		//}
		objAuto.GridObj.DataObjectList[size] = objAuto.FormObj.DataObjectList[objAuto.FormObj.EditRecordIndex];
	}
	else if(objAuto.FormObj.CurrentMode == "Edit")
	{
		//for(i in objAuto.FormObj.DataObjectList[objAuto.FormObj.EditRecordIndex])
		//{
		//	objAuto.GridObj.DataObjectList[objAuto.GridObj.EditRecordIndex][i] = objAuto.FormObj.DataObjectList[objAuto.FormObj.EditRecordIndex][i];
		//}
		objAuto.GridObj.DataObjectList[objAuto.GridObj.EditRecordIndex]= objAuto.FormObj.DataObjectList[objAuto.FormObj.EditRecordIndex];
		objAuto.FormObj.Container.style.display = "none";
		objAuto.GridObj.message = objAuto.FormObj.message; //only when form gets close after updating
		objAuto.FormObj.message = "";
		
	}
	
	objAuto.GridObj.EditRecordIndex = -1;
	objAuto.GridObj.DrawGrid();
	return true;
}
function PostBack_onChange(FieldName)
{
	var RecordID = "";
	if(this.InterfaceType == 1 && this.GridObj.CurrentMode=="Edit")RecordID = this.GridObj.EditRecordIndex;
	else if(this.InterfaceType!=1 && this.FormObj.CurrentMode =="Edit")RecordID = this.FormObj.DataObjectList[this.FormObj.EditRecordIndex][this.PrimaryField];
		
	var ObjControl = null;
	if(this.InterfaceType==1)ObjControl = this.GridObj;
	else ObjControl = this.FormObj;
	
	var value = this.GetActionValueString("ActionName|ActionValue",FieldName+"|"+RecordID);
	value = value+"|"+ObjControl.CurrentMode;
	
	//ViewState
	var FieldArray = ObjControl.Fields.split(",");
	ObjControl.ViewStateValue = "";
	for(i=0;i<FieldArray.length;i++)
	{
		if(i!=0)ObjControl.ViewStateValue += "|";
		if($get(FieldArray[i]))ObjControl.ViewStateValue += $get(FieldArray[i]).value;
	}
	$get("prth_viewstate_"+this.oName).value = ObjControl.ViewStateValue;
	//End ViewState
	
	this.Form_Submit("PostBack",value);
}

function Server_Save(Message)
{
	if(this.InterfaceType==1)
	{
		this.GridObj.After_Save = this.Server_SaveSubmit;
		this.GridObj.SaveInLine(Message);
	}
	else
	{
		this.FormObj.After_Save = this.Server_SaveSubmit;
		this.FormObj.FormViewSave(Message);
	}
}
function Server_SaveSubmit()
{
	var obj = get_parent_obj(this.oName);
	if(obj.GridObj.CurrentMode=="Add" || obj.FormObj.CurrentMode=="Add")
	{
		var value = obj.GetActionValueString("ActionValue","0");
		obj.Form_Submit("Insert",value);
	}
	else if(obj.GridObj.CurrentMode=="Edit" || obj.FormObj.CurrentMode=="Edit")
	{
		var RecordID;
		if(obj.InterfaceType==1)RecordID = obj.GridObj.DataObjectList[obj.GridObj.EditRecordIndex][obj.PrimaryField];
		else RecordID = obj.FormObj.DataObjectList[obj.FormObj.EditRecordIndex][obj.PrimaryField];
		
		var value = obj.GetActionValueString("ActionValue",RecordID);
		obj.Form_Submit("Update",value);
	}
}
function Server_Delete(RecordID,Index)
{
	if(this.GridObj.DataObjectList.length==1)$get("prth_value_"+this.oName).value = this.GetActionValueString("CPage","1");
	var value = this.GetActionValueString("ActionName|ActionValue","Delete|"+RecordID);
	this.Form_Submit("GridAction",value);
}
function Server_Edit(Index)
{
	var RecordID;
	
	if(this.InterfaceType==3 || this.InterfaceType==0)
	{
		RecordID = this.GridObj.DataObjectList[Index][this.PrimaryField];
	}
	else if(this.InterfaceType==2)RecordID = Index;//this.FormObj.DataObjectList[this.FormObj.EditRecordIndex][this.PrimaryField];
	var value = this.GetActionValueString("ActionValue",RecordID);
	this.Form_Submit("Edit",value);
}
function Server_Sort(str)
{
	var obj = get_parent_obj(this.oName);
	var value = obj.GetActionValueString("OrderBy",str);
	obj.Form_Submit("GridAction",value);
}
function Server_ChangePageSize(PageSize)
{
	var obj = get_parent_obj(this.oName);
	var value = obj.GetActionValueString("PageSize",PageSize);
	obj.Form_Submit("GridAction",value);
}
function Server_Navigation(PageNumber)
{
	var obj = get_parent_obj(this.oName);
	var value = obj.GetActionValueString("CPage",PageNumber);
	obj.Form_Submit("GridAction",value);
}
function Server_CheckBoxAction()
{
	var Action = "";
	var obj = get_parent_obj(this.oName);
	if(this.CBC_ActionNameList != "")Action=$get(this.oName+"_SelectAction").value;
	{
		var Fieldobj = document.getElementsByName(this.oName+"_CheckBoxField");
		var SelectedRecords = "";
		for(i=0;i<Fieldobj.length;i++)
		{
			if(Fieldobj[i].checked)
			{
				if(SelectedRecords != "")SelectedRecords += ",";
				SelectedRecords += Fieldobj[i].value;
			}
		}
	}
	if(SelectedRecords != "")
	{
		var value = obj.GetActionValueString("ActionName|ActionValue",Action+"|"+SelectedRecords);
		obj.Form_Submit("GridAction",value);
	}
	else
	{
		if(this.CBC_ActionNameList != "")$get(this.oName+"_SelectAction").selectedIndex = 0;
		alert("Select Records to perform action");
	}
}

function Form_Submit(Action,Value)
{
	$get("prth_action_"+this.oName).value = Action;
	$get("prth_value_"+this.oName).value = Value; //Value String: OrderBy|CPage|PageSize|GridActionName|ActionValue|FilterListField
	if(Action!="PostBack")$get("prth_viewstate_"+this.oName).value = "";
//	eval(this.ObjForm+".submit()");
	$get(this.ObjForm).submit();
}
function GetActionValueString(ParamName,ParamValue)
{
	if($get("prth_value_"+this.oName).value!="")valuearray =  $get("prth_value_"+this.oName).value.split("|");
	else 
	{
		var defaultstr = "|1|10|||"
		valuearray = defaultstr.split("|");
	}
	switch(ParamName)
	{
		case "OrderBy":
			valuearray[3] = "OrderBy";
			valuearray[0] = ParamValue;
			break;
		case "CPage":
			valuearray[3] = "Paging";
			valuearray[1] = ParamValue;
			break;
		case "PageSize":
			valuearray[1] = "1";
			valuearray[3] = "Paging";
			valuearray[2] = ParamValue;
			break;
		case "ActionName|ActionValue":
			valuearray[3] = ParamValue.split("|")[0];
			valuearray[4] = ParamValue.split("|")[1];
			break;
		case "ActionValue":
			valuearray[4] = ParamValue;
			break;
		case "FilterListField":
			valuearray[5] = ParamValue;
			break;
	}
	//valuearray[6] = this.Server_CurrentMode;
	return valuearray[0]+"|"+valuearray[1]+"|"+valuearray[2]+"|"+valuearray[3]+"|"+valuearray[4]+"|"+valuearray[5];
}


function IsNull(FieldProperty)
{
	if(FieldProperty == null || FieldProperty =="")return true;
	else return false;
}
function get_parent_obj(OName)
{
	var objName = OName.split(".")[0];
	var objAuto = eval(objName);
	return objAuto
}

//Example For Autointerface

//this.objauto.ControlString("AlarmID","<input type=\"hidden\" id=\"AlarmID\" value=\"0\">");
//this.objauto.SetFieldType("Message","TEXTAREA");
//this.objauto.SetFieldCaption("AlarmID,Title,Message","Alarm ID:,*Title Name,* Message Name:","Edit");
//this.objauto.SetFileUploadType("Title",'<%= GlobalFunctions.GetSitePath()%>','<%=Session.SessionID.ToString() %>',"alarm_files","0","0","Browse","Re-Upload","Image","*.gif,*.jpg,*.jpeg,*.bmp,*.png","10 MB");
// this.objauto.SetFieldProperty("AlarmID","value","0");
//this.objauto.RemoveHtmlEncode = "ActionLinks";
//this.objauto.ControlString("ActionLinks","<a href=\"javascript:objauto.Save('Record saved successfully');\">Save</a> | <a href=\"javascript:objauto.Cancel();\">Cancel</a>");
// this.objauto.SetFieldProperty("AlarmID","onChange","Alarm_change(this.value)");
// this.objauto.SetFieldPriority("Title,ActionLinks,Message,AlarmID,AlarmFilesID","Edit");
//this.objauto.RequiredFieldValidation = "Title,Message";
//this.objauto.FiltersControl(objFilter.FormObj,"pk_alarm");
// this.objauto.SetFieldProperty("AlarmID","target","AlarmFilesID");
//this.objauto.SetFieldProperty("AlarmID","onclick","checkradio(this);");
//this.objauto.SetEditorType("Message","550","200");
//this.objauto.ValueCollection("AlarmFilesID",autointerface_test.ValueCollectionMethod,false);
//this.objauto.SaveRemoteMethod("Alarm",autointerface_test.FormRemoteMethod,autointerface_test.GridSaveMethod);
//this.objauto.DataListView($get("DataListContainer"),2)
//var addmode = "<input type=\"Button\" id=\"btnSave\" onclick=\"objauto.Save('Record has been successfully saved');\" value=\"Save\"> <input type=\"Button\" id=\"btnCancel\" onclick=\"objauto.Cancel();\"  value=\"Close\">";
//var editmode = "<input type=\"Button\" id=\"btnSave\" onclick=\"objauto.Save('Record has been successfully saved');\" value=\"Update\"> <input type=\"Button\" id=\"btnCancel\" onclick=\"objauto.Cancel();\"  value=\"Close\">";
//this.objauto.ChangeModeLinks(addmode,editmode);
//this.objauto.SetFieldTemplateString("AlarmFilesID","[[AlarmFilesID]]  New Alarm: [[AlarmID]]")
//this.objauto.SetFieldTemplateString("AlarmID","<table><tr valign=\"top\"><td nowrap >[[AlarmID]]</td><td nowrap> <div id=\"Title_FUI\">[[Title]]</div></td><td nowrap><div id=\"Message_FUI\">[[Message]]</div></tr></table>")
//this.objauto.RemoveFieldOption(null,null,"Message");
//this.objauto.IsServerCentric("form1");
//this.objauto.CheckBoxColumn("AlarmID",0,"0,Delete,Up,Down","Select Actions,Delete Records,Up Records,Down Records","Select Actions: ","Perform Action","Action Performed Successfully");
//this.objauto.PagingRecordCountMethod(autointerface_test.RecordCountMethod,1,"Records Per Page: ");
//this.objauto.DetailsView($get("DetailsViewContainer"),"Testing Title","","","","* Indicates Required Fields","");
//this.objauto.DataListView($get("DataListContainer"),3,0);
//this.objauto.GridOptions(false,"Title","80px,80px","right,right","top,top","1","");
//this.objauto.RenderInterFace($get("GridViewContainer"),null,"Add");

//End
