// JScript source code
function SwapClass(obj,oldClass,NewClass)
{
	var objSwap = document.getElementById(obj);
	objSwap.className = (objSwap.className == oldClass || objSwap.className == '') ? NewClass : oldClass ;
}

var frmNotOK = AppPath + "/images/formfield_notOK.gif";
var frmOK = AppPath + "/images/formfield_OK.gif";

var myimages=new Array()
function preloadimages(){
for (i=0;i<preloadimages.arguments.length;i++){
myimages[i]=new Image()
myimages[i].src=preloadimages.arguments[i]
}
}
preloadimages(frmNotOK,frmOK);

 String.prototype.trim = function ()
 {
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
 }
 
 String.prototype.padL = function (nLength, sChar) 
 {
	var sreturn = this;
	while (sreturn.length < nLength)
	{
		sreturn = String(sChar) + sreturn;
	}
	return sreturn;
}

function SetFormField(controlID,value)
{
	var oElement = document.getElementById(controlID);
	oElement.value = value;
}

function GetFormField(controlID)
{
	var oElement = document.getElementById(controlID);
	return oElement.value;
}

function Validate()
{
	var oElement = window.event.srcElement;
	var Validation =oElement.getAttribute('call');
	eval(Validation);
}

function ApenasNum(strParm) {
	var chrPrt = "0";
	var strRet = "";
	var j=0;
	for (var i=0; i < strParm.length; i++)
	{
		chrPrt = strParm.substring(i, i+1);
		if ( chrPrt.match(/\d/) )
		{
			if (j==0) {
				strRet = chrPrt;
				j=1;
			} else {
				strRet = strRet.concat(chrPrt);
			}
		}
	}
	return strRet;
} 

function validateCNPJ(controlID)
{
	var oElement = document.getElementById(controlID);
	if (!oElement.value.match(/^[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}\-[0-9]{2}$/)) 
	{
			alert("ATENÇÃO!\nOs números do CNPJ devem ser introduzidos com os pontos e separadores.\nExemplo: 04.479.002/0001-08");
			ChangeImage(oElement.id,false);
			return false;
	}else{
		if (!valida_cnpj(ApenasNum(oElement.value))){
			alert("ATENÇÃO!\nCNPJ inválido. Verifique os dados digitados!");
			ChangeImage(oElement.id,false);
			return false;
		}else{
			ChangeImage(oElement.id,true)
			return true;
		}
	}
}

 function valida_cnpj(cnpj)
{
	var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
	digitos_iguais = 1;
	if (cnpj.length < 14 && cnpj.length < 15)
		return false;
	for (i = 0; i < cnpj.length - 1; i++)
		if (cnpj.charAt(i) != cnpj.charAt(i + 1))
		{
			digitos_iguais = 0;
			break;
		}
	if (!digitos_iguais)
	{
		tamanho = cnpj.length - 2
		numeros = cnpj.substring(0,tamanho);
		digitos = cnpj.substring(tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--)
		{
			soma += numeros.charAt(tamanho - i) * pos--;
			if (pos < 2)
			pos = 9;
		}
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(0))
			return false;
		tamanho = tamanho + 1;
		numeros = cnpj.substring(0,tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--)
		{
			soma += numeros.charAt(tamanho - i) * pos--;
			if (pos < 2)
			pos = 9;
		}
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(1))
			return false;
		return true;
	}else{
		return false;
	}
}

