
var ttStandard_wrapper=[];
ttStandard_wrapper.count =0;
var ttStandard_state=[];
var focusElement;
var STD_DEFAULT_CURRENCY_SYMBOL = '£';
var srandardXmlHttp;
var focusSet =false;
	
String.prototype.trim = function(x) { 
  if (x=='left') 
    return this.replace(/^\s*/,''); 
  if (x=='right') 
    return this.replace(/\s*$/,''); 
  if (x=='normalize') 
    return this.replace(/\s{2,}/g,' ').trim(); 


  return this.trim('left').trim('right'); 
}	


	
function ttStandard_init(id) 
{		
	var data =eval("TT_"+id+"_Standard");
	var standard = new ttStandard_details(id,data );	
}


function ttStandard_details(id, columns)
{
	
	ttStandard_state[id]=this;			
	ttStandard_wrapper[ttStandard_wrapper.count]=id;
	this.Id = id;		
	this.DataMarshaller =columns.data.DataMarshaller;
	this.Length =columns.length;		
	if(columns.groups !=null)
		this.Groups = columns.groups;
	else
		this.Groups="";
	this.GroupTableIds = columns.tablegroups;
	this.WrapperDivId = columns.wrapperDivId;
	this.OuterTableId =columns.outerTableId;
	this.FilteredSearchStringId=columns.filteredSearchStringId;
	this.SearchString = columns.searchString;
	this.ContainsData =  Boolean(parseInt(columns.containsData));
	this.ViewName = columns.viewName;
	this.ScreenName = columns.screenName;
	this.ModuleId = columns.moduleId;
	this.PageId = columns.pageConfigId;
	this.ControlId =columns.controlConfigId;
	this.Url =columns.handlerPath;
	this.SelectFirstElement =Boolean(parseInt(columns.selectFirstElement));
	this.FocusElement = columns.focusElement;
	
	this.OnLoadHandler = columns.onLoadHandler;
	this.OnLoadHandlerParamater= columns.onLoadHandlerParamater;
	this.OnPrepareMiniSearch = columns.onPrepareMiniSearch;
	this.OnPrepareMiniSearchParameter =columns.onPrepareMiniSearchParameter;
	
	this.IsControlPostBack = Boolean(parseInt(columns.isControlPostBack));
	this.GetColumn=GetColumn;
	this.GetHiddenFieldValue =GetHiddenFieldValue;
	this.AppendHiddenFieldValue =AppendHiddenFieldValue;
	this.Tag =null;
	this.IsDirty = IsDirty;
	
	if(columns.data.DataMarshaller !="")
	{
		for( i=0;i<columns.length;i++)
		{
			if(columns.data.DataMarshaller[i].id !="")
			{
				if(document.getElementById(columns.data.DataMarshaller[i].id) !=null)
				{			
					this.DataMarshaller[i].object = document.getElementById(columns.data.DataMarshaller[i].id)	
					if(this.DataMarshaller[i].controlType==UIControlType_DropDownLov ||
						this.DataMarshaller[i].controlType==UIControlType_DropDownLovWithPostBack ) 
					{	
						var item = this.DataMarshaller[i].object.parentElement.parentElement.getElementsByTagName("input");
						if(item !=null)
								this.DataMarshaller[i].tag=item[0];
						
					}
				}
			}
			if(columns.data.DataMarshaller[i].readOnlyId !="" &&
				document.getElementById(columns.data.DataMarshaller[i].readOnlyId) !=null)
			{	
				this.DataMarshaller[i].readOnlyObject = document.getElementById(columns.data.DataMarshaller[i].readOnlyId);			
			
			}
			this.DataMarshaller[i].isUIDirty =  Boolean(parseInt(columns.data.DataMarshaller[i].isUIDirty));
			
			if(this.DataMarshaller[i].object  =="" && this.DataMarshaller[i].readOnlyObject =="")
			{
				//create a fake object
				this.DataMarshaller[i].object =new	ttStandard_HiddenControl(columns.data.DataMarshaller[i].originalValue);			
			}
		}
	}
	ttStandard_wrapper.count ++;
	
	this.Redraw =Redraw;
	this.GetRootControl=GetRootControl;

	if(this.OnLoadHandler !="")
	{
		//raise loaded event
		var functionToCall;
		var position =this.OnLoadHandler.indexOf("(");	
		
		if(position !=-1)
		{
			functionToCall =this.OnLoadHandler.replace(")",",'" + id +"','" +this.OnLoadHandlerParamater +"')");		
		}
		else
			functionToCall =this.OnLoadHandler+"('"+ id +"','" +this.OnLoadHandlerParamater +"')";	
		try
		{
			eval(functionToCall);
		}
		catch(e){}
	}
	
	this.SetFilteredSearchString=SetFilteredSearchString;
	this.ClearData =ClearData;
	
	function ClearData()
	{
		for(i=0;i<this.Length;i++)
		{
			var baseColumnDetails =this.DataMarshaller[i];
			if(Boolean(parseInt(this.DataMarshaller[i].editable)))
			{	
				switch(parseInt(this.DataMarshaller[i].controlType))
				{			
					case UIControlType_InputText:				
					case UIControlType_InputTextWithPostBack:
					case UIControlType_InputTextMultiLine: 
					case UIControlType_InputNumeric:
					case UIControlType_InputNumericWithPostBack:  
					case UIControlType_ClientControl:
					case UIControlType_Currency:
					case UIControlType_InputSearch:
					case UIControlType_InputSearchVerifier:
					case UIControlType_DropDown:
					case UIControlType_InputRadio:
					case UIControlType_ListBox:
					case UIControlType_InputBoolean:
					case UIControlType_InputBooleanWithPostBack:
					case UIControlType_InputBooleanYN:
					case UIControlType_InputBooleanYNWithPostBack:
						baseColumnDetails.object.value  = "";
						break;				
						
					case UIControlType_InputDate:
					case UIControlType_InputDateRange:				
						if(columnDetails.value !="")
						{	
							//get date 
							var dateObject =ttStandard_getDateObject(this.Id ,this.DataMarshaller[i].column);
							dateObject[0].value ="";
							dateObject[1].value ="";
							dateObject[2].value ="";
						}						
						break;					
					case UIControlType_InputTime:
					case UIControlType_InputTimeRange:
						if(columnDetails.value !="")
						{	
							//get date 
							var timeObject =ttStandard_getDateObject(this.Id,this.DataMarshaller[i].column);
							timeObject[0].value ="";
							timeObject[1].value ="";						
						}						
						break;
					case UIControlType_DropDownLov:
					case UIControlType_DropDownLovWithPostBack:
						baseColumnDetails.tag.value  = "";
						baseColumnDetails.tag.fireEvent("onchange");
						break;		
				}			
			}
			else
			{
				switch(parseInt(this.DataMarshaller[i].controlType))
				{								
					default:
						baseColumnDetails.readOnlyObject.value  = "";
						break;
				}			
			}
		}
	}
	
	function SetFilteredSearchString(searchString)
	{
		document.getElementById(this.FilteredSearchStringId).value =searchString;	
	}
	
	function Redraw()
	{
		ttStandard_RequestData(this.Id);
	}
	
	function GetRootControl()
	{
		if(document.getElementById(this.OuterTableId) !=null)
		{
			return document.getElementById(this.OuterTableId).parentElement;
		}
		else
		{
			return document.getElementById(this.WrapperDivId).parentElement;
		}
	}
	
	function GetColumn(column)
	{
		return ttStandard_getColumn(this.Id,column);
	}
	
	function AppendHiddenFieldValue(column, value)
	{
	    var control = ttStandard_getColumn(this.Id,column).object;
	    if(control !=null)
	    {
            if(control.hiddenData ==null)
            {                
                control.hiddenData =""+ value+"";
            }  
            else            
            {
                control.hiddenData=control.hiddenData+ "|" +""+ value +"";
            }
	    }
	}
	
	function GetHiddenFieldValue(column)
	{
		var control = ttStandard_getColumn(this.Id,column).object;
		var hiddenData = control.hiddenData.split('|');
		
		if(control.selectedIndex !=0)
			return hiddenData[control.selectedIndex -1];
		else
			return "";
	}
	
	function IsDirty()
	{
        var isDirty = false;
        
        var originalValue;
        var currentValue;
        var dateObject;
        var month;
        var day;
        var year;
        var hours;
        var minutes;
   
        
	    if (this.DataMarshaller)
	    {
	        var i=0;
	        while (i < this.Length && !isDirty)
	        {
				switch (parseInt(this.DataMarshaller[i].controlType))
				{			
					case UIControlType_InputText:				
					case UIControlType_InputTextWithPostBack:
					case UIControlType_InputTextMultiLine: 
					case UIControlType_InputNumeric:
					case UIControlType_InputNumericWithPostBack:  
					case UIControlType_ClientControl:
					case UIControlType_Currency:
					case UIControlType_InputSearch:
					case UIControlType_InputSearchVerifier:
					case UIControlType_DropDown:
					case UIControlType_InputRadio:
					case UIControlType_ListBox:
					case UIControlType_InputBoolean:
					case UIControlType_InputBooleanWithPostBack:
					case UIControlType_InputBooleanYN:
					case UIControlType_InputBooleanYNWithPostBack:

					case UIControlType_DropDownLov:
					case UIControlType_DropDownLovWithPostBack:

	                    if (this.DataMarshaller[i].object)
	                    {
	                        originalValue = this.DataMarshaller[i].originalValue;
	                        currentValue = this.DataMarshaller[i].object.value;
	                        if (originalValue != currentValue)
	                        {
	                            isDirty = true;
	                        }
	                    }
	                    break;
	                    
					case UIControlType_InputDate:
					case UIControlType_InputDateRange:				

	                    if (this.DataMarshaller[i].object)
	                    {
	                        dateObject = ttStandard_getDateObject(this.Id,this.DataMarshaller[i].column);
	                        originalValue = this.DataMarshaller[i].originalValue;
	                        if(dateObject)
	                        {
	                            day = dateObject[0].value;
	                            month = dateObject[1].value;
	                            year = dateObject[2].value;
	                        }
	                        if(!ttipd_equal(day, month, year,originalValue))
	                        {
	                            isDirty = true;
	                        }
	                    }
	                    break;	                    
					case UIControlType_InputTime:
					case UIControlType_InputTimeRange:
	                    if (this.DataMarshaller[i].object)
	                    {
	                        dateObject = ttStandard_getDateObject(this.Id,this.DataMarshaller[i].column);
	                        originalValue = this.DataMarshaller[i].originalValue;
	                        if(dateObject)
	                        {
	                            hour = dateObject[0].value;
	                            min = dateObject[1].value;
	                        }
	                        if(!ttinputtime_equal(hour, min, originalValue))
	                        {
	                            isDirty = true;
	                        }
	                    }
	                    break;						                    
                }	
                i++;
	        }
	    }
        return isDirty;
	}
}

