// JavaScript Document

function switchMascaras(obj,opcao){
	switch(opcao){
		case 0:
			formataCpf(obj);
		break;
		case 1:
			formataCnpj(obj);
		break;
		case 2:
			formataCep(obj);
		break;
		case 3:
			formataTelefone(obj);
		break;
		case 4:
			formataData(obj);
		break;
		case 5:
			formataIE(obj);
		break;
		case 6:
			formataMesAno(obj)
		break;

	}
}


function formataCpf(obj){
	obj.maxLength = 14;
	var tam = obj.value.length;
	switch(tam){
		case 3:
		case 7:
			obj.value += '.';
		break;
		case 11:
			obj.value += '-';
		break;
	}
}

function formataCep(obj){
	obj.maxLength = 9;
	var tam = obj.value.length;
	switch(tam){
		case 5:
			obj.value += '-';
		break;
	}
}

function formataCnpj(obj){
	obj.maxLength = 18;
	var tam = obj.value.length;
	switch(tam){
		case 2:
		case 6:
			obj.value += '.';
		break;
		case 10:
			obj.value += '/';
		break;
		case 15:
			obj.value += '-';
		break;
	}
}

function formataIE(obj){
	obj.maxLength = 18;
	var tam = obj.value.length;
	switch(tam){
		case 2:
		case 6:
			obj.value += '.';
		break;
		case 10:
			obj.value += '/';
		break;
		case 15:
			obj.value += '-';
		break;
	}
}

function formataData(obj){
	obj.maxLength = 10;
	var tam = obj.value.length;
	switch(tam){
		case 2:
		case 5:
			obj.value += '/';
		break;
	}
}

function formataMesAno(obj){
	obj.maxLength = 7;
	var tam = obj.value.length;
	switch(tam){
		case 2:
			obj.value += '/';
		break;
	}
}



function formataCnpjCpf(obj){//formata o campo com cpf até atingir o número máximo de caracteres de um cpf, após isto, formata como cnpj
	obj.maxLength = 18;
	var tam = obj.value.length;
	var aux, i;
	if(tam < 14){
		switch(tam){
			case 3:
			case 7:
				obj.value += '.';
			break;
			case 11:
				obj.value += '-';
			break;
		}
	} else {
		if(tam < 15){
			aux = obj.value.split(".");
			obj.value = "";
			for(i=0; i < aux.length; i++){
				obj.value += aux[i];
			}
			aux = obj.value.split("-");
			obj.value = "";
			for(i=0; i < aux.length; i++){
				obj.value += aux[i];
			}
			aux = "";
			for(i=0; i < tam; i++){
				switch(i){
					case 1:
					case 4:
						aux += obj.value.charAt(i)+'.';
					break;
					case 7:
						aux += obj.value.charAt(i)+'/';
					break;
					default:
						aux += obj.value.charAt(i);
					break;
				}
			}
			obj.value = aux;
		} else {
			switch(tam){
				case 15:
					obj.value += '-';
				break;
			}
		}
	}
}


function formataTelefone(obj){
	var hasDDD = true;
	var tam = obj.value.length;
	if(hasDDD == true){
		obj.maxLength = 14;
		switch (tam){
			case 1:
				obj.value = '(' + obj.value;
			break;
			case 3:
				obj.value += ') ';
			break;
			case 9:
				obj.value += '-';
			break;
		}
	}else{
		obj.maxLength = 9;
		switch(tam){
			case 4:
				obj.value += '-';
			break;
		}
	}
}


function getKeyCode(e) {
 //IE5
 if (e.srcElement) {
  return e.keyCode
 }
  // NC5
  if (e.target) {
   return e.which
  }
 }


 function getTarget(e) {
  // IE5
   if (e.srcElement) {
    return e.srcElement;
   }
    if (e.target) {
    return e.target;
   }
 }


