var gObjActive = null;    
var gStrError = '';
var gObjFirstError = null;
var gTimer = null;     
var gIntTvwChecked = 0;

function EventRaisedBy(pStrObjectName)
{	
	if(gObjActive != null)
	{
		ErrorHandler();
		var strActive = gObjActive.name.toString().toUpperCase();
		if(strActive.indexOf("_DISAB") == -1)
			return(strActive.indexOf(pStrObjectName.toString().toUpperCase()) != -1);
		else
			throw (new String());
	}

	return false;	
}

function ErrorHandler()
{
	gStrError	   = '';
	gObjFirstError = null;
}

function IsEmpty(pStrFieldName, pStrMessage)
{
	var objField = document.getElementById(pStrFieldName);
	if(objField != null)
	{			
		if(objField.value.toString().trim() == '')
		{
			AddError(objField, pStrMessage);
			return false;
		}
	}
	return true;
}

function IsDifferent(pStrFieldName1, pStrFieldName2, pStrMessage)
{
	var objField1 = document.getElementById(pStrFieldName1);
	var objField2 = document.getElementById(pStrFieldName2);
	
	if((objField1 != null) && (objField2 != null))
	{		
		if(objField1.value.toString() != objField2.value.toString())
		{
			objField1.value = "";
			objField2.value = "";
			AddError(objField1, pStrMessage);
			return false;
		}
	}
	return true;
}

function IsSelected(pStrFieldName, pStrMessage)
{
	var objField = document.getElementById(pStrFieldName);
	if(objField != null)
	{		
		if(objField.options[objField.selectedIndex].value.toString() == '')
		{	
			AddError(objField, pStrMessage);
			return false;
		}
	}
	return true;
}

function IsCheckedList(pStrFieldName, pStrMessage)
{
	var objField = document.getElementById(pStrFieldName);	
	if ((objField != null) && (objField.tagName.toString().toUpperCase() == "TABLE"))
	{	
		var blnChecked = false;
		
		var objCheckBoxList = objField.getElementsByTagName("input");
		for (var intI = 0; intI < objCheckBoxList.length; intI++)
		{
			if ((objCheckBoxList[intI].type.toString().toUpperCase() == "CHECKBOX") && (objCheckBoxList[intI].checked))
			{
				blnChecked = true;
				break;
			}
		}
		
		if (!blnChecked)
		{
			AddError(objField, pStrMessage);
			return false;		
		}
	}
	return true;
}

function IsTreeViewSelected(pStrTreeViewName, pStrMessage, pBlnHasRoot)
{	
	var objTreeView = document.getElementById(pStrTreeViewName);	
	if(objTreeView != null)
	{	
		var objTreeNode = objTreeView.getTreeNode(objTreeView.selectedNodeIndex);		
		if(objTreeNode != null)
		{	
			var strCompareID = '';			
			if(pBlnHasRoot)	strCompareID = '_1'; //Root = _1
			
			if(objTreeNode.getAttribute("id").toString() == strCompareID)
			{				
				AddError(objTreeView, pStrMessage);
				return false;
			}
		}
	}
	return true;
}

function IsTreeViewChecked(pStrTreeViewName, pStrMessage)
{	
	var objTreeView = document.getElementById(pStrTreeViewName);	
	if(objTreeView != null)
	{			
		GetCheckedNodes(objTreeView, "");
		if(gIntTvwChecked == 0)
		{
			AddError(objTreeView, pStrMessage);
			return false;
		}
	}
	gIntTvwChecked = 0;
	return true;
}

function GetCheckedNodes(pObjTreeView, pStrNodeIndex)
{
	var intI = 0;
	while(true)
	{		
		var objNode;
		var strIndex = pStrNodeIndex;
		
		if(strIndex != "") strIndex += ".";
		strIndex += intI;
		
		try
		{
			objNode = pObjTreeView.getTreeNode(strIndex);
		}
		catch(e)
		{
			objNode = null;
		}

		if(objNode == null) break;
		
		if(objNode.getAttribute("CHECKED")) 
		{
			gIntTvwChecked++;
			break;
		}
		
		GetCheckedNodes(pObjTreeView, strIndex);
		intI++;
	}
}

function IsValidEmail(pStrFieldName, pStrMessage)
{
	var objField = document.getElementById(pStrFieldName);
	if(objField != null)
	{
		if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(objField.value.toString())))
		{
			AddError(objField, pStrMessage);
			return false;
		}
	}
	return true;
}

