//retorna o objeto XMLHttpRequest
function getXMLHttpRequest() {
	if (window.XMLHttpRequest) {
			return new XMLHttpRequest();
	}
	else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	else {
	alert('Não foi foi criar uma conexão. Verifique se o javascript em seu navegador está habilitado');
	}
}

function isFieldFormatValid(field, format) {

	var regexp;

	switch(format) {
		case 'alpha':
			regexp = /^[a-zA-Z\.\-]*$/;
			if(!regexp.test(field.value))
				return false;
			break;
		case 'alphanum':
			regexp = /^\w+$/;
			if(!regexp.test(field.value))
				return false;
			break;
		case 'unsigned':
			regexp = /^\d+$/;
			if(!regexp.test(field.value))
				return false;
			break;
		case 'integer':
			regexp = /^[\+\-]?\d*$/;
			if(!regexp.test(field.value))
				return false;
			break;
		case 'real':
			regexp = /^[\+\-]?\d*\.?\d*$/;
			if(!regexp.test(field.value))
				return false;
			break;
		case 'email':
			regexp = /^[\w-\.]+\@[\w\.-]+\.[a-z]{2,4}$/;
			if(!regexp.test(field.value))
				return false;
			break;
		case 'phone':
			regexp = /^[\d\.\s\-]+$/;
			if(!regexp.test(field.value))
				return false;
			break;
		case 'date':
			regexp = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
			if(!regexp.test(field.value))
				return false;
			if((RegExp.$1 > 31) || (RegExp.$2 > 12))
				return false;
			var dateTest = new Date(RegExp.$3, Number(RegExp.$2-1), RegExp.$1);
			if(dateTest.getMonth() != Number(RegExp.$2-1))
				return false;
			break;
		case 'time':
			regexp = /^(\d{2})\:(\d{2})\:(\d{2})$/;
			if(!regexp.test(field.value))
				return false;
			if((RegExp.$1 > 23) || (RegExp.$2 > 59) || (RegExp.$3 > 59))
				return false;
			break;
		case 'cnpj':
			if(!isCNPJ(field.value))
				return false;
			else
				return true;
			break;
		case 'cpf':
			if(!isCPF(field.value))
				return false;
			else
				return true;
			break;
		case 'cep':
			if(!isCEP(field.value))
				return false;
			else
				return true;
			break;
		default:
			break;
	}

	return true;

}

function getErrorMessage(field, errorType) {

	var msg;
	var label;

	try {
		if(field.getAttribute('framework-form-label') != '') {
			label = field.getAttribute('framework-form-label');
		}
		else {
			label = field.name;
		}
	}
	catch(e) {
	}

	switch(errorType) {
		case 'emptyField':
			msg = 'O campo "'+ label +'" é obrigatório.';
			break;
		case 'invalidFormat':
			msg = 'O campo "'+ label +'" não possui um formato válido.';
			break;
		case 'passwordWrong':
			msg ='O campo de senha deve ter o mesmo conteudo do campo de confirmação de senha.';
	}

	return msg;

}