function validateCPF(controlID)
{
	var oElement = document.getElementById(controlID);
	if (!oElement.value.match(/^[0-9]{3}\.[0-9]{3}\.[0-9]{3}\-[0-9]{2}$/)) 
	{
		alert("ATENÇÃO!\nOs números do CPF devem ser introduzidos com os pontos e separadores.\nExemplo: 059.823.718-68");
		ChangeImage("txtCNPJ",false);
		return false;
	}else{
		if (!valida_cpf(ApenasNum(oElement.value))){
			alert("ATENÇÃO!\nCPF inválido. Verifique os dados digitados!");
			ChangeImage(oElement.id,false);
			return false;
		}else{
			ChangeImage("txtCNPJ",true)
			return true;
		}
	}
}

 function valida_cpf(cpf)
{
	var numeros, digitos, soma, i, resultado, digitos_iguais;
	digitos_iguais = 1;
	if (cpf.length < 11)
		return false;
	for (i = 0; i < cpf.length - 1; i++)
		if (cpf.charAt(i) != cpf.charAt(i + 1))
		{
			digitos_iguais = 0;
			break;
		}
	
	if (!digitos_iguais)
	{
		numeros = cpf.substring(0,9);
		digitos = cpf.substring(9);
		soma = 0;
		for (i = 10; i > 1; i--)
			soma += numeros.charAt(10 - i) * i;
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(0))
			return false;
		numeros = cpf.substring(0,10);
		soma = 0;
		for (i = 11; i > 1; i--)
			soma += numeros.charAt(11 - i) * i;
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(1))
			return false;
	return true;
	}else{
		return false;
	}
}

function chkVisible(crtl)
{
    var el = $(crtl);
    var elv = Element.visible(el);
    if (!elv)
        return false;
        
    if(el.parentElement != null)
    {
        elv = chkVisible(el.parentElement);
    }
    
    return elv;
}
 
function validateCEP(controlID)
{
	var oElement = document.getElementById(controlID);
	if (!oElement.value.match(/^[0-9]{5}\-[0-9]{3}$/))
	{
		alert("ATENÇÃO!\nO CEP deve ser completo e introduzido com separador.\nExemplo: 22000-000");
		ChangeImage(oElement.id,false);
		return false;
	}else{
		ChangeImage(oElement.id,true)
		return true;
	}
}

function validateMoney(controlID)
{
	var oElement = document.getElementById(controlID);
	if (!oElement.value.match(/^\d+(?:\,\d{0,2})?$/))
	{
		alert("O campo 'Valor da Dívida' não está correto.\nExemplo: 223,22");
		ChangeImage(oElement.id,false);
		return false;
	}else{
		if (ReturnCompareAlert(parseInt(oElement.value),25,"Valor da Dívida","25","EqualOrGreater")){
			ChangeImage(oElement.id,true)
			return true;
		}else{
			ChangeImage(oElement.id,false);
			return false;
		}
	}
}

function ForceEmail(obj)
{
	$("txtEmailDev").setAttribute("required",obj.checked);
	//alert(document.getElementById("txtEmail").getAttribute('required'));
}

function ValidateDate(controlID)
{
	var oElement = document.getElementById(controlID);
	var ctrlTitle = oElement.getAttribute('title');
	var compareTo = oElement.getAttribute('compareTo');
	var compareType = oElement.getAttribute('compareType');
	
	if (!oElement.value.match(/^(((0[1-9]|[12][0-9]|3[01])([/])(0[13578]|10|12)([/])(\d{4}))|(([0][1-9]|[12][0-9]|30)([/])(0[469]|11)([/])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([/])(02)([/])(\d{4}))|((29)(|\/)(02)([/])([02468][048]00))|((29)([/])(02)([/])([13579][26]00))|((29)([/])(02)([/])([0-9][0-9][0][48]))|((29)([/])(02)([/])([0-9][0-9][2468][048]))|((29)([/])(02)([/])([0-9][0-9][13579][26])))$/))
	{
		alert("ATENÇÃO!\nO campo '" + ctrlTitle + "' não está correcto.");
		ChangeImage(oElement.id,false);
		return false;
	}else{
		if (compareTo)
		{
			var objCompare = document.getElementById(compareTo);
			var objCompareTitle = objCompare.getAttribute('title');
			
			var dataArr1 = oElement.value.split("/");
			dia = dataArr1[0];
			mes = dataArr1[1];
			ano = dataArr1[2];
			var t = dia + "/" + mes + "/" + ano
			data1 = t.split("/").reverse().join("");
			/*
			data1 =  new Date(ano, parseInt(mes)-1, dia);
			alert(dia + "+" + mes + "+" + ano + " > " + data1 + " > " + data1.getDay);
			*/
			var dataArr2 = objCompare.value.split("/");
			dia = dataArr2[0];
			mes = dataArr2[1];
			ano = dataArr2[2];
			var t = dia + "/" + mes + "/" + ano
			data2 = t.split("/").reverse().join("");
			/*
			data2 = new Date(ano, parseInt(mes)-1, dia);
			alert(dia + "+" + mes + "+" + ano + " > " + data1 + " > " + data1.getDay);
			*/
			//alert(data1 + " > " + compareType + " > " + data2);
			
			if (ReturnCompareAlert(data1,data2,ctrlTitle,objCompareTitle,compareType)){
				ChangeImage(oElement.id,true);
				return true;
			}else{
				ChangeImage(oElement.id,false);
				return false;
			}
			
		}else{
			ChangeImage(oElement.id,true)
			return true;
		}
	}
}