function ttStandard_SetFocus(id)
{
	var state =ttStandard_state[id];
	
	if(state.FocusElement !=null)
	{
		//move focus to the control
		try
		{
			
			document.getElementById(state.FocusElement).focus();			
			ttdd_MoveToEnd(state.FocusElement);
			focusSet = true;
		}
		catch(e){}
	}
}

function ttStandard_hide(id)
{
	var state =ttStandard_state[id];	
	var root = state.GetRootControl();
	root.style.visibility ="hidden"
	root.style.display="none";
	ttlayout_ShowSelects();
}

function ttStandard_show(id)
{
	var state = ttStandard_state[id];
	var root  = state.GetRootControl();
	root.style.visibility ="visible";
	root.style.display ="";	
	ttlayout_ShowSelects();              
}		

//
// Hide a column (including label). Very basic function to
// simply hide - does not rearrange remaining columns etc
// Probably only works on very basic columns too!
//
function ttStandard_hideColumn(id, column)
{
    var colObj = ttStandard_getColumn(id, column);
    if(colObj)
    {
		// Label
        var label = ttStandard_GetLabel(colObj.id.replace(/\:/g,'_'));
        if(label)
        {
            //hide and stop hidden item from disrupting flow
            label.style.visibility = "hidden";
            label.style.display = "none"; 
        }
        // Content
        var obj=document.getElementById(colObj.readOnlyId);
        if(obj)
        {
            obj = ttStandard_GetTableCellElement(obj);
        }
        
        if(obj)
        {
            //hide and stop hidden item from disrupting flow
            obj.style.visibility = "hidden";
            obj.style.display = "none";
            obj.className = "";

            // Drag object (in-flight editing)
            if (obj.id.length > 3) {
                var drgId = "drg" + obj.id.substr(3, obj.id.length - 3);
                var drgObj = document.getElementById(drgId);
                if (drgObj) 
                {
                    //hide and stop hidden item from disrupting flow
                    drgObj.style.visibility = "hidden";
                    drgObj.style.display = "none";
                }
            }
        }
    }
}