function isFormValid(form) {

	var elements = form.elements;
	var x;
	var error = Array();
	var error_msg = '';
	var i = 0;
	var hasError;
	var countpassword = 0;
	//for(x in elements) {
	for(x = 0; x < elements.length; x++) {
		
		try	{
			if(elements[x].getAttribute('framework-form-required') == '1') {
                
				hasError = false;
				switch(elements[x].type) {
					case 'password':
						if(countpassword==0){
						var senha = document.getElementsByName("usua_senha")[0];
						var senhac = document.getElementsByName("usua_senhac")[0];
							if(senha.value!=senhac.value){
								hasError = true;
								error[i] = getErrorMessage(elements[x], 'passwordWrong');
								i++;
							}
							countpassword=1;
						}
					case 'text':
					case 'hidden':
					case 'file':
					case 'textarea':
						if(elements[x].value == '') {
							hasError = true;
							error[i] = getErrorMessage(elements[x], 'emptyField');
							i++;
						}
						break;
					case 'radio':
					case 'checkbox':
						var fieldLength = elements[elements[x].name].length;
						var fieldChecked = false;

						var k = 0;
						for(k; k < fieldLength; k++) {
							if(elements[elements[x].name][k].checked)
								fieldChecked = true;
						}
						if(!fieldChecked) {
							hasError = true;
							error[i] = getErrorMessage(elements[x], 'emptyField');
							i++;
						}
						break;
					case 'select-multiple':
					case 'select-one':
						var fieldLength = elements[x].options.length;
						var fieldSelected = false;
						var k = 0;
						for(k; k < fieldLength; k++) {
							if(elements[x].options[k].selected && elements[x].options[k].value != '')
								fieldSelected = true;
						}
						if(!fieldSelected) {
							hasError = true;
							error[i] = getErrorMessage(elements[x], 'emptyField');
							i++;
						}
						break;
					default:
						break;
				}

				if(!hasError) {
					setHighlightOK(form, elements[x]);
				}
				else {
					setHighlightError(form, elements[x]);
				}

			}
		}
		catch(e) {
		}

		try	{
			if((elements[x].getAttribute('framework-form-format') != null) && (elements[x].value != '')) {

				hasError = false;

				if(!isFieldFormatValid(elements[x], elements[x].getAttribute('framework-form-format'))) {
					hasError = true;
					error[i] = getErrorMessage(elements[x], 'invalidFormat');
					i++;
				}

				if(!hasError) {
					setHighlightOK(form, elements[x]);
				}
				else {
					setHighlightError(form, elements[x]);
				}

			}
		}
		catch(e) {
		}

	}

	if(error.length) {
		
		for(x in error) {
			error_msg += error[x] + "%sep%";
		}

		try {
			if(form.getAttribute('framework-form-errordiv') == '1') {
				error_msg = error_msg.replace(/%sep%/g, '<br />');
				var errordiv = document.getElementById('div_'+form.name+'_output');
				errordiv.className = 'formTextError';
				errordiv.innerHTML = error_msg;
			}
			else {
				error_msg = error_msg.replace(/%sep%/g, '\n');
				alert(error_msg);
			}
		}
		catch(e) {
			alert(e);
		}

		return false;

	}

	try {
		if(form.getAttribute('framework-form-errordiv') == '1') {
			var ok_msg = '';
			var errordiv = document.getElementById('div_'+form.name+'_output');
			errordiv.innerHTML = ok_msg;
		}
	}
	catch(e) {
	}

	return true;

}

function setHighlightOK(form, field) {

	try {
		if(form.getAttribute('framework-form-highlight') == '1') {
			var div_label = document.getElementById('div_'+form.name+'_'+field.name);
			div_label.className = 'formText';
			field.className = 'formField';
		}
	}
	catch(e) {
	}

}

function setHighlightError(form, field) {

	try {
		if(form.getAttribute('framework-form-highlight') == '1') {
			var div_label = document.getElementById('div_'+form.name+'_'+field.name);
			div_label.className = 'formTextError';
			field.className = 'formFieldError';
		}
	}
	catch(e) {
	}

}