function ValidateDateBetween(controlID)
{
	var oElement = document.getElementById(controlID);
	var ctrlTitle = oElement.getAttribute('title');
	var compareMin = oElement.getAttribute('compareMin');
	var compareMax = oElement.getAttribute('compareMax');
	
	if (!oElement.value.match(/^(((0[1-9]|[12][0-9]|3[01])([/])(0[13578]|10|12)([/])(\d{4}))|(([0][1-9]|[12][0-9]|30)([/])(0[469]|11)([/])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([/])(02)([/])(\d{4}))|((29)(|\/)(02)([/])([02468][048]00))|((29)([/])(02)([/])([13579][26]00))|((29)([/])(02)([/])([0-9][0-9][0][48]))|((29)([/])(02)([/])([0-9][0-9][2468][048]))|((29)([/])(02)([/])([0-9][0-9][13579][26])))$/))
	{
		alert("ATENÇÃO!\nO campo '" + ctrlTitle + "' não está correcto.");
		ChangeImage(oElement.id,false);
		return false;
	}else{
		if (compareMin)
		{
			var objCompareMin = document.getElementById(compareMin);
			var objCompareMax = document.getElementById(compareMax);
			
			var objCompareMinTitle = objCompareMin.getAttribute('title');
			var objCompareMaxTitle = objCompareMax.getAttribute('title');
			
			//Data Escrita
			var dataArr1 = oElement.value.split("/");
			dia = dataArr1[0];
			mes = dataArr1[1];
			ano = dataArr1[2];
			dataUsr = new Date(ano, parseInt(mes)-1, dia);
			
			//Data Minima
			var dataArr2 = objCompareMin.value.split("/");
			dia = dataArr2[0];
			mes = dataArr2[1];
			ano = dataArr2[2];
			dataMin = new Date(ano, parseInt(mes)-1, dia);
			
			//Data Máxima
			var dataArr3 = objCompareMax.value.split("/");
			dia = dataArr3[0];
			mes = dataArr3[1];
			ano = dataArr3[2];
			dataMax = new Date(ano, parseInt(mes)-1, dia);
		
			if (ReturnCompareAlert(dataUsr,dataMin,ctrlTitle,objCompareMinTitle,"EqualOrGreater") && ReturnCompareAlert(dataUsr,dataMax,ctrlTitle,objCompareMaxTitle,"LessOrEqual")){
				ChangeImage(oElement.id,true);
				return true;
			}else{
				ChangeImage(oElement.id,false);
				return false;
			}
			
		}else{
			ChangeImage(oElement.id,false)
			return false;
		}
	}
}