function ttStandard_GetLabel(id)
{
    var labels = document.getElementsByTagName("LABEL");
    var label = null;
    if(labels)
    {
        for(var i=0;i<labels.length;i++)
        {
            if(labels[i].htmlFor == id)
            {
                label = labels[i].parentElement;
                break;
            }
        }
    }
    return label;
}

function ttStandard_GetTableCellElement(obj)
{
    var objTable = null;
    
    if(obj!=null && obj.tagName != "TD" && obj.parentElement)
    {
        objTable = ttStandard_GetTableCellElement(obj.parentElement);
    }
    else
    {
        objTable = obj;
    }
    return objTable;
}


function ttStandard_RequestData(id)
{
	var state =ttStandard_state[id];	
	srandardXmlHttp =  ttdd_GetXMLHttpRequest();
			
	//state.lastValue= control.value;
	var sURL = state.Url	
		
		
	var details="PageId=" +state.PageId +"&ControlId=" +state.ControlId +"&ScreenName="			+state.ScreenName+"&SearchString=" + ttshared_SafeEscapeChars(state.SearchString) +"&CallerId="
		+id +"&ModuleId=" + state.ModuleId +"&ViewName=" +state.ViewName; 
    
    //Added to support State data source type
    var detailsForTaskControl = (state.StatePageId ? "&StatePageId=" + state.StatePageId : ""); 
    detailsForTaskControl += ( state.StateSessionId ? "&StateSessionId=" + state.StateSessionId : ""); 
    detailsForTaskControl += ( state.StateFlowId ? "&StateFlowId=" + state.StateFlowId : ""); 
    detailsForTaskControl += ( state.UserId ? "&UserId=" + state.UserId : ""); 
	
	details += detailsForTaskControl;		
	//Added to support State data source type		
			
	//GET OR POST, URL, Async
	srandardXmlHttp.open( "POST", sURL, false );
	srandardXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
	srandardXmlHttp.onreadystatechange = function () {
		if (srandardXmlHttp.readyState == 4) ttStandard_HaveResults()
	};

	srandardXmlHttp.send(details);	
		
}