function aplicaMascaras(){
	if(navigator.appName == "Microsoft Internet Explorer"){
		var keyPressed = getKeyCode(event);
	}
	if(keyPressed){
		if(keyPressed > 15){ // del, backspace and other movement characters are okay
			switchMascaras(aplicaMascaras.arguments[0],aplicaMascaras.arguments[1]);
		}
	} else {
		switchMascaras(aplicaMascaras.arguments[0],aplicaMascaras.arguments[1]);
	}
}


 function e_Num(event){
     var sMask = "0123456789";
     var KeyTyped = String.fromCharCode(getKeyCode(event));
     // IE only version var KeyTyped = String.fromCharCode(window.event.keyCode);
     // ** IE only var srcObject = window.event.srcElement;
     var targ = getTarget(event);
     //alert(window.event.keyCode);
     keyCount = targ.value.length;
     keyCode = getKeyCode(event);
     if (keyCode < 15) /* del, backspace and other movement characters are okay */ {
        return true;
     } else if (sMask.indexOf(KeyTyped.toString()) == -1) {
        return false;
     }

     return true;
  }

 function somenteNumerico(evt) {
   evt = (evt) ? evt : ((window.event) ? window.event : "")
   if (evt) {
       var elem = (evt.target) ? evt.target : evt.srcElement
       if (evt.type == "keypress") {
         return e_Num(evt);
       }
   }
	 return true;
 }

// Validar campos

function limpaForm(){ 
	var args = limpaForm.arguments;	
	var elementoForm;
	var elementoAux;
	for(var i = 0; i < args.length; i++){
		elementoForm = document.getElementById(args[i]);
		elementoAux = args[i];
		switch (elementoForm.type){
 			case 'text':
 			case 'hidden':
 			case 'password':
				elementoForm.value = "";
			break;
 			case 'textarea':
				elementoForm.innerText = "";
				elementoForm.value = "";
			break;
			case 'select-one':
				elementoForm.options[0].selected = true;
			break;
			case 'select-multiple':
				for(var i=0; i < elementoForm.options.length; i++){
					elementoForm.options[i].selected = false;
				}
			break;
			case 'radio':
			case 'checkbox':
				elementoForm.checked = false;
			break;
		}
	}
}

function limpaSelect(combobox){ 
	var combo = document.getElementById(combobox);
		if(combo.options.length > 0){
			for(var i = 0; i < combo.options.length; i=0){
				combo.removeChild(combo.childNodes[i]);
			}
		}
}

function validaForm(){  
	var args = validaForm.arguments;	
	var isValidForm = true;
	var problemas = 'Os seguintes campos obrigatórios não foram preenchidos:';
	var elementoForm;
	var auxiliar;
	for(var i = 0; i < args.length; i++){
		switch(args[i]){
			case "@mail":
				i++;
				elementoForm = document.getElementById(args[i]);
				if(elementoForm.value != ''){
					if(elementoForm.value.indexOf('@')==-1 || elementoForm.value.indexOf('.')==-1){
						problemas += '\n O campo "'+elementoForm.id+'" não é um e-mail válido';
						isValidForm = false;
					}
				} else {
					problemas += '\n O campo "'+elementoForm.id+'" tem que ser preenchido';
					isValidForm = false;
				}
			break;
			case "@1vazio":
				i++;
				elementoForm = document.getElementById(args[i]);
				auxiliar = document.getElementById(args[i+1]);
				if((elementoForm.value == "") && (auxiliar.value == "")){
					problemas += '\n Por favor, preencha ou o campo "'+elementoForm.id+'" ou o campo "'+auxiliar.id;
					isValidForm = false;
				}
				i++;
			break;
			case "@radioGroup":
				i++;
				auxiliar = false;
				elementoForm = args[i];
				for(var a=0; a < elementoForm.length; a++){
					if(elementoForm[a].checked){
						auxiliar = true;
					}
				}
				if(auxiliar == false){
					problemas += '\n Algum item do grupo "'+elementoForm[0].name+'" tem que estar selecionado';
					isValidForm = false;
				}
				i++;
			break;
			case "@fullfilled":
				i++;
				elementoForm = document.getElementById(args[i]);
				var limite = elementoForm.maxLength;
				if(elementoForm.value.length != limite && elementoForm.value.length != 0){
					problemas += "\n O campo \""+elementoForm.id+"\" não está preenchido corretamente";
					isValidForm = false;
				}
			break;
			default:
			elementoForm = document.getElementById(args[i]);
			switch (elementoForm.type){
				case 'text':
				case 'hidden':
				case 'password':
					if(elementoForm.value == ""){
						problemas += '\n O campo "'+elementoForm.id+'" tem que ser preenchido';
						isValidForm = false;
					}
				break;
				case 'textarea':
					if((elementoForm.innerText == "") || (elementoForm.value == "")){
						problemas += '\n O campo "'+elementoForm.id+'" tem que ser preenchido';
						isValidForm = false;
					}
				break;
				case 'select-one':
					if(elementoForm.options[elementoForm.selectedIndex].value == ""){
						problemas += '\n O campo "'+elementoForm.id+'" tem que estar com uma opção válida selecionada';
						isValidForm = false;
					}
				break;
				case 'checkbox':
					if(elementoForm.checked == false){
						problemas += '\n O campo "'+elementoForm.id+'" tem que estar marcado para continuar';
						isValidForm = false;
					}
				break;
				case 'radio':
					if(elementoForm.checked == false){
						problemas += '\n O campo "'+elementoForm.id+'" tem que estar marcado para continuar';
						isValidForm = false;
					}
				break;				
			}
			break;
		}
	}
	if(isValidForm == false){
		alert(problemas);
	}
	return isValidForm;
}