function ReturnCompareAlert(ctrl1,ctrl2,ctrlTitle,objCompareTitle,compareType)
{
	switch (compareType) {
		case 'Equal' : {
			if(!(ctrl1 == ctrl2)){
				alert("A " + ctrlTitle + " tem de ser igual a " + objCompareTitle + ".");
				return false;
				}
			}
			break;
		case 'Greater' : {
			if(!(ctrl1 > ctrl2)){
				alert("A " + ctrlTitle + " tem de ser maior a " + objCompareTitle + ".");
				return false;
				}
			}
			break;
		case 'Less' : {
			if(!(ctrl1 < ctrl2)){
				alert("A " + ctrlTitle + " tem de ser menor a " + objCompareTitle + ".");
				return false;
				}
			}
			break;
		case 'LessOrEqual' : {
			if(!(ctrl1 <= ctrl2)){
				alert("A " + ctrlTitle + " tem de ser igual ou menor a " + objCompareTitle + ".");
				return false;
				}
			}
			break;
		case 'EqualOrGreater' : {
			if(!(ctrl1 >= ctrl2)){
				alert("A " + ctrlTitle + " tem de ser igual ou maior a " + objCompareTitle + ".");
				return false;
				}
			}
			break;
	}
	return true;
}

function ValidateEmail(controlID)
{
	var oElement = document.getElementById(controlID);
	var ctrlTitle = oElement.getAttribute('title');
	if (!oElement.value.match(/^([\w\-\.]+)@((\[([0-9]{1,3}\.){3}[0-9]{1,3}\])|(([\w\-]+\.)+)([a-zA-Z]{2,4}))$/) || oElement.value == "")
	{
		alert("O campo '" + ctrlTitle + "' não está correto.");
		ChangeImage(oElement.id,false);
		return false;
	}else{
		ChangeImage(oElement.id,true)
		return true;
	}
}

function validateRequired(controlID)
{
	var oElement = document.getElementById(controlID);
	var ctrlTitle = oElement.getAttribute('title');
	if (!oElement.value.match(/^[0-9a-zA-z(\s)(\W)]*$/) || oElement.value == "")
	{
		alert("O campo '" + ctrlTitle + "' é de preenchimento obrigatório!");
		ChangeImage(oElement.id,false);
		return false;
	}else{
		ChangeImage(oElement.id,true)
		return true;
	}
}

function validateRequiredWithSpecificMessage(controlID,MsgOut)
{
	var oElement = document.getElementById(controlID);
	var ctrlTitle = oElement.getAttribute('title');
	if (!oElement.value.match(/^[0-9a-zA-z(\s)(\W)]*$/) || oElement.value == "")
	{
		alert("ATENÇÃO!\n" + MsgOut);
		ChangeImage(oElement.id,false);
		return false;
	}else{
		ChangeImage(oElement.id,true)
		return true;
	}
}
 
 
 function ChangeImage(controlID,isOk)
 {
	var img = document.getElementById("img_" + controlID);
	if (img)
		isOk ? img.src = frmOK : img.src = frmNotOK;
 }
  