function ttStandard_HaveResults()
{
	try
	{	
		document.body.style.cursor ="default";
		var response = srandardXmlHttp.responseText; 	
		var errorMarker = "$$ERROR=";
		
		if(response.indexOf(errorMarker) >= 0) {
		
			var messagePrefix = "The background process encountered an error: ";
			var errorMessage =  response.substr(errorMarker.length);
		
			//MWatts, 20 Aug 2008, RFC61654 - Do some error handling.
			if(tterror_state) {
				tterror_showOk(messagePrefix + "<br />" + errorMessage);
			} else {
				alert(messagePrefix + "\n" + errorMessage);
			}
		
		} else {
		
			var result = eval('(' + response + ')');	
			ttStandard_ProcessResults(result); 
		
		}
	}
	catch(e){}
}
		
function ttStandard_ProcessResults(result)
{
	var state =ttStandard_state[result.id];
	
	//loop through each row
	for(var i=0;i<result.length;i++)
	{
		var columnDetails = result.data.dataMarshaller[i];
		var baseColumnDetails= ttStandard_getColumn(result.id,columnDetails.column);
		if(Boolean(parseInt(columnDetails.editable)))
		{	
			switch(parseInt(baseColumnDetails.controlType))
			{			
				case UIControlType_InputText:				
				case UIControlType_InputTextWithPostBack:
				case UIControlType_InputTextMultiLine: 
				case UIControlType_InputNumeric:
				case UIControlType_InputNumericWithPostBack:  
				case UIControlType_ClientControl:
				case UIControlType_Currency:
				case UIControlType_InputSearch:
				case UIControlType_InputSearchVerifier:
				case UIControlType_DropDown:
				case UIControlType_InputRadio:
				case UIControlType_ListBox:
				case UIControlType_InputBoolean:
				case UIControlType_InputBooleanWithPostBack:
				case UIControlType_InputBooleanYN:
				case UIControlType_InputBooleanYNWithPostBack:
					baseColumnDetails.object.value  = columnDetails.value;
					break;				
				case UIControlType_InputDate:
				case UIControlType_InputDateRange:				
					var dateObject =ttStandard_getDateObject(result.id,columnDetails.column);
					if(columnDetails.value !="")
					{							
						var date= columnDetails.value.split('/');
						//get date 
						dateObject[0].value = date[0];
						dateObject[1].value = date[1];
						dateObject[2].value = date[2];
					}
					else
					{
						dateObject[0].value = "dd";
						dateObject[1].value = "mm";
						dateObject[2].value = "yyyy";
					}						
					break;					
				case UIControlType_InputTime:
				case UIControlType_InputTimeRange:
					if(columnDetails.value !="")
					{							
						var time= columnDetails.value.split('/');
						//get time 
						var timeObject =ttStandard_getDateObject(result.id,columnDetails.column);
						timeObject[0].value =time[0];
						timeObject[1].value =time[1];						
					}						
					break;
				case UIControlType_DropDownLov:
				case UIControlType_DropDownLovWithPostBack:
					baseColumnDetails.tag.value  = columnDetails.value;
					baseColumnDetails.tag.fireEvent("onchange");
					window.event.keyCode = 0;
					baseColumnDetails.tag.fireEvent("onkeyup");
					break;		
			}			
		}
		else
		{
			switch(parseInt(baseColumnDetails.controlType))
			{	
			
				case UIControlType_InputTime:
				case UIControlType_InputTimeRange:
					if(columnDetails.value !="")
					{
						var date = new Date(columnDetails.value);
						var Hours = ttStandard_leadingZero(date.getHours());
						var Minutes = ttStandard_leadingZero(date.getMinutes());
						baseColumnDetails.readOnlyObject.value =Hours +":" + Minutes;
					}
					break;
				default:
					baseColumnDetails.readOnlyObject.value  = columnDetails.value;
					break;
			}
			
		}
		 
	
	}	
}	