function IsNumber(pStrFieldName, pStrMessage)
{
	var objField = document.getElementById(pStrFieldName);
	if(objField != null)
	{
		if((objField.value.toString() != '') && (isNaN(objField.value.toString())))
		{
			AddError(objField, pStrMessage);
			return false;	
		}				
	}
	return true;
}

function IsFloat(pStrFieldName, pStrMessage)
{
	var objField = document.getElementById(pStrFieldName);
	if(objField != null)
	{
		var strField = objField.value.toString();
		strField = strField.replace(/,/g, '.');
		
		if((strField != '') && (isNaN(strField)))
		{
			AddError(objField, pStrMessage);
			return false;	
		}				
	}
	return true;
}

function IsValidBeginEndDate(pStrFieldNameB, pStrFieldNameE, pStrMessage)
{
	var objFieldB = document.getElementById(pStrFieldNameB);
	var objFieldE = document.getElementById(pStrFieldNameE);
	var dtB;
	var dtE;
	
	if((objFieldB != null) && (objFieldE != null))
	{
		dtB = new Date(objFieldB.value);
		dtE = new Date(objFieldE.value);
		
		if(dtB.getTime() > dtE.getTime())
		{
			AddError(objFieldB, pStrMessage);
			return false;
		}
	}
	
	return true;
}

function IsValidDate(pStrFieldName, pStrMessage) 
{	
	var intDay;
	var intMonth;
	var intYear;

	var objField = document.getElementById(pStrFieldName);
	if(objField != null)
	{		
		if (objField.value.toString() != "")
		{
			var objArrField = objField.value.toString().split("/");
			
			intDay   = objArrField[0];
			intMonth = objArrField[1];
			intYear  = objArrField[2];		
			
			if ((intDay < 0) || (intDay > 31) || (intMonth < 1) || (intMonth > 12) || (intYear < 1800))
			{
				AddError(objField, pStrMessage);
				return false;	
			}

			if (intDay > 31 && (intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12))
			{
				AddError(objField, pStrMessage);
				return false;	
			}
						
			if (intDay > 30 && (intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11))
			{
				AddError(objField, pStrMessage);
				return false;	
			}

			var blnLeapYear = false;
			var intTestYear = Math.floor(intYear/4);		

			intTestYear = intTestYear * 4;
			
			if (intTestYear == intYear)
				blnLeapYear = true;			

			if ((blnLeapYear) && (intMonth == 2) && (intDay > 29)) 
			{
				AddError(objField, pStrMessage);
				return false;	
			}
			
			if ((!blnLeapYear) && (intMonth == 2) && (intDay > 28)) 
			{			
				AddError(objField, pStrMessage);
				return false;	
			}			
		}
	}			
	return true;	
}

function IsDateBiggerToday(pStrFieldName, pStrMessage) 
{
	var objField = document.getElementById(pStrFieldName);
	if(objField != null)
	{			
		var datToday = new Date(strDateToday());		
		var datField = new Date(objField.value);

		if(datField.getTime() > datToday.getTime())
		{
			AddError(objField, pStrMessage);
			return false;				
		}
	}
	return true;
}

function HasNoChar(pStrFieldName, pChrFind, pStrMessage)
{
	var objField = document.getElementById(pStrFieldName);
	if(objField != null)
	{   		
		if(objField.value.indexOf(pChrFind) > 0)
		{
			AddError(objField, pStrMessage);
			return false;				
		}
	}
	return true;	
}

function strDateToday()
{
	var objDatToday = new Date();
	
	var strDay   = objDatToday.getDate(); 
	var strMonth = objDatToday.getMonth() + 1; 
	var strYear  = objDatToday.getYear();
	
	if(parseInt(strDay) < 10) strDay = ("0" + strDay);
	if(parseInt(strMonth) < 10) strMonth = ("0" + strMonth);
	
	return strDay + "/" + strMonth + "/" + strYear; 
}

function IsMaxChars(pStrFieldName, pIntMaxLenght, pStrMessage)
{
	var objField = document.getElementById(pStrFieldName);
	if(objField != null)
	{			
		if(objField.value.length > pIntMaxLenght)
		{
			AddError(objField, pStrMessage);
			return false;
		}
	}
	return true;
}
	
function AddError(pObjField, pStrMessage)
{
	gStrError += '. ' + pStrMessage + '\n';
	if(gObjFirstError == null) gObjFirstError = pObjField;
}

function RaiseError()
{
	var blnOk = (gObjFirstError == null);
	if (blnOk == false)
	{
		alert("Os seguintes erros foram encontrados:" + '\n' + gStrError + '\n' + "Favor corrigir!");		
		try
		{
			gObjFirstError.focus();
		}
		catch(e){}
	}                     	
	gStrError = '';
	gObjFirstError = null;
		
	return(blnOk)
}