function setFieldMask(field, maskType, event) {
	
	var ie = document.all;

	switch(maskType) {
		case 'cnpj':
			var keySet = '0123456789';
			var maxsize = 18;
			var mask = '##.###.###/####-##';
			break;
		case 'cpf':
			var keySet = '0123456789';
			var maxsize = 14;
			var mask = '###.###.###-##';
			break;
		case 'cep':
			var keySet = '0123456789';
			var maxsize = 9;
			var mask = '#####-###';
			break;
		case 'date':
			var keySet = '0123456789';
			var maxsize = 10;
			var mask = '##/##/####';
			break;
		case 'time':
			var keySet = '0123456789';
			var maxsize = 8;
			var mask = '##:##:##';
			break;
	}

	var keyCode = (ie) ? window.event.keyCode : event.which;

	if(keyCode == 8) {
		field.value = field.value.substring(-1, (field.value.length - 1));
	}

	var key = String.fromCharCode(keyCode);
	if((keySet.indexOf(key) == -1) && (keyCode != 0) && (keyCode != 13)) {
		return false;
	}
	
	var i = field.value.length;

	if((i >= maxsize) && (keyCode != 0) && (keyCode != 13)) {
		return false;
	}

	var output = mask.substring(0,1);
	var outputText = mask.substring(i);
	if(outputText.substring(0,1) != output) {
		field.value += outputText.substring(0,1);
	}

	return true;

}