function ttStandard_leadingZero(nr)
{
	if (nr < 10) nr = "0" + nr;
	return nr;
}



function ttStandard_EventCalled(control,id, objectToCall, column, paramater, e)
{
	var state =ttStandard_state[id];	
	var column;
		
	var functionToCall;
	var position =objectToCall.indexOf("(");	
	
	if(position !=-1)
	{
		functionToCall =objectToCall.replace(")",",'" + id +"','" + column + "',e)");		
	}
	else
		functionToCall =objectToCall+"('"+paramater +"','" + id +"','" + column + "',e)";	
	try
	{
		eval(functionToCall);
	}
	catch(e){}
}

function   ttStandard_getById(id)
{
	return ttStandard_state[id];	
}

function   ttStandard_getColumn(id, column)
{
	var state =ttStandard_state[id];	
	for(i=0;i<state.Length;i++)
	{
		if(state.DataMarshaller[i].column== column)
		{			
			return state.DataMarshaller[i];
		}
	}
	return null;
}


function   ttStandard_getDateObject(id, column)
{
	var state =ttStandard_state[id];	
	for(i=0;i<state.Length;i++)
	{
		if(state.DataMarshaller[i].column== column)
		{			
			var object =state.DataMarshaller[i].object;
			
			try
			{
				var tr =object.parentElement.parentElement.parentElement.parentElement;
				var dateObjects = tr.getElementsByTagName("input");
				return dateObjects;			
			}
			catch(ex)
			{
				return null;
			}		
		}
	}
	return null;
}

function ttStandard_isDate(id, column)
{
	var state =ttStandard_state[id];	
	for(i=0;i<state.Length;i++)
	{
		if(state.DataMarshaller[i].column== column)
		{			
			var parent =state.DataMarshaller[i].object.parentElement;
			var dateObjects =parent.parentElement.parentElement.parentElement.getElementsByTagName("input");
			if(dateObjects.length==3)
			{
				if(dateObjects[0].value !="dd" && dateObjects[1].value !="mm" && dateObjects[2].value !="yyyy")
				{
					return true;
				}
				else
					return false;
			}
		}
	}
	return false;
}