function DisplayAtPos(pStrRootName, pStrItemName)
{
	 var objRoot	   = document.getElementById(pStrRootName);
	 var objLabel	   = document.getElementById(pStrItemName);
	 var objRoot_Rects = objRoot.getClientRects();
	 
	 var strDisplay = objLabel.style.display.toString();
	 objLabel.style.display = ((strDisplay == '') ? 'none':'');
	 if(objLabel.style.display == '')
	 {
		var intRootRight = objRoot_Rects[0].right;
		var intRootBottom = objRoot_Rects[0].bottom;
		var intLblWidth  = objLabel.style.width;
		intLblWidth = objLabel.style.width.toString().replace('px', '')

		objLabel.style.left = (intRootRight - intLblWidth) - 2;
		objLabel.style.top  = (intRootBottom - 2);
	 }
}

function clickButton(e, buttonid)
{   	
	var bt = document.getElementById(buttonid); 	
	if (typeof bt == 'object')
	{ 
		if (navigator.appName.indexOf("Netscape") > (-1))
		{ 
			if (e.keyCode == 13)
			{ 
				bt.click(); 
				return false; 
			} 
		} 
		if (navigator.appName.indexOf("Microsoft Internet Explorer") > (-1))
		{   			
			if (event.keyCode == 13)
			{ 
				bt.click(); 
				return false; 
			} 
		} 
	} 
}

function clickButton_OnlyNumbers(e, buttonid)
{   	
	var bt = document.getElementById(buttonid); 	
	if (typeof bt == 'object')
	{ 
		if (navigator.appName.indexOf("Netscape") > (-1))
		{ 				
			if (e.keyCode == 13)
			{ 
				bt.click(); 
				return false; 
			} 
			else
			{		 
				if(!(e.keyCode > 47 && e.keyCode < 58))
					e.keyCode = 0;
			}			
		} 
		if (navigator.appName.indexOf("Microsoft Internet Explorer") > (-1))
		{ 
			if (event.keyCode == 13)
			{ 
				bt.click(); 
				return false; 
			}		
			else
			{		 
				if(!(event.keyCode > 47 && event.keyCode < 58))
					event.keyCode = 0;
			} 
		} 
	} 
}

function _IsValidEmailAddress(pStrEmail)
{
	return(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(pStrEmail))
}

function SetSelected(pObjField, pStrValue)
{	
	if (pObjField != null)
	{			
		for (var intI=0; intI < pObjField.length; intI++)
		{
			if (pObjField.options[intI].value.toString() == pStrValue)
			{
				pObjField.selectedIndex = intI;
				break;
			}
		}
	}	
}

function FormataData(objDataField)
{	
	if ((objDataField.value.length == 2) || (objDataField.value.length == 5))
		objDataField.value = objDataField.value + '/';
}

function OnlyNumbers()
{
	var keyCode = event.keyCode;
	if(!(keyCode > 47 && keyCode < 58))
		event.keyCode = 0;
}

function findTopElement(pObjElement, pStrElement)
{
	while(pObjElement.tagName != pStrElement)
		pObjElement = pObjElement.parentElement;
	
	return pObjElement
}

function setParams(pStrWidth, pStrHeight)
{	
	var strTop = (screen.availHeight / 2) - (parseInt(pStrHeight) / 2);
	var strLeft = (screen.availWidth / 2) - (parseInt(pStrWidth) / 2);		
	
	return 'top=' + strTop + ',left=' + strLeft + ',height=' + pStrHeight + ',width=' + pStrWidth + ',toolbar=no;'			
}

function OpenPopSendDocument(pStrDocumentType, pStrFileName)
{   				
	window.open("Pop_SendDocument.aspx?Type=" + pStrDocumentType + "&FileName=" + pStrFileName, "popSendDoc", setParams(430,155));
}  

function CountCharacters(pStrFieldName, pStrLabelChars)
{   	
	var objField = document.getElementById(pStrFieldName);
	var objLabel = document.getElementById(pStrLabelChars);
	
	if ((objField != null) && (objLabel != null))	   		
		objLabel.innerText = '(' + objField.value.length + ' characters)';	
} 

function strLTrim()
{
	return this.replace(/^\s+/,'');
}

function strRTrim()
{
	return this.replace(/\s+$/,'');
}

function strTrim()
{
	return this.replace(/^\s+/,'').replace(/\s+$/,'');
}

String.prototype.ltrim = strLTrim;
String.prototype.rtrim = strRTrim;
String.prototype.trim  = strTrim;