/*
* coloca o campo passado pelo id em Focus
*/
function setFocus(id){
	var obj = document.getElementById(id);
	obj.focus();
}




/*
* Mostra a mensagem de acordo com o retorno (alerta, erro, informacao)
*
* @example onClick=setBoxMensagem('Ola Mundo!','info');
*
* @param string $mensagem 
* @param string $tipo_box - info|warning|error|success
*/
function setBoxMensagem(mensagem,tipo_box){
	var obj = document.getElementById("box-mensagem");
	if (tipo_box == "") {
		obj.className = "box";
	} else {
		obj.className = "box box-"+tipo_box;
	}
	obj.innerHTML = mensagem;
}




/*
* Detalhamento da mensagem setada em setBoxMensagem()
*
* @example onClick=setBoxMensagemObs('Ola Mundo!');
*
* @param string $mensagem 
*/
function setBoxMensagemObs(mensagem){
	var obj    = document.getElementById("box-mensagem-obs");
	var obj_ol = obj.getElementsByTagName("ol");
	
	if (obj_ol.length == 0) {
		obj.className = "box box-error-msg";
		var ol = document.createElement("ol");
	} else {
		var ol = obj_ol[0];
	}
	
	var li = document.createElement("li");
	li.innerHTML = mensagem;
	
	ol.appendChild(li);
	obj.appendChild(ol);
}




/*
* Limpa toda as informacoes da mensagem setada em setBoxMensagem()
*/
function resetBoxMensagem() {
	document.getElementById("box-mensagem").className = "hidden";
	document.getElementById("box-mensagem-obs").innerHTML = "";
	document.getElementById("box-mensagem-obs").className = "hidden";
}




/*
* Mostra a mensagem de acordo com o retorno do ajax (alerta, erro, informacao)
*/
function setBoxMensagemAjax(){
	var obj = document.getElementById("box-mensagem");
	var css = document.getElementById("box-mensagem-class");
	if (css != undefined && css != null) {
		obj.className = "box box-"+css.value;
	}
}




/*
* rola a página até o element
*/
function scrollTo(element){
	var obj = document.getElementById(element);
	obj.scrollIntoView();
}




/*
* executa o método em looping através dos segundos
*/
function reload(metodo, segundos){
	setTimeout(metodo, (segundos*1000)); /* x 1000, milisegundos */
}





/**
* mostra a imagem de loading do sistema
*
* @example onClick=showLoading();
*
* @return void
*/
function showLoading() {
	document.getElementById("ajax-loading").className = "";
}




/**
* esconde a imagem de loading do sistema
*
* @example onClick=showLoading();
*
* @return void
*/
function hideLoading() {
	document.getElementById("ajax-loading").className = "hidden";
}




/**
* verifica se e um e-mail valido
*
* @param string $mail
* @return boolean
*/
function is_mail(mail){
    var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
    if(typeof(mail) == "string"){
        if(er.test(mail)){ return true; }
    }else if(typeof(mail) == "object"){
        if(er.test(mail.value)){
            return true;
        }
    }else{
        return false;
    }
}




/**
* função para selecionar todos os checkbox com mesmo $name
*
* @example onclick=checkAll(this, 'check_ids');
*
* @params object $object objeto (this) de um checkbox
* @params name $name nome dos objetos
*/
function checkAll(object, name){
	
	var _name		= ( name == null ? "checks" : name );
	var _option 	= ( object.checked ? true : false );
	var _object		= document.getElementsByName(name);
	
	for(var i=0; i<_object.length; i++) {
		if (_object[i].disabled == false)
			_object[i].checked = _option;
	}
}




/**
* seleciona os registro selecionados
*
* @example onclick=getChecked('check_ids');
*
* @params string $name
* @return string
*/
function getChecked(name) {
	var _name   = ( name == null ? "checks" : name );
	var obj	    = document.getElementsByName(_name);
	var retorno = "";
	
	for (var i=0;i<obj.length;i++) {
		if (obj[i].checked) {
			retorno+= obj[i].value+";";
		}
	}
	
	return retorno.substring(0,(retorno.length-1));
	
}



/**
* função que permite apenas números no campo passado como referência
*
* @params object @_object 'this' do input
*/
function isNum(_object){
	if(_object!=null && _object!="undefined"){
		
		var digits 	= "1234567890";
		var newStr	= "";
		var c		= "";
		
		for (var i=0;i<_object.value.length;i++){
			c = _object.value.substring(i,i+1);
			if (digits.indexOf(c)!=-1)
				newStr += c;
		}
		_object.value = newStr;
	}
}




/**
* substitui o valor de $search por $replace em $string
*
* @param string $search
* @param string $replace
* @param string $string
* @return string
*/
function replaceAll(search, replace, string){
	
	var pos = null;
    while (por=string.indexOf(search) > -1){
		string 	= string.replace(search, replace);
	}
    return (string);
    
}




function retirarAcentos(string){
	
	var  str 	= "áàãâäÁÀÃÂÄéèêëÉÈÊËíìîïÍÌÎÏóòôöÓÒÔÖúùûüÚÙÛÜçÇ"; // string especiais
	var _str 	= "aaaaaAAAAAeeeeEEEEiiiiIIIIooooOOOOuuuuUUuucC"; // string equivalente
	var _string = "";
	var pos		= "";
	var c		= "";

	for(var i=0; i<string.length; i++){
		c 	= string.substring(i,i+1);
		pos = str.indexOf(c);
		_string+= ( pos>=0 ? _str.substring(pos,pos+1) : c );
	}

	return _string;	
}