function isCNPJ(value) {

	var CNPJ = value;

	if(CNPJ.length < 18)
		return false;

	if((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-"))
		return false;

	if(document.layers && parseInt(navigator.appVersion) == 4) {
		x = CNPJ.substring(0,2);
		x += CNPJ.substring(3,6);
		x += CNPJ.substring(7,10);
		x += CNPJ.substring(11,15);
		x += CNPJ.substring(16,18);
		CNPJ = x;
	}
	else {
		CNPJ = CNPJ.replace(".","");
		CNPJ = CNPJ.replace(".","");
		CNPJ = CNPJ.replace("-","");
		CNPJ = CNPJ.replace("/","");
	}

	var nonNumbers = /\D/;
	if(nonNumbers.test(CNPJ))
		return false;

	var a = [];
	var b = new Number;
	var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];

	for(i=0; i<12; i++) {
		a[i] = CNPJ.charAt(i);
		b += a[i] * c[i+1];
	}
	if(b == 0)
		return false;
	if((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
	b = 0;
	for(y=0; y<13; y++) {
		b += (a[y] * c[y]);
	}
	if((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
	if((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13]))
		return false;

	return true;

}

function isCPF(value) {
	
	var CPF = value;

	if(CPF.length < 14)
		return false;

	if((CPF.charAt(3) != ".") || (CPF.charAt(7) != ".") || (CPF.charAt(11) != "-"))
		return false;

	if(document.layers && parseInt(navigator.appVersion) == 4) {
		x = CPF.substring(0,3);
		x += CPF.substring(4,7);
		x += CPF.substring(8,11);
		x += CPF.substring(12);
		CPF = x;
	}
	else {
		CPF = CPF.replace(".","");
		CPF = CPF.replace(".","");
		CPF = CPF.replace("-","");
	}

	var nonNumbers = /\D/;
	if(nonNumbers.test(CPF))
		return false;

	if(CPF == "00000000000" || CPF == "11111111111" || CPF == "22222222222" || CPF == "33333333333" || CPF == "44444444444" || CPF == "55555555555" || CPF == "66666666666" || CPF == "77777777777" || CPF == "88888888888" || CPF == "99999999999")
		return false;

	var a = [];
	var b = new Number;
	var c = 11;
	for(i=0; i<11; i++) {
		a[i] = CPF.charAt(i);
		if(i < 9) b += (a[i] * --c);
	}
	if((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
	b = 0;
	c = 11;
	for(y=0; y<10; y++) b += (a[y] * c--);
	if((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
	if((CPF.charAt(9) != a[9]) || (CPF.charAt(10) != a[10]))
		return false;

	return true;

}

function isCEP(value) {
	
	var CEP = value;

	if(CEP.length < 9)
		return false;

	if((CEP.charAt(5) != "-"))
		return false;

	if(document.layers && parseInt(navigator.appVersion) == 4) {
		x = CEP.substring(0,5);
		x += CEP.substring(6);
		CEP = x;
	}
	else {
		CEP = CEP.replace("-","");
	}

	var nonNumbers = /\D/;
	if(nonNumbers.test(CEP))
		return false;

	return true;

}




function onchange_vestibular(val,lingua_combo){
	var lingua=document.getElementsByName(lingua_combo)[0];
	if (val==0){
		lingua.disabled=false;
	}
	else if (val==1){
		lingua.disabled=true;
	}
}


var getCursoOptions = function(combocurso,comboturno,conc_id){
	
	var socketOptions = getXMLHttpRequest();

	if(socketOptions.readyState == 4 || socketOptions.readyState == 0){ 
		var curso = document.getElementsByName(combocurso)[0];
		var turno = document.getElementsByName(comboturno)[0];

	    socketOptions.open("POST", 'carregaTurnos.php', true);
		socketOptions.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		socketOptions.onreadystatechange = function(){
			if(socketOptions.readyState == 4){// se recebeu a resposta requisição
					var jsonData =  eval(socketOptions.responseText);

					while(turno.length>0){
						turno.remove(0);
					}

					for(i = 0; i < jsonData.length; i++) {
						
						var option = document.createElement('OPTION');
						option.value = jsonData[i].turnoid;
						option.text =jsonData[i].turno;

						try{
							turno.add(option);//IE
						}
						catch(ex2){
							turno.add(option,null);//w3c
						}
					}

			}
		}
		
    var params = 'cur_id=' + curso.value;
	params +='&conc_id=' + conc_id;
	socketOptions.send(params);
	}
};

//envia sugestão
function enviaSugestao(nome){
	var mensagem = document.getElementsByName('msg_obs')[0].value;
	var botao=document.getElementsByName('enviar_obs')[0];
	
	if(mensagem!=""){
		botao.disabled=true;
		//pega o objeto
		var socketObs = getXMLHttpRequest();
		if(socketObs.readyState == 4 || socketObs.readyState == 0){ 
				socketObs.open("POST", 'vestibular-falecon.php', true);
				socketObs.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
				socketObs.onreadystatechange = function(){
					if(socketObs.readyState == 4){// se recebeu a resposta requisição
						var jsonData =  eval(socketObs.responseText);
						if(jsonData[0]==1){
							alert("Mensagem enviada com sucesso");
							document.getElementsByName('msg_obs')[0].value="";
							botao.disabled=false;
						}else{
							alert("Ocorreu um erro no envio da mensagem");
						}
					}
				}
		 var params = 'pes=' + nome;
		 params  += '&msg=' + mensagem;
		 socketObs.send(params);
		}
	}
}

function AbreBoleto(codcendente,valor,codvestib,numficha,diavcto,mesvcto,anovcto,sacado,endereco,cidade,uf,cep,cpf,fone,svia)
	{
		var Largura, Altura, Opcoes;
		Largura = window.screen.width - 20;
		Altura =  window.screen.height - 85;

        var url = "http://www.banrisul.com.br/bbl/link/bblp44phw.asp?";
		
		url = url + "CodCedente="+codcendente;
		url = url + "&Valor="+valor;
		url = url + "&SeuNumero="+codvestib+" - "+numficha;
		url = url + "&DiaVcto=" +diavcto;
		url = url + "&MesVcto=" + mesvcto;
		url = url +"&AnoVcto=" + anovcto;
		url = url + "&NomeSacado=" + sacado;
		url = url + "&Endereco=" + endereco;
		url = url + "&Cidade="+ cidade;
		url = url + "&UF=" + uf;
		url = url + "&CEP=" + cep;
		url = url + "&Instrucoes=" + cpf + "/" + numficha + fone;		
		url = url + "&SegundaVia=0";
		url = url + "&NossoNumero=";
		url = url + "&Matricula=";
		Opcoes = "screenX=5,screenY=5,top=5,left=5,height=" + Altura + ",width=" + Largura + ",status=yes,toolbar=no,menubar=no,location=no,resizable=yes";
		window.open(url, "Bloqueto", Opcoes, true);
	}

