// Váriavel para o objecto XMLHttpRequest
var xmlHttpObj;

function CreateXmlHttpRequestObject( )
{
	// detecção do browser simplificada
	// e sem tratamento de excepções
	xmlHttpObj_temp=null;

	try
	{
		//IE7 e firefox
		xmlHttpObj_temp=new XMLHttpRequest();
	}
	catch (e)
	{
		try
		{
			// IE 5 e 6
			xmlHttpObj_temp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		 catch (e)
        {
        	alert("Your browser does not support AJAX!");
        }
	}

	return xmlHttpObj_temp;
}

function MakeXMLHTTPCall()
{
	var endereco = document.getElementById('subs_endereco');
	var periodicidade = document.getElementById('subs_id_periodicidade_assinatura');
	var nr_periodicidade = document.getElementById('subs_nr_periodicidades_pagas');
	var data_inicio = document.getElementById('subs_data_inicio_periodicidade');
	var desconto = document.getElementById('subs_desconto');

	xmlHttpObj = CreateXmlHttpRequestObject();

	if(!verifica_formulario(true))
	{
		return false;
	}

	if (xmlHttpObj == null)
	{
		alert ("Your browser does not support AJAX!");
	}
	else
	{
		show_loader('block','');

		// Definição do URL para efectuar pedido HTTP - método GET
		// O ? no final obriga o brower a ler outra vez o xml, não fazendo cache
		xmlHttpObj.open("POST",endereco.value, true);
		// Registo do EventHandler
		xmlHttpObj.onreadystatechange = stateHandler;
        xmlHttpObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttpObj.send("assinaturas_calculo=1"+"&id_periodicidade_assinatura="+periodicidade.value+"&nr_periodicidades_pagas="+nr_periodicidade.value+"&data_inicio_periodicidade="+data_inicio.value+"&id_desconto="+desconto.value);
	}

	return true;
}


function stateHandler()
{
	var valor = document.getElementById('subs_valor');
	var data_fim = document.getElementById('subs_data_fim_periodicidade');

	//alert('Handler');
	if ( xmlHttpObj.readyState == 4 && xmlHttpObj.status == 200) // resposta do servidor completa
	{

		// propriedade responseXML que devolve a resposta do servidor
		var docxml = xmlHttpObj.responseText;

		//alert(docxml);
		//document.getElementById('div_formulario').innerHTML = docxml;

		var variaveis = docxml.split("|");

		if(variaveis && variaveis.length >0)
		{
			data_fim.value = variaveis[0];
			valor.value = variaveis[1]
		}
		/*
		for(i=0;i<variaveis.length;i++)
		{
			alert(variaveis[i]);
		}*/

		show_loader('none','');
	}
}


function verifica_formulario(for_ajax)
{
	var nova_subscricao = document.getElementById('subs_nova_subscricao');

	var div_erro_js = document.getElementById('div_erro_js');
	div_erro_js.innerHTML = '';
	div_erro_js.style.display = 'none';

	if(nova_subscricao.checked)
	{
		for(var i=1; i<= 3; i++)
		{
			var js_erro = document.getElementById('fo_js_erro_'+i);
			js_erro.innerHTML = '';
		}

		var nr_periodicidade = document.getElementById('subs_nr_periodicidades_pagas');
		var js_erro1 = document.getElementById('fo_js_erro_1');
		if(!ForceEntry(nr_periodicidade,'N.º Periodicidades'))
		{
			js_erro1.innerHTML = '&nbsp;*';
			div_erro_js.innerHTML = '* Campo de preenchimento obrigatório';
			div_erro_js.style.display = 'block';
			return false;
		}
		if(!ForceNumber(nr_periodicidade,'N.º Periodicidades'))
		{
			js_erro1.innerHTML = '&nbsp;*';
			div_erro_js.innerHTML = '* Tem que ser um número inteiro positivo e maior do que Zero.';
			div_erro_js.style.display = 'block';
			return false;
		}
		if(nr_periodicidade.value < 1)
		{
			//alert('Campo "N.º Periodicidades" tem que ser maior do que Zero.');
			js_erro1.innerHTML = '&nbsp;*';
			div_erro_js.innerHTML = '* Tem que ser um número inteiro positivo e maior do que Zero.';
			div_erro_js.style.display = 'block';
			nr_periodicidade.select();
			nr_periodicidade.focus();
			return false;
		}

		var data_inicio = document.getElementById('subs_data_inicio_periodicidade');
		var js_erro2 = document.getElementById('fo_js_erro_2');
		if(!ForceEntry(data_inicio,'Data de Ínicio'))
		{
			js_erro2.innerHTML = '&nbsp;*';
			div_erro_js.innerHTML = '* Campo de preenchimento obrigatório';
			div_erro_js.style.display = 'block';
			return false;
		}
		if(!isDate(data_inicio,'Data de Ínicio'))
		{
			js_erro2.innerHTML = '&nbsp;*';
			div_erro_js.innerHTML = '* Não é um data válida. Formato: aaaa-mm-dd.';
			div_erro_js.style.display = 'block';
			return false;
		}

		var subs_valor = document.getElementById('subs_valor');
		var js_erro3 = document.getElementById('fo_js_erro_3');
		if(!for_ajax)
		{
			if (isWhitespace(subs_valor.value)) {
				js_erro3.innerHTML = '&nbsp;*';
				div_erro_js.innerHTML = '* Campo de preenchimento obrigatório';
				div_erro_js.style.display = 'block';
				//alert("É necessário preencher os campos: \"N.º Periodicidade\" e \"Data de Ínicio\"");
				subs_valor.focus();
				subs_valor.select();
				return false;
			}
		}
	}

	return true;
}


function  mostra_nova_subscricao()
{
	var nova_subscricao = document.getElementById('subs_nova_subscricao');
	var div_nova_subscricao = document.getElementById('div_nova_subscricao');

	if(nova_subscricao.checked)
	{
		div_nova_subscricao.style.display = 'block';
	}
	else
	{
		div_nova_subscricao.style.display = 'none';
	}
}

function show_loader(op,id_loader)
{
	document.getElementById('div_loader'+id_loader).style.display = op;
}

function mostrar_pagamento_detalhe(id_tipo_pagamento,id_elemento)
{
	var detalhe = document.getElementById('subs_tpcd_'+id_tipo_pagamento).value;
	if(detalhe == "")
	{
		detalhe = "Obs.";
	}
	detalhe += ":";

	document.getElementById('pagamento_detalhe'+id_elemento).innerHTML = detalhe;

}

function MakeXMLHTTPCall2(id_elemento)
{

	var endereco = document.getElementById('subs_endereco');
	var periodicidade = document.getElementById('subs_id_periodicidade_assinatura');
	var nr_periodicidade = document.getElementById('subs_nr_periodicidades_pagas'+id_elemento);
	var data_inicio = document.getElementById('subs_data_inicio_periodicidade'+id_elemento);
	var desconto = document.getElementById('subs_desconto'+id_elemento);

	xmlHttpObj = CreateXmlHttpRequestObject();

	if(!verifica_formulario2(true,id_elemento))
	{
		return false;
	}

	if (xmlHttpObj == null)
	{
		alert ("Your browser does not support AJAX!");
	}
	else
	{
		show_loader('block',id_elemento);

		// Definição do URL para efectuar pedido HTTP - método GET
		// O ? no final obriga o brower a ler outra vez o xml, não fazendo cache
		xmlHttpObj.open("POST",endereco.value, true);
		// Registo do EventHandler
		xmlHttpObj.onreadystatechange = stateHandler2;
        xmlHttpObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttpObj.send("assinaturas_calculo=1"+"&id_periodicidade_assinatura="+periodicidade.value+"&nr_periodicidades_pagas="+nr_periodicidade.value+"&data_inicio_periodicidade="+data_inicio.value+"&id_desconto="+desconto.value+"&id_elemento="+id_elemento);
	}

	return true;
}

function stateHandler2()
{
	if( xmlHttpObj.readyState == 4 && xmlHttpObj.status == 200) // resposta do servidor completa
	{
		var id_elemento = '';

		// propriedade responseXML que devolve a resposta do servidor
		var docxml = xmlHttpObj.responseText;
		//alert(docxml);

		var variaveis = docxml.split("|");

		if(variaveis && variaveis.length >0)
		{

			id_elemento = variaveis[2];
			var valor = document.getElementById('subs_valor'+id_elemento);
			var data_fim = document.getElementById('subs_data_fim_periodicidade'+id_elemento);


			data_fim.value = variaveis[0];
			valor.value = variaveis[1]
		}
		/*
		for(i=0;i<variaveis.length;i++)
		{
			alert(variaveis[i]);
		}*/

		//document.getElementById('div_formulario').innerHTML = docxml;

		show_loader('none',id_elemento);
	}
}

function verifica_formulario2(for_ajax,id_elemento)
{

	var nr_periodicidade = document.getElementById('subs_nr_periodicidades_pagas'+id_elemento);
	if(!ForceEntry(nr_periodicidade,'N.º Periodicidades'))
	{
		return false;
	}
	if(!ForceNumber(nr_periodicidade,'N.º Periodicidades'))
	{
		return false;
	}
	if(nr_periodicidade.value < 1)
	{
		alert('Campo "N.º Periodicidades" tem que ser maior do que Zero.');
		nr_periodicidade.select();
		nr_periodicidade.focus();
		return false;
	}

	var data_inicio = document.getElementById('subs_data_inicio_periodicidade'+id_elemento);
	if(!ForceEntry(data_inicio,'Data de Ínicio'))
	{
		return false;
	}
	if(!isDate(data_inicio,'Data de Ínicio'))
	{
		return false;
	}

	var subs_valor = document.getElementById('subs_valor'+id_elemento);
	if(!for_ajax)
	{
		if (isWhitespace(subs_valor.value)) {
			alert("É necessário preencher os campos: \"N.º Periodicidade\" e \"Data de Ínicio\"");
			subs_valor.focus();
			subs_valor.select();
			return false;
		}
	}

	return true;
}


function limpar_data(id_elemento)
{
	var elemento = document.getElementById(id_elemento);
	elemento.value= '';
}


function imprimir_recibo(endereco,data_pagamento)
{
	var dp = document.getElementById(data_pagamento);
	if(dp.value != "" || (dp.value == "" && confirm('O campo "Data do Pagamento" esta em branco. Deseja mesmo imprimir?')))
	{
		window.open(endereco,'Imprimir','width=800,height=600,location=no,scrollbars=yes,menubar=yes,resizable=yes');
	}

}

function get_periodicidades(id_tipo_assinatura)
{
	var endereco = document.getElementById('subs_endereco');

	xmlHttpObj = CreateXmlHttpRequestObject();


	if (xmlHttpObj == null)
	{
		alert ("Your browser does not support AJAX!");
	}
	else
	{
		show_loader('block','');

		// Definição do URL para efectuar pedido HTTP - método GET
		// O ? no final obriga o brower a ler outra vez o xml, não fazendo cache
		xmlHttpObj.open("POST",endereco.value, true);
		// Registo do EventHandler
		xmlHttpObj.onreadystatechange = get_periodicidadesHandler;
        xmlHttpObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttpObj.send("get_select_periodicidade=1"+"&id_tipo_assinatura="+id_tipo_assinatura);
	}

	if(!verifica_formulario(true))
	{
		return false;
	}

	return true;
}

function get_periodicidadesHandler()
{

	if ( xmlHttpObj.readyState == 4 && xmlHttpObj.status == 200) // resposta do servidor completa
	{

		// propriedade responseXML que devolve a resposta do servidor
		var docxml = xmlHttpObj.responseText;

		//alert(docxml);

		if(docxml == 'erro')
		{
			document.getElementById('div_nova_subscricoes').style.display = 'none';
			document.getElementById('div_periodicidade_assinatura').innerHTML = 'Não existem periodicidades relacionadas com o tipo de assinatura escolhido.';
		}
		else
		{
			document.getElementById('div_nova_subscricoes').style.display = 'block';
			document.getElementById('div_periodicidade_assinatura').innerHTML = docxml;
		}

		//volta a ler os valores para a nova subscricao
		MakeXMLHTTPCall();

		show_loader('none','');
	}
}


function check_all_none()
{
	var check = document.getElementById('check_all');
	var lista_select = document.getElementById('lista_select').value;
	var array_lista_select = lista_select.split('|');
	var check_value = true;

	if(check.checked)
	{
		check_value = true;
	}
	else
	{
		check_value = false;
	}

	if(lista_select != '' && array_lista_select.length > 0)
	{
		for(var i=0; i<array_lista_select.length; i++)
		{
			//alert(array_lista_select[i]);
			document.getElementById('select_'+array_lista_select[i]).checked = check_value;
		}
	}
}