/**
* Função para controle de teclado
* 
* @example onKeyUp=keypress(event, "F9", "listarImoveis()");
*
* @param window event $event
* @param string $key - tecla pressionada
* @param string $response - funcao a ser executada
* @return void
*/
var FUNCTION = null;
var KEY		 = null;
var KEY_CODE = new Array();

KEY_CODE[9] 	= "ESPACO";
KEY_CODE[13] 	= "ENTER";
KEY_CODE[27] 	= "ESC";
KEY_CODE[37] 	= "ESQUERDA";
KEY_CODE[38] 	= "CIMA";
KEY_CODE[39] 	= "DIREITA";
KEY_CODE[40] 	= "BAIXO";
KEY_CODE[120] 	= "F9";



function keypress(event, key, response){
	
	if(event){
		if( event.keyCode in KEY_CODE ){
			if( KEY!=null && FUNCTION!=null ){
				if( KEY_CODE[event.keyCode] == KEY.toUpperCase() )
					eval(FUNCTION);
			}
			
			if( key!=null && key!=undefined ){
				if( KEY_CODE[event.keyCode] == key.toUpperCase())
					eval(response);
			}
		}
	}
	
}





/**
* acrescenta uma mascara ao $obj com formatacao de moeda
*
* @example onKeyUp=formatarMoeda(this, true);
*
* @param object $obj
* @param boolean $verificar_zeros - true: 999,00 | false: 9,99
* @return string
*/
function formatarMoeda(obj, verificar_zeros, str_money){

	var string		= obj.value;
	var validos 	= "1234567890";
	var newString 	= "";
	var string_final= "";
	var count 		= 0;
	var zeros		= ( verificar_zeros==null ? false : true );
	var str_money	= ( str_money==null ? "" : str_money);
	
	
	for( var i=string.length; i>0; i-- ){
		c = string.substr(i-1, 1);
		if( validos.indexOf(c)>=0 )
			newString += c;
	}
	
	if( zeros ){
		if( newString.length==2 )
			newString += "0";
		if( newString.length==1 )
			newString += "00";
		if( newString.length==0 )
			newString += "000";
	}
	
	
	for( i=0; i<newString.length; i++ ){
		c = newString.toString().substr(i, 1);
		if( i==2 ){
			string_final += ",";
			count = 0;
		}
		else {
			if( ++count==3){
				string_final += ".";
				count = 0;
			}
		}
		string_final += c;
	}
	
	newString = "";
	for( i=string_final.length; i>0; i-- ){
		c = string_final.toString().substr(i-1, 1);
		newString += c;
	}
	
	newString = str_money+newString;
	
	if(newString.length<=str_money.length)
		obj.value = "";
	else
		obj.value = ( newString == (str_money+"0,00") ? "" : newString );

}




/**
* funcao que verifica valores dos campos (quantidade de caracteres)
*
* @params string $object_id id do input
* @params int $length numero minimo de caracteres necessario para retornar true
*/
function checkFormObject(object_id, length){

	if( object_id==null || length==null )
		return false;
	else {
		var object = document.getElementById(object_id);
		if( object!=null && object!="undefined" ){
			if( object.value.length < length )
				return false;
			else
				return true;
		}
		else
			return false;
	}
}




/**
* funcao que retorna os valores do campo selecionado
*
* @params string $object_id id do input
*/
function getFormObjectValue(object_id) {
	if(object_id==null) {
		return "";
	} else {
		var object = document.getElementById(object_id);
		if( object!=null && object!="undefined" ){
			return object.value;
		}
		else
			return "";
	}
}




/**
* funcao que retorna o objeto do campo selecionado
*
* @params string $object_id id do input
*/
function getFormObject(object_id) {
	if(object_id==null) {
		return "";
	} else {
		var object = document.getElementById(object_id);
		if( object!=null && object!="undefined" ){
			return object;
		}
		else
			return "";
	}
}



/**
* funcao que seta o valor para o objeto selecionado
*
* @params string $object_id id do input
* @params string $value valor a passar
*/
function setFormObjectValue(object_id,value) {
	if(object_id!=null) {
		var object = document.getElementById(object_id);
		if( object!=null && object!="undefined" ){
			object.value = value;
		}
	}
}




/*
* desabilita ou habilita o objeto enviado em $object_id
*
* @params string @object_id id do input
* @params boolean @acao true|false
*/
function setDisabled(object_id,acao) {
	if(object_id!=null) {
		var object = document.getElementById(object_id);
		if( object!=null && object!="undefined" ){
			object.disabled = acao;
		}
	}
}




/**
* cria uma url válida com a string enviada por parâmetro
*/
function string_para_url(string) {
	var _string = "";
	if(string == null || string == undefined || string == "") {
		_string = "";
	}
	else {
		var _string = retirarAcentos(string);
		_string = _string.replace(/\s+/g,"-"); 
		_string = _string.toLowerCase(_string);
	}
	return _string;
}





/*
* abre uma popUp com os parametros passados
*/
function popUp(url, titulo, width, height, target, scrollbar){
	
	if (scrollbar!=null || scrollbar!=undefined) {
		var scroll = "yes";
	} else {
		var scroll = 0;
	}

	if( (target!=null) && (target!=undefined) )
		var janela = window.open(url, target, 'toolbar=0,location=0,directories=0,status=0,menubar=1,scrollbars='+scroll+',resizable=0');
	else {
		var janela = window.open(url, null, "toolbar=0,location=0,directories=0,status=0,menubar=1,scrollbars="+scroll+",resizable=0");
	}
	janela.resizeTo(width, height);
}




function sleep(milliseconds) {
	var start = new Date().getTime();
	for (var i = 0; i < 1e7; i++) {
		if ((new Date().getTime() - start) > milliseconds)
			break;
	}
}

