function validaCampo(txtName, tamanho)
{
	if ((txtName == null) || (txtName == "") || (txtName.length < tamanho))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function selectIndice(campo)
{
	if (campo.selectedIndex != 0)
	{
		return true;
	}
	else
	{
		return false;
	}
}

function verRadio(campo)
{
	var checado = false;

	var i;
	for( i = 0; i < campo.length ; i++ ) 
	{
		if (campo[i].checked == true)
		{
			checado = true;
		}
	}
	return checado;
}

function moveItemComboBox(obj, nMove)
{
	var total	= obj.length;
	var aItem 	= obj.selectedIndex;
	var nItem	= (aItem + nMove);

	if (aItem == -1)
	{
		window.alert('Escolha um item.');
	}
	else if (aItem == 0 && nMove == -1)
	{
		window.alert('O item já está no topo da hierarquia.');
	}
	else if (aItem == (total-1) && nMove == 1)
	{
		window.alert('O item já está no final da hierarquia.');
	}
	else
	{
		var itemAValue 	= obj.options[aItem].value;
		var itemAText 	= obj.options[aItem].text;

		var itemBValue 	= obj.options[nItem].value;
		var itemBText 	= obj.options[nItem].text;

		obj.options[aItem].value = itemBValue;
		obj.options[aItem].text	 = itemBText;

		obj.options[nItem].value = itemAValue;
		obj.options[nItem].text	 = itemAText;

		obj.selectedIndex = nItem;
	}

}
	
function rtnPosY(e)
{
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY)
	{
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY)
	{
		posy = e.clientY + document.body.scrollTop;
	}
	return posy;
}

function rtnPosX(e)
{
	var posx = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY)
	{
		posx = e.pageX;
	}
	else if (e.clientX || e.clientY)
	{
		posx = e.clientX + document.body.scrollLeft;
	}
	return posx;
	// posx and posy contain the mouse position relative to the document
	// Do something with this information
}

function checkAll(chk)
{
	if (eval('document.frm.'+ chk +'.checked') == true)
	{
		Status = 1;
	}
	else
	{
		Status = 0;	
	}
	for (var n in document.frm)
	{
		if (n.substring(0,chk.length) == chk)
		{
			eval("document.frm." + n + ".checked = " + Status);
		}
	}
}

function podeExcluir()
{
	if (confirm("Você tem certeza que deseja excluir este item ?"))
	{
		return (true)
	}
	else
	{
		return (false)
	}
}



/**
 * DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */
// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s)
{
	var i;
	for (i = 0; i < s.length; i++)
	{
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{
	var i;
	var returnString = "";
	// Search through string's characters one by one.
	// If character is not in bag, append to returnString.
	for (i = 0; i < s.length; i++)
	{
        	var c = s.charAt(i);
        	if (bag.indexOf(c) == -1) returnString += c;
    	}
	return returnString;
}

function daysInFebruary (year)
{
	// February has 29 days in any year evenly divisible by four,
	// EXCEPT for centurial years which are not also divisible by 400.
	return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n)
{
	for (var i = 1; i <= n; i++)
	{
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
	}
   	return this
}

function isDate(dtStr)
{
	var daysInMonth = DaysArray(12)
	var pos1		= dtStr.indexOf(dtCh)
	var pos2		= dtStr.indexOf(dtCh,pos1+1)
	var strDay		= dtStr.substring(0,pos1)
	var strMonth	= dtStr.substring(pos1+1,pos2)
	var strYear		= dtStr.substring(pos2+1)
	strYr			= strYear

	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++)
	{
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month	= parseInt(strMonth)
	day	= parseInt(strDay)
	year	= parseInt(strYr)
	if (pos1==-1 || pos2==-1)
	{
		alert("O formato da data precisa ser : dd/mm/aaaa")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12)
	{
		alert("Insira um mês valido")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
	{
		alert("Insira um dia valido")
		return false
	}
	if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear)
	{
		alert("Insira o ano com quatro digitos entre " + minYear + " e " + maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Insira uma data válida")
		return false
	}
	return true
}

function fMaskDate(src, event)
{
	if (SomenteNumeroFirefox(event))
	{
		mask = '##/##/####';

		var i = src.value.length;
		var saida = mask.substring(0,1);
		var texto = mask.substring(i);
		if (texto.substring(0,1) != saida)  src.value += texto.substring(0,1);
			
		return(true)
	}
	else return(false)
}

function fMaskTime(src)
{
	if (((event.keyCode) > 47) && ((event.keyCode) < 58))
	{
		mask = '##:##';

		var i = src.value.length;
		var saida = mask.substring(0,1);
		var texto = mask.substring(i);
		if (texto.substring(0,1) != saida)  src.value += texto.substring(0,1);
			
		return(true)
	}
	else return(false)
}

function fMaskCPF(src)
{
	if (((event.keyCode) > 47) && ((event.keyCode) < 58))
	{
		mask = '###.###.###-##';

		var i = src.value.length;
		var saida = mask.substring(0,1);
		var texto = mask.substring(i);
		if (texto.substring(0,1) != saida)  src.value += texto.substring(0,1);
			
		return(true)
	}
	else return(false)
}

function fMaskCEP(src)
{
	if (((event.keyCode) > 47) && ((event.keyCode) < 58))
	{
		mask = '#####-###';

		var i = src.value.length;
		var saida = mask.substring(0,1);
		var texto = mask.substring(i);
		if (texto.substring(0,1) != saida)  src.value += texto.substring(0,1);
			
		return(true)
	}
	else return(false)
}

function fMaskTelefone(src)
{
	if (((event.keyCode) > 47) && ((event.keyCode) < 58))
	{
		mask = '####-####';

		var i = src.value.length;
		var saida = mask.substring(0,1);
		var texto = mask.substring(i);
		if (texto.substring(0,1) != saida)  src.value += texto.substring(0,1);
			
		return(true)
	}
	else return(false)
}

function fMaskCNPJ(src)
{
	if (((event.keyCode) > 47) && ((event.keyCode) < 58))
	{
		mask = '##.###.###/####-##';

		var i = src.value.length;
		var saida = mask.substring(0,1);
		var texto = mask.substring(i);
		if (texto.substring(0,1) != saida)  src.value += texto.substring(0,1);
			
		return(true)
	}
	else return(false)
}

/*
	----------------------------------------------------------------------------- 
	FUNÇÃO DE FORMATAÇÃO NUMÉRICA
	----------------------------------------------------------------------------- 
*/
var DECIMAL		= ',';
var SEPARATOR	= '.';

function tirarZerosEsquerda(STR)
{
	var int		= '0123456789';
	var sAux	= '';
	var i		= 0;

	STR = new String(STR);
	while (i < STR.length)
	{
		pChar = STR.charAt(i);
		if (int.indexOf(pChar) != -1) sAux += STR.charAt(i);
		i++;
	}

	STR		= new String(sAux);
	sAux	= '';
	i		= 0;

	while (i < STR.length)
	{
		if (STR.charAt(i) != '0')
		{
			sAux = STR.substring(i,STR.length)
			i = STR.length;
		}
		i++;
	}
	return  sAux;
}

function refreshCampo(obj)
{
	obj.value = obj.value;
}

/*************
	Geral
**************/

function MostraObj(id, status) {
    var obj = document.getElementById(id);
    if (obj != null) {
        obj.style.display = (status == 1) ? 'block' : 'none';
    }
}
function mostraObj(id, status) {
    MostraObj(id, status);
}
    
function changeClass(obj, status) {
	obj.className = (status) ? 'odd' : 'even';
}

function markLine(objId, status) {
	var obj = document.getElementById(objId);
	if (obj != null) {		
		changeClass(obj, status);
	}
}

function fmtNumero(numero, decimal) {

	var num = new NumberFormat();
	num.setInputDecimal(',');
	num.setNumber(numero); // obj.value is '1.000,00'
	num.setPlaces(decimal, true);
	num.setCurrencyValue('');
	num.setCurrency(false);
	num.setCurrencyPosition(num.LEFT_OUTSIDE);
	num.setNegativeFormat(num.PARENTHESIS);
	num.setNegativeRed(false);
	num.setSeparators(true, '.', ',');

	return num.toFormatted();
}

function fmtNumeroLimpo(numero, decimal) {

	var num = new NumberFormat();
	num.setInputDecimal(',');
	num.setNumber(numero); // obj.value is '1.000,00'
	num.setPlaces(decimal, true);
	num.setCurrencyValue('');
	num.setCurrency(false);
	num.setCurrencyPosition(num.LEFT_OUTSIDE);
	num.setNegativeFormat(num.LEFT_DASH);
	num.setNegativeRed(false);
	num.setSeparators(false, ',', ',');


	return num.toFormatted();
}

function fmtNumeroCalculo(numero, decimal) {

	var num = new NumberFormat();
	num.setInputDecimal('.');
	num.setNumber(numero); // obj.value is '1.000,00'
	num.setPlaces(decimal, true);
	num.setCurrencyValue('');
	num.setCurrency(false);
	num.setCurrencyPosition(num.LEFT_OUTSIDE);
	num.setNegativeFormat(num.PARENTHESIS);
	num.setNegativeRed(false);
	num.setSeparators(true, '.', ',');

	return num.toFormatted();
}

function validaEmail(str)
{
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)

	if (str.indexOf(at)==-1) {
	   return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    return false
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    return false
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    return false
	 }
	
	 if (str.indexOf(" ")!=-1){
	    return false
	 }
	 
	 if ((lstr-1) == ldot) {
	    return false;
	 }

	 return true					
}



function getSel() {
	return (!!document.getSelection) ? document.getSelection() :
	       (!!window.getSelection)   ? window.getSelection() :
	       document.selection.createRange().text;
}

function FormataValor(campo,tammax,casas,teclapres) 
 {
	var tecla = teclapres.keyCode;

	vr = campo.value;
    vr = vr.replace( getSel(), "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	
	vr  = tirarZerosEsquerda(vr); // Limpa a string, deixando apenas os n?meros validos

	tam = vr.length;
	
/*
	if (tam < tammax && tecla != 8)
	{
		tam = vr.length + 1;
	}

	if (tecla == 8 )
	{
		tam = tam - 1; 
	}
	*/
	
	if (tecla == 46 || tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105)
	{
		// Verifica se o número de casas decimais é maior de 0 e se o tamanho da string é menor ou igual o número de casas decimais
		if (casas > 0 && tam <= casas)
		{
			// Verifica se o tamanho da string é igual a quantidade de casas decimais definida
			if (tam == casas) sTmp = '0' + DECIMAL + vr;
			// Verifica se o tamanho da string é menor que a quantidade de casas decimais definida
			else if (tam < casas)
			{
				sTmp = '0' + DECIMAL;
				for(j=casas; j > tam; j--) 	// Realiza o Loop para inserir a quantidade de zeros após o DECIMAL antes de inserir o número digitado até o momento
					sTmp += '0';			// Insere zero
				sTmp += vr; 				// Insere o valor após colocar todos os zeros necessários
			}
		}
		else	// Caso o tamanho da string seja maior que a quantidade de casas decimais definida
		{
			decimal = vr.substring(tam-casas,tam);	// Define o conteúdo valor decimal da string

			inteiro = '';			// Variável inicial do valor inteiro
			i 		= casas + 1;	// Ponto inicial para o Loop que insere os separadores no valor inteiro, definido pelo próximo valor após o conteúdo decimal
			count 	= 0;			// Variável usada para inserir o SEPARADOR no valor inteiro
			while (i <= tam)		// Realiza o Loop pelo conteúdo inteiro do valor definido
			{
				// Insere o SEPARADOR ao termos um valor inteiro divisil por 3
				if (count==3)
				{
					inteiro = SEPARATOR + inteiro;
					count = 0;	// Zera o valor da variável usada para inserir o SEPARADOR
				}
				pChar 	= vr.substring(tam-i,tam-i+1);	// Caracter atual (do loop)
				inteiro = pChar + inteiro;				// Acrescenta o caractere a variável inteira
				count++;								// Aumenta 1 (um) a variável count
				i++;									// Aumenta 1 (um) a variável i
			}
			if (casas > 0)	sTmp = (inteiro + DECIMAL + decimal);	// Se o número de casas decimais seja maior que zero define o conteudo com o DECIMAL
			else			sTmp = inteiro;							// Se o número de casas decimais seja igual a zero o conteúdo final é igual ao conteúdo da variável Inteiro

			//if (tecla == 8) sTmp += ' ';	// Se a tecla digitada for o BACKSPACE inserimos um espaço vazio ao final da string montada pois ele será deletado pela ação do backspace.
		}
		campo.value = sTmp;							// Define o campo com a String formatada
	}
}


function SomenteNumeroFirefox(e) 
{ 
  var key //= (window.event) ? event.keyCode : e.which;   
  
  if (window.event)     
	key = event.keyCode   
  else     
	key = e.which   // Was key that was pressed a numeric character (0-9) or backspace (8)?   
	
  if ( key > 47 && key < 58 || key == 8 )     
	return; // if so, do nothing   
  else // otherwise, discard character     
	if (window.event) //IE       
		window.event.returnValue = null;     
	else //Firefox       
		e.preventDefault();
}





function unformatNumber(valor) {
	
	var valor = "" + valor;
	
	if ((valor == "") || (valor == null) || (valor == 'undefined')) { return "0"; }
    resposta = "";

	for (i = 0; i < valor.length; i++) {
	
	    if ((valor.charAt(i) == ","))
	        resposta += ".";
	
		if ((valor.charAt(i) != "-") && (valor.charAt(i) != ".") && (valor.charAt(i) != ","))
            resposta += valor.charAt(i);
    }
							 
	return resposta;
}

function dateDiff(strDate1,strDate2) {
    return (((Date.parse(strDate2))-(Date.parse(strDate1)))/(24*60*60*1000)).toFixed(0);
}


function ConfirmDelete() { 
	if (confirm('Deseja realmente excluir este registro?')) 
	{  
	    return true;
	} else {
		return false;
	}
}





function FormataValorDown(campo,tammax,casas,teclapres) 
 {
	var tecla = teclapres.keyCode;

	vr = campo.value;
    vr = vr.replace( getSel(), "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	
	vr  = tirarZerosEsquerda(vr); // Limpa a string, deixando apenas os n?meros validos

	tam = vr.length;
	
	if (tam < tammax && tecla != 8)
	{
		tam = vr.length + 1;
	}

	if (tecla == 8 )
	{
		tam = tam - 1; 
	}
	
	if (tecla == 46 || tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105)
	{
		// Verifica se o número de casas decimais é maior de 0 e se o tamanho da string é menor ou igual o número de casas decimais
		if (casas > 0 && tam <= casas)
		{
			// Verifica se o tamanho da string é igual a quantidade de casas decimais definida
			if (tam == casas) sTmp = '0' + DECIMAL + vr;
			// Verifica se o tamanho da string é menor que a quantidade de casas decimais definida
			else if (tam < casas)
			{
				sTmp = '0' + DECIMAL;
				for(j=casas; j > tam; j--) 	// Realiza o Loop para inserir a quantidade de zeros após o DECIMAL antes de inserir o número digitado até o momento
					sTmp += '0';			// Insere zero
				sTmp += vr; 				// Insere o valor após colocar todos os zeros necessários
			}
		}
		else	// Caso o tamanho da string seja maior que a quantidade de casas decimais definida
		{
			decimal = vr.substring(tam-casas,tam);	// Define o conteúdo valor decimal da string

			inteiro = '';			// Variável inicial do valor inteiro
			i 		= casas + 1;	// Ponto inicial para o Loop que insere os separadores no valor inteiro, definido pelo próximo valor após o conteúdo decimal
			count 	= 0;			// Variável usada para inserir o SEPARADOR no valor inteiro
			while (i <= tam)		// Realiza o Loop pelo conteúdo inteiro do valor definido
			{
				// Insere o SEPARADOR ao termos um valor inteiro divisil por 3
				if (count==3)
				{
					inteiro = SEPARATOR + inteiro;
					count = 0;	// Zera o valor da variável usada para inserir o SEPARADOR
				}
				pChar 	= vr.substring(tam-i,tam-i+1);	// Caracter atual (do loop)
				inteiro = pChar + inteiro;				// Acrescenta o caractere a variável inteira
				count++;								// Aumenta 1 (um) a variável count
				i++;									// Aumenta 1 (um) a variável i
			}
			if (casas > 0)	sTmp = (inteiro + DECIMAL + decimal);	// Se o número de casas decimais seja maior que zero define o conteudo com o DECIMAL
			else			sTmp = inteiro;							// Se o número de casas decimais seja igual a zero o conteúdo final é igual ao conteúdo da variável Inteiro

			if (tecla == 8) sTmp += ' ';	// Se a tecla digitada for o BACKSPACE inserimos um espaço vazio ao final da string montada pois ele será deletado pela ação do backspace.
		}
		campo.value = sTmp;							// Define o campo com a String formatada
	}
}



//// imprimir ////
function printThis() {
	window.open('?printversion=print', 'printversion', 'width=800; scrollbar=yes; height=400; top=20;');
}






function mascara_global(mascara, valor){
	tvalor = "";
	ret = "";
	caracter = "#";
	separador = "|";
	mascara_utilizar = "";
	valor = trim(valor);
	if (valor == "")return valor;
	temp = mascara.split(separador);
	dif = 1000;
	
	valorm = valor;
	//tirando mascara do valor já existente
	for (i=0;i<valor.length;i++){
		if (!isNaN(valor.substr(i,1))){
			tvalor = tvalor + valor.substr(i,1);
		}
	}
	valor = tvalor;
	
	//formatar mascara dinamica
	for (i = 0; i<temp.length;i++){
		mult = "";
		validar = 0;
		for (j=0;j<temp[i].length;j++){
			if (temp[i].substr(j,1) == "]"){
				temp[i] = temp[i].substr(j+1);
				break;
			}
			if (validar == 1)mult = mult + temp[i].substr(j,1);
			if (temp[i].substr(j,1) == "[")validar = 1;
		}
		for (j=0;j<valor.length;j++){
			temp[i] = mult + temp[i];
		}
	}
	
	//verificar qual mascara utilizar
	if (temp.length == 1){
		mascara_utilizar = temp[0];
		mascara_limpa = "";
		for (j=0;j<mascara_utilizar.length;j++){
			if (mascara_utilizar.substr(j,1) == caracter){
				mascara_limpa = mascara_limpa + caracter;
			}
		}
		tam = mascara_limpa.length;
	}else{
		//limpar caracteres diferente do caracter da máscara
		for (i=0;i<temp.length;i++){
			mascara_limpa = "";
			for (j=0;j<temp[i].length;j++){
				if (temp[i].substr(j,1) == caracter){
					mascara_limpa = mascara_limpa + caracter;
				}
			}
			if (valor.length > mascara_limpa.length){
				if (dif > (valor.length - mascara_limpa.length)){
					dif = valor.length - mascara_limpa.length;
					mascara_utilizar = temp[i];
					tam = mascara_limpa.length;
				}
			}else if (valor.length < mascara_limpa.length){
				if (dif > (mascara_limpa.length - valor.length)){
					dif = mascara_limpa.length - valor.length;
					mascara_utilizar = temp[i];
					tam = mascara_limpa.length;
				}
			}else{
				mascara_utilizar = temp[i];
				tam = mascara_limpa.length;
				break;
			}
		}
	}
	
	//validar tamanho da mascara de acordo com o tamanho do valor
	if (valor.length > tam){
		valor = valor.substr(0,tam);
	}else if (valor.length < tam){
		masct = "";
		j = valor.length;
		for (i = mascara_utilizar.length-1;i>=0;i--){
			if (j == 0) break;
			if (mascara_utilizar.substr(i,1) == caracter){
				j--;
			}
			masct = mascara_utilizar.substr(i,1) + masct;
		}
		mascara_utilizar = masct;
	}
	
	//mascarar
	j = mascara_utilizar.length -1;
	for (i = valor.length - 1;i>=0;i--){
		if (mascara_utilizar.substr(j,1) != caracter){
			ret = mascara_utilizar.substr(j,1) + ret;
			j--;
		}
		ret = valor.substr(i,1) + ret;
		j--;
	}
	return ret;
}

// Script: trim
// Função: remove os espaços em branco que estiverem no início ou no final da string
// Uso   : <input onblur="this.value = trim(this.value)">
function trim(s) {
  return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
}

function SomenteNumeroFirefox(e) 
{ 
  var key //= (window.event) ? event.keyCode : e.which;   
  
  if (window.event)     
	key = event.keyCode   
  else     
	key = e.which   // Was key that was pressed a numeric character (0-9) or backspace (8)?   
	
  if ( key > 47 && key < 58 || key == 8 )     
	return true; // if so, do nothing   
  else // otherwise, discard character     
	if (window.event) //IE       
		window.event.returnValue = null;     
	else //Firefox       
		e.preventDefault();
}  

function JanelaConfigurador(url, width, height)
{
    var nome = 'Configurador';
    
	var w = window.screen.width;
	var h = window.screen.height;
	var l = (w-width)/2;
	var t = (h-height)/2;

	wAbout = window.open(url, nome, 'SCROLLBARS=yes,RESIZABLE=no,TOOLBAR=no,STATUS=no,MENUBAR=no,width='+width+',height='+height+',top='+t+',left='+l);

	wAbout.blur();
	window.focus();	
	wAbout.focus();
}


function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? ',' + x[1] + (x[1].length > 1 ? '' : '0') : ',00';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + '.' + '$2');
	}
	return x1 + x2;
}