function ActivateEmpFields(showPJ,arrPJ,arrPF)
{
    if (!arrPF || !arrPJ)
        return;
        
    arrPF.each( function(ctrl)
    {
        var obj = $(ctrl);
        if (obj)
        {
            if (!showPJ)
                Element.show(obj);
            else
                Element.hide(obj);
        }
	});
	
	 arrPJ.each( function(ctrl)
    {
        var obj = $(ctrl);
        if (obj)
        {
            if (showPJ)
                Element.show(obj);
            else
                Element.hide(obj);
        }
	});
	
    /*
	var obj = document.getElementById("lblRS");
	if (obj != null)
		obj.style.display = (bolAction) ? 'block' : 'none';
		
	var obj = document.getElementById("lblNome");
	if (obj != null)
		obj.style.display = (bolAction) ? 'none' : 'block';
		
	var obj = document.getElementById("lblCPF");
	if (obj != null)
		obj.style.display = (bolAction) ? 'none' : 'block';
		
	var obj = document.getElementById("txtCPF");
	if (obj != null)
		obj.style.display = (bolAction) ? 'none' : 'block';	
		
	var obj = document.getElementById("lblCNPJ");
	if (obj != null)
		obj.style.display = (bolAction) ? 'block' : 'none';
		
	var obj = document.getElementById("txtCNPJ");
	if (obj != null)
		obj.style.display = (bolAction) ? 'block' : 'none';
	
	var obj = document.getElementById("EmpField1");
	if (obj != null)
	obj.className = (bolAction) ? 'show' : 'hide';
	
	var obj = document.getElementById("EmpField2");
	if (obj != null)
		obj.className = (bolAction) ? 'show' : 'hide';
	
	var obj = document.getElementById("EmpField3");
	if (obj != null)
		obj.className = (bolAction) ? 'show' : 'hide';
		
	var obj = document.getElementById("EmpField4");
	if (obj != null)
		obj.className = (!bolAction) ? 'show' : 'hide';
	*/
}

function validateForm(theForm)
{
	var els = theForm.elements;
	var Submit = true;
	for(i=0; i<els.length; i++)
	{
		var isRequired = els[i].getAttribute('required');
		var dependsOn = els[i].getAttribute('dependsOn');
		var valueToCheck = els[i].getAttribute('valueToCheck');
		var Validation = els[i].getAttribute('call');
				
        if(!chkVisible(els[i]))
            continue;
		
		var funcOut;
		//alert(els[i].id + "  -  " + isRequired + "  -  " + Validation);
		if (eval(isRequired) && Validation)
		{
			if (els[i].className == 'show' || els[i].style.display == 'block' || els[i].style.display == '')
			{
				funcOut = eval(Validation);
			}
		}else{
				funcOut = true;
		}
		//alert("funcOut: " + funcOut);
		Submit = Submit && funcOut;
		//alert("Submit: " + Submit);
	}
	return Submit;
}

function CompareToValue(el,compValue)
{
	switch(el.type){
		case "select-one" :
			if(el.options[els[i].selectedIndex].value == compValue)
				return true;
		break;
		
		case "text":
			if(el.value == compValue)
				return true;
		break;

		case "textarea":
			if(el.value == compValue)
				return true;
		break;

		case "checkbox":
			if(el.checked == compValue)
				return true;
		break;

		case "radio":
			if(eval(el.checked) == eval(compValue))
				return true;
		break;
	}
	return false;
}


function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		//alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	
	return result;
}

function validEmail(formField,fieldLabel,required)
{
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		//alert("Please enter a complete email address in the form: yourname@yourdomain.com");
		formField.focus();
		result = false;
	}
   
  return result;

}

function validDate(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var elems = formField.value.split("/");
 		
 		result = (elems.length == 3); // should be three components
 		
 		if (result)
 		{
 			var month = parseInt(elems[1],10);
  			var day = parseInt(elems[0],10);
 			var year = parseInt(elems[2],10);
			result = allDigits(elems[1]) && (month > 0) && (month < 13) &&
					 allDigits(elems[0]) && (day > 0) && (day < 32) &&
					 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
 		}
 		
  		if (!result)
 		{
 			alert('A data introduzida não se encontra correcta.');
			//formField.focus();		
		}
	} 
	
	return result;
}
function HumanValidation(value1, value2)
{
	SetFormField("txtCAPTCHA",value1+value2);
}
function Sort(column)
{
	if (GetFormField("txtSort") == column)
	{
		SetFormField("txtOrder", GetFormField("txtOrder")== "ASC" ? "DESC":"ASC");
	}
	else
	{
		SetFormField("txtOrder","DESC");
	}
	SetFormField("txtSort",column);
	
	
	document.forms[0].submit();
}