function ttStandard_getDate(id, column)
{
	var state =ttStandard_state[id];	
	for(i=0;i<state.Length;i++)
	{
		if(state.DataMarshaller[i].column== column)
		{			
			var parent =state.DataMarshaller[i].object.parentElement;
			var dateObjects =parent.parentElement.parentElement.parentElement.getElementsByTagName("input");
			if(dateObjects.length==3)
			{
				return dateObjects[0].value +"/" +dateObjects[1].value +"/" +dateObjects[2].value;
			}
		}
	}
	return false;
}

function ttStandard_tabChange(index, tabName)
{		
	var currentGroup = tabName;
	var split = currentGroup.split(".");
	if(split.length==2)
		currentGroup = split[1].trim();	
	var count =ttStandard_wrapper.count+1;
	for(i=0;i<count;i++)
	{
		var state =ttStandard_state[ttStandard_wrapper[i]];
		if(state !=null && state.Groups.indexOf(currentGroup) !=-1)
		{			
			for(i=0;i<state.Length;i++)
			{
				if(state.DataMarshaller!=null && state.DataMarshaller!="")
				{
					if(state.DataMarshaller[i].group== currentGroup && 
					state.DataMarshaller[i].editable !="False"  &&
					state.DataMarshaller[i].controlType !=UIControlType_SubPage)
					{						
						if(state.DataMarshaller[i].controlType==UIControlType_DropDownLov ||
							state.DataMarshaller[i].controlType==UIControlType_DropDownLovWithPostBack ) 
							ttStandard_SelectItem(state.DataMarshaller[i].tag);
						else
							ttStandard_SelectItem(state.DataMarshaller[i].object);
						break;
					}
				}
			}
			break;
		}
	}
}

function ttStandard_Focus()
{		
	ttStandard_SelectItem(focusElement);
}

function ttStandard_SelectItem(column)
{
	try{
	column.focus();		
	}
	catch(e){}
}

function ttStandard_MoveToEnd(column)
{
	
	if ( column.createTextRange )
		column.createTextRange().text += "";
		else if ( column.insertionPoint )
		column.insertionPoint = column.text.length; 
}

function ttStandard_loadgroupChanged(id, group)
{
	var state =ttStandard_state[id];
	var groups = state.GroupTableIds.split('|');
	var groupDesc = state.Groups.split('|');
	for(i=0;i<groups.length;i++)
	{
		var table = document.getElementById(groups[i]);
		table.style.visibility ="hidden"
		table.style.display="none";
		
		if(groupDesc[i] ==group)
		{
			table.style.visibility ="visible"
			table.style.display="";
		}
	}
}

function ttStandard_createColumn(id,column,controlUniqueId,controlType)
{
	var state =ttStandard_state[id];
	var column =ttStandard_getColumn(id,column);	
	var className="";
	if(Boolean(column.Required))			
		className="mand";		
	switch(controlType)
	{
		case UIControlType_DropDown:
			var control =new ttclient_createVerifier(controlUniqueId,40);
			control.table.style.width = "";
			control.table.className="w100";						
			//control.innerControl.className=column;	
			control.innerControl.className="w100" +className;
			control.innerControl.tabIndex =column.tabIndex;
			return control;
			break;
		case UIControlType_DropDownLov:		
			var control = new ttclient_createVerifierLov(controlUniqueId,40);
			control.table.style.width = "";
			control.table.className="w100";			
			control.list.parentElement.className ="w100";
			control.list.className="w100";
			control.lovText.tabIndex =column.tabIndex;
			
			control.lovText.className=className;										
			control.lovText.onfocus =function() { ttdd_HighlightObject(this,'highlight');};				  				control.lovText.onblur =function() { ttdd_LeaveObject(this,className);};
			return control;
			break;
		case UIControlType_InputText:	
		default:	
			var control = new ttclient_createInputText(controlUniqueId,0);
			return ttStandard_completeTextControl(control,control.innerControl,className,column, true);						
		case UIControlType_InputNumeric:
			var control = new ttclient_createInputNumeric(controlUniqueId,0);			
			return ttStandard_completeTextControl(control,control.innerControl,className,column,true);
			break;
		case UIControlType_Currency:
			var defaultCurrency=STD_DEFAULT_CURRENCY_SYMBOL;
			var control = new ttclient_createInputCurrency(controlUniqueId,0,defaultCurrency);			
			return ttStandard_completeTextControl(control,control.innerControl,className,column,true);
			break;
		case UIControlType_InputDate:
			var control = new ttclient_createInputDate(controlUniqueId,controlUniqueId,0);
			control= ttStandard_completeTextControl(control,control.day,className,column,false);
			control= ttStandard_completeTextControl(control,control.month,className,column,false);
			control= ttStandard_completeTextControl(control,control.year,className,column,false);
			return control;
			break;
			
	} 
}

