function ltrim(s)
{
   return s.replace( /^\s*/, "");
}

function rtrim (s)
{
   return s.replace( /\s*$/, "");
}

function trim (s)
{
   return rtrim(ltrim(s)); 
}

function kill(obj)
{
	if(obj && obj.parentNode)
		obj.parentNode.removeChild(obj);
}

function ValidaData(dataForm)
{
	var r = false;
	var data = new String(dataForm);
	
	if(data.indexOf('/') > -1)
	{
		var dmy = data.split('/');

		if(dmy.length == 3 && ValidaDataSplit(dmy[0],dmy[1],dmy[2]))
			r = true;
	}

	return r;
}

function ValidaDataSplit(d,m,y)
{
	var r = false;
	var u = 0;
	
	if(d && m && y && !isNaN(d) && !isNaN(m) && !isNaN(y))
	{
		if(m == 2) // Ultimo dia de fevereiro
			u = ((y % 4) == 0) ? 29 : 28;

		else if(m >= 1 && m <= 7)
			u = ((m % 2) == 0) ? 30 : 31;

		else if(m >= 8 && m <= 12)
			u = ((m % 2) == 0) ? 31 : 30;
			
		if(d >= 0 && d <= u)
			r = true;
	}
	
	return r;
}

function ValidaDataMaior(d1,d2)
{
	var dm1 = d1.split('/');
	var dm2 = d2.split('/');
	
	if(dm2[2] > dm1[2])
		return true;
	else if(dm2[2] == dm1[2])
	{
		if(dm2[1] > dm1[1])
			return true;
		else if(dm2[1] == dm1[1])
		{
			if(dm2[0] >= dm1[0])
				return true;
		}
	}
	
	return false;
}

function ValidaEmail(mail)
{
	var filter = new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
	return filter.test(mail);
}


function GetKeyCode(e)
{
	return e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
}
 
function ORD(k)
{
	return String.fromCharCode(k);
}

function kp_Data(e)
{
	var key = GetKeyCode(e);
	return (!isNaN(ORD(key)) || ORD(key) == '/' || NavigationKey(key));
}

function kp_Int(e)
{
	var key = GetKeyCode(e);
	return (!isNaN(ORD(key)) || NavigationKey(key));
}

function kp_IP(e)
{
	var key = GetKeyCode(e);
	
	return (!isNaN(ORD(key)) || ORD(key) == '.' || NavigationKey(key));
}

function kp_CEP(e)
{
	var key = GetKeyCode(e);
	
	return (!isNaN(ORD(key)) || ORD(key) == '-' || NavigationKey(key));
}

function kp_MaxChars(el,MaxChars,e)
{
	var keyCode = GetKeyCode(e);
	
	if((keyCode >= 0 && keyCode <= 31) || keyCode == 127)
		return true;
	else
		return (el.value.length < MaxChars);
}

function ku_MaxChars(el,MaxChars)
{
	if(el.value.length > MaxChars)
		el.value = el.value.substring(0,MaxChars);
}

function mask_Data(obj)
{
	if (obj.value.length == 8)
		obj.value = obj.value.substring(0,2) + '/' + obj.value.substring(2,4) + '/' + obj.value.substring(4,8);
}

function unmask_Data(obj)
{
	while (obj.value.indexOf('/') >= 0)
		obj.value = obj.value.replace('/','');
}

function GetXmlDocument(url)
{
	try {
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
		xmlDoc.load(url);

		if(xmlDoc.childNodes.length > 1)
			return xmlDoc.childNodes[1].childNodes;
		else
			return null;
	}
	catch(e)
	{
		return null;
	}
}

function XmlDocToDDL(xmlDoc,obj,v,t)
{
	var op;
	
	if(xmlDoc.length > 1 && v != null && t != null)
	{
		op = document.createElement('option');
		op.value = v;
		op.innerHTML = t;
		obj.options.appendChild(op);
	}

	for ( i = 0; i < xmlDoc.length; i++)
	{
		y = xmlDoc[i].childNodes;
		op = document.createElement('option');
		op.value = y[0].text;
		
		op.innerHTML = y[1].text;
		obj.options.appendChild(op);
	}
}

function Swap(id,show)
{
	var el = document.getElementById(id);
	
	if(el)
	{
		if(show === null)
			el.style.display = el.style.display == 'none' ? '' : 'none';
		else
			el.style.display = show ? '' : 'none';
	}
}

function GetQS(p)
{
	var url = self.location.href;
	
	if(!p || url.indexOf('?') < 0 || url.indexOf('?') == (url.length-1))
		return '';
		
	var qs = '&' + url.substring(url.indexOf('?')+1,url.length);
	
	if(qs.indexOf('&' + p) < 0)
		return '';
	
	var parametros = qs.split('&');
	
	var parametro;
	for(var i = 0; i < parametros.length; i++)
	{
		parametro = parametros[i];
		if(parametro.indexOf(p + '=') == 0)
			return parametro.substring(parametro.indexOf('=')+1,parametro.length);
	}
	
	return '';
}

function IndexInArray(v,arr)
{
	if(arr && arr.length)
	{
		for(var i = 0; i < arr.length; i++)
			if(arr[i] == v)
				return i;
	}

	return -1;		
}

function BuscaOptionPorValor(ddl,v)
{
	for(var i = 0; i < ddl.options.length; i++)
		if(ddl.options[i].value == v)
			return ddl.options[i];

	return null;
}

function ValidaCPF(s)
{
	var c = s.substr(0,9);
	var dv = s.substr(9,2);
	var d1 = 0;

	for (i = 0; i < 9; i++)
		d1 += c.charAt(i)*(10-i);
	 
	if (d1 == 0)
		return false;
	
	d1 = 11 - (d1 % 11);
	
	if (d1 > 9) d1 = 0;
	 
	if (dv.charAt(0) != d1)
		return false;
	 
	d1 *= 2;
	 
	for (i = 0; i < 9; i++)
		d1 += c.charAt(i)*(11-i);
	 
	d1 = 11 - (d1 % 11);
	 
	if (d1 > 9) d1 = 0;
	 
	if (dv.charAt(1) != d1)
		return false;
 
	return true;
}

function NavigationKey(k)
{
	return (k < 32 || k > 126);	
}