function getKeyCode(e) {
 //IE5
 if (e.srcElement) {
  return e.keyCode
 }
  // NC5
  if (e.target) {
   return e.which
  }
 }

function getTarget(e) {
  // IE5
   if (e.srcElement) {
    return e.srcElement;
   }
    if (e.target) {
    return e.target;
   }
 }

function enviaForm(entidade,nomeForm,idTag,escondeTag,camposValidos){
	var form = document.getElementById(nomeForm);
	if(camposValidos == true){
		var funcaoCallback = function (resposta){
			var dados = resposta.split("|");
			var campoErro = nomeForm+"_mensagem_erro";
			var linhaErro = nomeForm+"_linha_erro";
			switch (dados[0]){
				case "Erro":
					obj = document.getElementById(campoErro);
					obj.innerHTML = '';
					trocaView('show',linhaErro);
					var novoTexto = document.createTextNode(dados[1]);
					obj.appendChild(novoTexto);
				break;
				case "OkLogin":
					location.replace(dados[1]);
				break;
				case "OkAjax":
					if(idTag!=false){
						obj = document.getElementById(idTag);
						if (dados[2]){
							for(var i=2;i < dados.length; i++){
								dados[1] += dados[i];
							}
						}
						obj.innerHTML = '';
						obj.innerHTML = dados[1];
						if(escondeTag!=false){
							trocaView('hide',escondeTag);
						}
					}else{
						obj = document.getElementById(campoErro);
						obj.innerHTML = '';
						trocaView('show',linhaErro);
						var novoTexto = document.createTextNode("Ocorreu um problema na aplicação do script: Não foi informado onde aplicar a resposta do servidor.");
						obj.appendChild(novoTexto);
					}
				break;
				case "":
					obj = document.getElementById(campoErro);
					obj.innerHTML = '';
					trocaView('show',linhaErro);
					var novoTexto = document.createTextNode("Ocorreu um problema: A resposta do servidor foi vazia.");
					obj.appendChild(novoTexto);
				break;
				default:
					obj = document.getElementById(campoErro);
					obj.innerHTML = '';
					trocaView('show',linhaErro);
					var novoTexto = document.createTextNode("Ocorreu um problema com o script: A resposta do servidor foi inválida.");
					obj.appendChild(novoTexto);
				break;
			}
		}
		postDataReturnText('../../cgi-bin/CentralServicos.dll/'+entidade, convertFormDataToPostContent(form), funcaoCallback);
	}
}