var errorControl;
var isNS;
var tterror_state=[];
var yesEvent =false;
var noEvent =false;
var methodToCall;
var nomethodToCall;
var okmethodtoCall=undefined;

var cancelEvent =false;

//RFC50596
function tterror_DisableAfterSubmit(button) {
	
	setTimeout("tterror_DisableButton('" + button.name + "')", 100);
	
	return true;
}

function tterror_DisableButton(buttonName) {
		
	//Note that we cannot use getElementsByName() as this is not supported on IE7/Vista although it IS supported on IE7/XP.
	var inputs = document.getElementsByTagName("input");
	
	for(i = 0; i < inputs.length; i++) {
	
		var inputType = inputs[i].type.toLowerCase();
	
		if(inputs[i].name == buttonName && (inputType == "submit" || inputType == "button" || inputType == "reset")) {
			inputs[i].disabled = true;
		}
	}
	
}
//End RFC50596

// Begin RFC56091
function tterror_DisableAllAfterSubmit()
{
	setTimeout("tterror_DisableAll()", 100);
	
	return true;
}

function tterror_DisableAll()
{
	var inputs = document.getElementsByTagName("input");
	for(i = 0; i < inputs.length; i++)
	{
		var inputType = inputs[i].type.toLowerCase();
	
		if(inputType == "submit" || inputType == "button" || inputType == "reset") 
		{
			inputs[i].disabled = true;	
		}
	}
	
	return true;
}
// End RFC56091

function tterror_init2(id) 
{	
	var error = new tterror_errorControl(id,eval("TT_"+id+"_ErrorData"));		
}

function tterror_errorControl(id, props)
{
	tterror_state[id]=this;
	
	this.ErrorsList = new List();
	//Methods
	this.tterror_details = tterror_details;
	this.tterror_displayErrors = tterror_displayErrors;
	this.tterror_AddError =tterror_AddError;
	this.tterror_clearErrors =tterror_clearErrors;
	
	//properies
	this.Id =props[0];
	this.ContainerId = props[1];
	this.ErrorTitle = props[2];
	
	function tterror_AddError(object, message,column)
	{
		var newError = new tterror_details(object,message,column);
		this.ErrorsList.addItem(newError);
	}
	
	function tterror_displayErrors()
	{
		var m_html="";
		if(this.ErrorsList.length>0)
		{
			m_html ="<table class=\"errorborder\" width=\"300\" cellpadding=\"0\" cellspacing=\"0\">";								
			m_html +="<tr class=\"errorTitle\"><td>";
			m_html +=this.ErrorTitle;
			m_html +="</td></tr> ";
			m_html +="<tr><td class=\"align7 100\"><table cellpadding=\"0\" cellspacing=\"0\" style=\"width:300px\" class=\"innererrorBorder\">";
			
			var count =0;
			for(var i =0;i<this.ErrorsList.length;i++)
			{
				count ++;			
				var error = this.ErrorsList.getAtIndex(i);
				
				m_html+="<tr class=\"errorReportRow\"><td class=\"errorQuestion align4\" nowrap=\"nowrap\"><DIV class=\"100 fwarn\" >" +count+(error.column?". Column ":"")+	(error.column?error.column:"") +" :-"  +error.message+  "</DIV></td></tr>";
			}
			m_html +="</table></td></tr></table>";
		}
		
		document.getElementById(this.ContainerId).innerHTML =m_html;
	}

	//error object
	function tterror_details(object, message, column)
	{
		this.object = object;	
		this.column = column;
		this.message =message;
	}
	
	function tterror_clearErrors()
	{
		this.ErrorsList = new List();
		this.tterror_displayErrors();
	}
}

/****************** Generic Functions *******************/
function tterror_init(id,setTextFocus) 
{	
	isNS = ((navigator.appName == 'Netscape') && (parseFloat(navigator.appVersion)>= 5));		
	//set local errorControl	
	errorControl =document.getElementById(id);
	window.__onResizeOld =window.onresize;	
	tterror_ShowError();
	
	if(setTextFocus)
	{
		var text =errorControl.getElementsByTagName("input")[0];
		text.focus();
	}	
}

function tterror_resize()
{	
	tterror_ShowError();
	__onResizeOld();
}

function tterror_ShowError()
{
	ttlayout_HideSelects();
	var m_prevent = document.getElementById("modal");				
	m_prevent.style.visibility = "visible";
	m_prevent.style.display="";
	
	m_prevent.style.left =0;
	m_prevent.style.top =0;
	m_prevent.style.width =document.body.clientWidth;
	m_prevent.style.height =document.body.clientHeight;
	m_prevent.style.filter="alpha(opacity=30)";		
	tterror_resize();
}