function ttStandard_setColumn(id, column, val)
{
	var column =ttStandard_getColumn(id,column);

	if(column)
	{
		switch(parseInt(column.controlType))
		{
			case UIControlType_Currency:
				column.object.value = ttStandard_formatCurrency(val, STD_DEFAULT_CURRENCY_SYMBOL);
				break;
			default:
				column.object.value = val;	

				break;
		}
	}
}

function ttStandard_formatCurrency(num, strCurrencySymbol) 
{
	var objRegExp = new RegExp("\\" + strCurrencySymbol + "", "g");
	num = num.toString().replace(objRegExp,'');
	num = ttdd_parseInputCurrencyToNumeric(num);
	if(isNaN(num))
		num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + num + '.' + cents);
}

function ttStandard_formatCurrencyDefault(num)
{
    return ttStandard_formatCurrency(num, STD_DEFAULT_CURRENCY_SYMBOL)
}

function ttStandard_completeTextControl(control,innerControl,className,column, removeWidth)
{
			
	
	if(removeWidth)
	{
		control.table.className="w100";
		control.table.rows[0].children[0].className="w100";			
	
		control.table.style.width = "";	
		innerControl.style.width = "";			
		className +=" w100";			
		innerControl.className=className ;										
	}
	innerControl.onfocus =function() { ttdd_HighlightObject(this,'highlight w100');};
	innerControl.onblur =function() { ttdd_LeaveObject(this,className);};
	innerControl.tabIndex =column.tabIndex;
	return control;
}

function ttStandard_HiddenControl(value)
{
	this.value = value;
}

function ttStandard_groupChanged(object, id, hiddenFieldId)
{	
	var state =ttStandard_state[id];
	var groups = state.GroupTableIds.split('|');
	var groupDesc = state.Groups.split('|');
	var selectedGroup = object.options[object.selectedIndex].text;
	var hiddenField = document.getElementById(hiddenFieldId);
	hiddenField.value =selectedGroup;
	for(i=0;i<groups.length;i++)
	{
		var table = document.getElementById(groups[i]);
		table.style.visibility ="hidden"
		table.style.display="none";
		
		if(groupDesc[i] ==selectedGroup)
		{
			table.style.visibility ="visible"
			table.style.display="";
		}
	}
	
	for(i=0;i<state.Length;i++)
	{
		if(state.DataMarshaller[i].group== selectedGroup && 
		state.DataMarshaller[i].editable !="False"  &&
		state.DataMarshaller[i].controlType !=UIControlType_SubPage)
		{						
			if(state.DataMarshaller[i].controlType==UIControlType_DropDownLov ||
				state.DataMarshaller[i].controlType==UIControlType_DropDownLovWithPostBack ) 
				ttStandard_SelectItem(state.DataMarshaller[i].tag);
			else
				ttStandard_SelectItem(state.DataMarshaller[i].object);
			break;
		}
	}	
}


function ttStandard_OnGenerateSearchString(id, inputSearchId, miniSearchId)
{	
	var values = id.split('|');
	
	var state =ttStandard_state[values[0]]; 	
	if(state.OnPrepareMiniSearch !="")
	{
		//grid//param
		var method = state.OnPrepareMiniSearch +"('" +values[0] +"','" +
		values[1] +"','"+state.OnPrepareMiniSearchParameter +"','"+ inputSearchId +"','" +
		miniSearchId +"')";		
		try
		{
			return eval(method);
		}
		catch(e){}	
	}
	
	return "";
}

