﻿/*
  Método que valida a introdução de valores numéricos.
*/
function numeric_Validate(e, obj)
{
  var evt = e ? e : window.event;
  var keycode;
  if(document.all)
    keycode = evt.keyCode;
  else
    keycode = evt.which;
  if(keycode >= 48 && keycode <= 57 || (keycode == 0 || keycode == 8))
    return true;
  else
	e.preventDefault ? e.preventDefault() : e.returnValue = false;
}

/*
  Método que formata o valor a apresentar num campo numérico.
*/
function numeric_Format(value)
{       
  var comma='.';
  var dec='.';
  var postDecimal='';
  var decPlaces=3;
  
  try 
  {
	// Obtém o valor numérico introduzido
	value = value.replace(/\./g, "")
	// Verifica se não foi introduzido num número
    if (value.length < 1)
    {
       return "";
    }
	// Verifica se foi introduzido o valor "0"
	if (parseInt(value) == 0)
    {
       return "";
    }
	// Retorna o valor introduzido caso, não ultrapasse o número de caracteres das casas decimais
    if (value.length <= decPlaces)
    {
      return value;
    }

    if (value.length > decPlaces)
    {
      postDecimal = dec + value.substring(value.length - decPlaces, value.length);
      value = value.substring(0, value.length - decPlaces);
    }
    var regex  = new RegExp('(-?[0-9]+)([0-9]{3})');
    while(regex.test(value))
    {
      value = value.replace(regex, '$1' + comma + '$2');
    }
  }
  catch (exception) {}
  return value + postDecimal;
}
/*
  Método que configura o acesso às opções "Distrito", "Concelho" e "Freguesia".
*/
function ddlPais_SelectedIndexChanged(dropdown) {
  // Obtém o clientID do controlo
  var _client=document.getElementById("_control").value;
  if(dropdown.value == "Portugal") {
	ddl_configure(document.getElementById(_client+"ddlDistrito"), false);
  } else {
	ddl_configure(document.getElementById(_client+"ddlDistrito"), true);
	ddl_configure(document.getElementById(_client+"ddlConcelho"), true);
	ddl_configure(document.getElementById(_client+"ddlFreguesia"), true);
	// Limpa os valores das variáveis escondidas
	document.getElementById(_client+"__distrito").value = ""
	document.getElementById(_client+"__concelho").value = ""
	document.getElementById(_client+"__freguesia").value = ""	
  }
}
/*
  Método que permite desabilitar a selecção de um objecto DropDownList.
*/
function ddl_configure(dropdown, disabled) {
  dropdown.disabled = disabled;
  dropdown.selectedIndex = -1;
}



function trim(string) {
  var re= /^\s*|\s*$/g;
  return string.replace(re,"");
}
/*
  Método que valida um endereço de e-mail.
*/
function email_Validate(e) {
  if (e != "") {
    var objRegExp = /^.+@.+\..{2,3}$/;
    return objRegExp.test(e);
  } else {
    return true;
  }
}

Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

/*
  Método que valida os campos de preenchimento obrigatório.
*/
function anunciar_Mandatory()
{
  // obtém o ID do controlo
  var _uc = document.getElementById("__uc").value + "_";  
  var _fields = new Array("tbNome", "tbTelefone", "tbEmail", "ddlPais", "ddlDistrito", "ddlConcelho", "ddlFreguesia", "tbLocalidade", "tbLocalidadePostal", "ddlTipo", "ddlSubTipo", "ddlFinalidade", "tbDescricao", "tbPreco");
  // remove a obrigatoriedade de seleccionar o Distrito/Concelho/Freguesia caso o país não seja Portugal
  if(document.getElementById(_uc+"ddlPais").value != "Portugal") {
	_fields.remove(4,6);
  }
  
  for(var _index=0; _index<_fields.length; _index++) {
    if(trim(document.getElementById(_uc+_fields[_index]).value) == 0) {
	  return false;
	  break;
	}
  }
  return true;
}

/*
  Método que obtém a opção seleccionada de um controlo "DropDownList.
*/
function set(_ddl, _id)
{
  // obtém o ID do controlo
  var _uc = document.getElementById("__uc").value + "_";  
  document.getElementById(_uc+_id).value = _ddl.options[_ddl.selectedIndex].text;
}