function tterror_resize()
{	
	errorControl.style.zIndex=1000;
	errorControl.style.visibility = "visible";
	errorControl.style.display="";
	if(isNS)
	{ 
		var m_left =((window.innerWidth-16)/2) - (errorControl.offsetWidth/2);
		var m_top = ((window.innerHeight-16)/2) - (errorControl.offsetHeight/2)-50;			
	}
	else
	{
		var m_left = ((document.body.offsetWidth-20)/2) - (errorControl.offsetWidth/2);
		var m_top = ((document.body.offsetHeight-20)/2) - (errorControl.offsetHeight/2)-50;			
	}				
	errorControl.style.left =m_left;		
	errorControl.style.top =m_top;
	
}

function tterror_pressOk()
{
	tterror_hideMessage();
    if(okmethodtoCall!=undefined)
    {
	    try
	    {	
		    eval(okmethodtoCall);
	    }
	    catch(e){}	
	}
}

function tterror_hideMessage()
{
	var error = document.getElementById("error");
	if(error !=null)
	{
		error.style.visibility ="hidden"
		error.style.display="none";
	}
	
	var modal = document.getElementById("modal");
	if(modal !=null)
	{
		modal.style.visibility ="hidden"
		modal.style.display="none";
	}
	ttlayout_ShowSelects(); 
}

function tterror_pressYes()
{
	tterror_hideMessage();
	yesEvent= true;
	try
	{	
		eval(methodToCall);
	}
	catch(e){}
}

function tterror_pressNo()
{
	tterror_hideMessage();
	noEvent= true;
	if(nomethodToCall !=null)
	{
		try
		{	
			eval(nomethodToCall);
		}
		catch(e){}
	}
}

function tterror_pressCancel()
{
	tterror_hideMessage();
	cancelEvent = true;	
}

function tterror_createHeader(message)
{
	yesEvent = false;
	noEvent  =false;
	methodToCall =null;
	cancelEvent =false;
	
	var m_html= "<table class=\"errorborder\" width=\"150\" cellpadding=\"0\" cellspacing=\"0\">";
	m_html +="<tr class=\"errorTitle\">";
	m_html +="<td>Information</td>";
	m_html +="</tr>";
	m_html +="<tr>";
	m_html +="<td class=\"align7 100\"><table cellpadding=\"0\" cellspacing=\"0\" style=\"width:300px\" class=\"innererrorBorder\">";
	m_html +="<tr class=\"errorQuestionRow\">";
	m_html +="<td class=\"errorQuestion align5\" nowrap=\"nowrap\">"+ message+"</td>";
	m_html +="</tr>";
	m_html +="<tr class=\"errorButtonsRow\">";
	return m_html;
}

function tterror_createFooter()
{
	var m_html= "</tr>";
	m_html +="</table>";
	m_html +="</td>";
	m_html +="</tr>";
	m_html +="</table>";
	return m_html;
}

function tteror_completeMessage(html)
{
	var error = document.getElementById("error");
	if(error ==null)
	{
		error = document.createElement('DIV');
		error.id ="error";
		error.style.width =300;
		error.style.height =150;		
		error.style.position = 'absolute';	
		document.body.appendChild(error);	
	}
	error.innerHTML =html;
	errorControl = error;	
	var modal = document.getElementById("modal");
	
	if(modal ==null)
	{
		modal = document.createElement('DIV');
		modal.id ="modal";
		modal.style.position = 'absolute';
		modal.className = 'errormodal';		
		document.body.appendChild(modal);	
	}
	tterror_ShowError();
}


/***************** Message Types *********************/
function tterror_showYesNoCancel(message, yesFunction, noFunction)
{	
	
	var m_html=tterror_createHeader(message);
	m_html +="<td class=\"align5\"><span><button style=\"font-size:smaller;\" title=\"Yes\" onClick=\"tterror_pressYes()\">Yes</button></span><span><button style=\"font-size:smaller;\" title=\"No\" onClick=\"tterror_pressNo()\">No</button></span>";
	
	m_html+="<span><button style=\"font-size:smaller;\" title=\"Cancel\" onClick=\"tterror_pressCancel()\">Cancel</button></td></span>";
	m_html+="</td>";
	m_html+=tterror_createFooter();
	
	methodToCall =yesFunction;  
	nomethodToCall =noFunction; 
	tteror_completeMessage(m_html);
}

function tterror_showYesNo(message, yesFunction,noFunction)
{	
	
	var m_html=tterror_createHeader(message);
	m_html +="<td class=\"align5\"><span><button style=\"font-size:smaller;\" title=\"Yes\" onClick=\"tterror_pressYes()\">Yes</button></span><span><button style=\"font-size:smaller;\" title=\"No\" onClick=\"tterror_pressNo()\">No</button></span></td>";
	m_html+=tterror_createFooter();
	
	methodToCall =yesFunction;  
	nomethodToCall =noFunction;
	tteror_completeMessage(m_html);
}

function tterror_showOk(message, okMethod)
{
	var m_html=tterror_createHeader(message);
	m_html +="<td class=\"align5\"><button style=\"font-size:smaller;\" title=\"Ok\" onClick=\"tterror_pressOk()\">Ok</button></td>";
	m_html+=tterror_createFooter();
	okmethodtoCall = okMethod;
	tteror_completeMessage(m_html);
}



