var isIE = (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent));
var isMF = /firefox/i.test(navigator.userAgent);
var isGC = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
var TpActionType = {"IGNORE": 0, "INSERT": 1, "UPDATE": 2, "DELETE": 3};
var TpSimNaoType = {"SIM": 1, "NAO": 2};
var TpPessoaType = {"NAO_ENUMERADO": 0, "ADMIN": 1, "CORRETOR": 2, "CONSTRUTORA": 3, "CLIENTE": 4};

var fields = new Array();


//usar onkeyup="" no textarea 
//1 parametro o nome do textArea
//2 parametro o nome do span com o valor total entre a abertura e fechamento
//3 parametro o valor maximo de caracteres aceito no campo
//4 parametro o o textArea.this
function bloqueiaTexto(texto,cont,quant,valor)
{
    total = valor.length;
    if(total <= quant)
    {
        resto = quant - total;
        document.getElementById(cont).innerHTML = resto;
    }
    else
    {
        document.getElementById(texto).value = valor.substr(0,quant);
    }
}

function tiraAcento(text) { 
	  text = text.replace(new RegExp('[ÁÀÂÃáàâã]','gi'), 'A'); 
	  text = text.replace(new RegExp('[ÉÈÊéèê]','gi'), 'E'); 
	  text = text.replace(new RegExp('[ÍÌÎíìî]','gi'), 'I'); 
	  text = text.replace(new RegExp('[ÓÒÔÕóòôõ]','gi'), 'O'); 
	  text = text.replace(new RegExp('[ÚÙÛúùû]','gi'), 'U'); 
	  text = text.replace(new RegExp('[Çç]','gi'), 'C'); 
	  return text; 
} 

function submiti(obj, action, target) {
	clearMessage();
	try {
		if ((obj.tagName.toUpperCase() == "INPUT") && (obj.type.toUpperCase() == "BUTTON"))
			obj.disabled = true;
		else
			obj.readOnly = true;
	} catch(e) {}
	setFirstElementFocus();
	document.forms[0].action=action;
	if(null!=target) document.forms[0].target=target;
	document.forms[0].submit();
}

/**
 * Realiza o submit de um form na janela atual e abre uma nova janela
 * @param obj botão de submit a ser tratado
 * @param action a url de action do form a ser submetido
 * @param target nome da nova janela (_self, _parent, _top e _blank(padrão) são reservados)
 * @param windowProperties as configurações da nova janela
 * @return Não existe retorno
 */
function submitiOnNewWindow(obj, action, target, windowProperties) {
	var newWin = window.open('', target, windowProperties);
	submiti(obj, action, target);
	newWin.focus();
}

/*
* This necessary, because Vraptor working with dot in html, to references objects
* Luiz Lima
* 27/12/2007
*/
function getObj(field) {
	return eval("document.getElementsByName(\'"+field+"\')[0]");
}

/**
 * Verifica se os popups estão bloqueados, mas o método deve 
 * deve ser invocado em eventos independentes do usuário. 
 * @return true se estiverem sendo bloqueados, false caso contrário
 */
function isPopupBloqueado(){
	 var mine = window.open('','','width=1,height=1,left=0,top=0,scrollbars=no');
	 if(mine){
	    var popUpsBlocked = false;
	    mine.close();
	 }else{
	    var popUpsBlocked = true;
	 }
	 return popUpsBlocked;
}

/**
* Seta um período de um ano de acordo com a segunda data.
* Seta somente se a segunda data for nula
* Considera a data atual
* Irá setar nos campos do form
**/
function setOneYearBefore(fieldDateOne, fieldDateTwo, dateNow) {
	var date2 = $F(fieldDateTwo);
	if (date2 != null && date2 != '')
		return;
		
	date2 = dateNow;
	
	var arrDateInfo = date2.split('/');
	var date  = "01";//arrDateInfo[0];
	var month = arrDateInfo[1];
	var year  = arrDateInfo[2];
	year--;
	var date1 = date +"/"+ month +"/"+ year;
	$(fieldDateOne).value =  date1;
	$(fieldDateTwo).value = date2;
}

function setBirthday(age, fieldSet) {
	//onblur="setBirthday(this, document.forms[0].birthday)"
	if (fieldSet.value != "" || age.value == "")
		return;
	today = new Date();
	var birthday = "01/01/"+ (today.getFullYear() - age.value);
	fieldSet.value=birthday;
}

function setAge(date1, fieldSet) {
	if (date1.value == "")
		return;
	
	var days = difWithDays(date1.value, new Date());
	var age = Math.floor(days/365);
	fieldSet.value = age;
}

function convertStringToDate(value) {
	return new Date(value.replace(/^(\d{2})\/(\d{2})\/(\d{4})$/, "$3/$2/$1"));
}

Date.prototype.compareTo = function(dateToCompare) {
	if (this.getTime() > dateToCompare.getTime())
		return -1;
	else if (this.getTime() < dateToCompare.getTime())
		return 1;
	
	return 0;
}

function difWithDays(date1, date2) {
	var meses, data, dataAtual, arrDataInfo, novaDataInfo, diasEntreDatas;
	meses = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
	dataAtual = meses[date2.getMonth()] + ' ' + date2.getDate() + ' ' + date2.getFullYear();
	arrDataInfo = date1.split('/');
	novaDataInfo = meses[(arrDataInfo[1] - 1)] + ' ' + arrDataInfo[0] + ' ' + arrDataInfo[2];
	diasEntreDatas = (((Date.parse(dataAtual))-(Date.parse(novaDataInfo)))/(24*60*60*1000)).toFixed(0);
	return diasEntreDatas;
}

function getKeyPress(objEvent) {
	keypress = null;
	
	if (navigator.appName == 'Microsoft Internet Explorer') {
  	keypress = objEvent.keyCode;
	} else if (navigator.appName == 'Netscape') {
  	keypress = objEvent.which;
	}   
	
	return keypress;
}

function exit() {
	if (!window.opener) {
		window.location = ".";
		return;
	}
	window.opener.location = ".";
	window.close();
}

function loadHelp(idAcao) {
	if (!idAcao) {
		alert("Help não definido.");
		return false;
	}
	
	openWindow({"url": "/enfs/help.view.logic", "acaoModel.idAcao": idAcao}, (window.screen.width - 300), (window.screen.height - 200), 0);
}

function focusOnNextElement(e) {
	var elements = document.getElementsByTagName("*");
	var evt = (e || event);
	var obj = (evt.srcElement || evt.target);

	if (obj.value.length < fields[obj.id])
		return true;

	for (var i = 0; i < elements.length; i++) {
		if (obj == elements[i]) {
			for (var j = (i + 1); j < elements.length; j++) {
				if ((elements[j].tagName.toUpperCase() == "INPUT") || 
						(elements[j].tagName.toUpperCase() == "SELECT") || 
						(elements[j].tagName.toUpperCase() == "TEXTAREA") || 
						(elements[j].tagName.toUpperCase() == "BUTTON")) {
						if ((elements[j].type != "hidden") && !(elements[j].readOnly) && !(elements[j].disabled)) {
							elements[j].focus();
							break;
						}
				}
			}
			break;
		}
	}

	return false;
}

function addEvent(obj, fnc, evt) {
	if(obj != null){
		if (obj.attachEvent)
			obj.attachEvent("on" + evt, fnc);
		else if (obj.addEventListener)
			obj.addEventListener(evt, fnc, true);
		else
			obj["on" + evt] = fnc;
	}
}

var TCL_BKSP = 8;
var TCL_TAB = 9;
var TCL_ESQ = 37;
var TCL_CIMA = 38;
var TCL_DIR = 39;
var TCL_BXO = 40;
var TCL_VIRG = 44;
var TCL_MEN = 45;
var TCL_DEL = 46;
var TCL_ENT = 13;
var TCL_ESC = 27;

function verificaTeclasPadrao(tecla) {
	switch (tecla) {
	case TCL_BKSP:
		return true;
	case TCL_TAB:
		return true;
	case TCL_ESQ:
		return true;
	case TCL_CIMA:
		return true;
	case TCL_DIR:
		return true;
	case TCL_BXO:
		return true;
	case TCL_MEN:
		return true;
	case TCL_ENT:
		return true;
	case 0:
		return true;
	default:
		return false;
	}
}

function setGroupFieldsReadonly(e) {
	var evt = (e || event);
	var obj = (evt.srcElement || evt.target);

	if (verificaTeclasPadrao(evt.keyCode))
		return;

	if (obj.value == "") {
		for (var i = 0; i < arGroupFields.length; i++)
			for (var j = 0; j < arGroupFields[i].length; j++)
				$(arGroupFields[i][j]).disabled = false;

		return;
	}
	
	setFieldsReadOnly(obj);
}

function setFieldsReadOnly(obj) {
	for (var i = 0; i < arGroupFields.length; i++)
		if (arGroupFields[i].indexOf(obj.id) > -1) {
			for (var j = 0; j < arGroupFields[i].length; j++)
				$(arGroupFields[i][j]).disabled = false;
		} else {
			for (var j = 0; j < arGroupFields[i].length; j++) {
				$(arGroupFields[i][j]).value = "";
				$(arGroupFields[i][j]).disabled = true;
			}
		}
}

function verificaTeclasPadraoQuantidade(tecla) {
	switch (tecla) {
	case TCL_DEL:
		return true;
	case TCL_BKSP:
		return true;
	case TCL_TAB:
		return true;
	case TCL_ESQ:
		return true;
	case TCL_CIMA:
		return true;
	case TCL_DIR:
		return true;
	case TCL_BXO:
		return true;
	case TCL_MEN:
		return true;
	case 0:
		return true;
	default:
		return false;
	}
}

function calculaQuantidadeCRLF(str) {
	var arrRegExp = str.match(/\n/g);
	if (arrRegExp != null)
		return arrRegExp.length;
	return 0;
}

function verificaQuantidade(evt, qtd) {
	var obj = (evt.srcElement || evt.target);
	if (obj.value.length == 0) {
		document.getElementById("qtd_" + obj.id).value = 0;
		return;
	}

	var tam = obj.value.length + calculaQuantidadeCRLF(obj.value) - (isIE ? calculaQuantidadeCRLF(obj.value) : 0);
	document.getElementById("qtd_" + obj.id).value = tam;

	if (verificaTeclasPadraoQuantidade(evt.keyCode))
		return;

	if ((tam + 1) > qtd)
		obj.value = obj.value.substr(0, qtd);
}

function controlaQuantidade(evt, qtd) {
	var obj = (evt.srcElement || evt.target);
	if (obj.value.length == 0) {
		document.getElementById("qtd_" + obj.id).value = 0;
		return;
	}

	var tam = obj.value.length + calculaQuantidadeCRLF(obj.value) - (isIE ? calculaQuantidadeCRLF(obj.value) : 0);
	document.getElementById("qtd_" + obj.id).value = tam;

	if (verificaTeclasPadraoQuantidade(evt.keyCode))
		return true;

	if (evt.keyCode == TCL_ENT)
		if ((tam + 2) > qtd)
			return false;

	if ((tam + 1) > qtd)
		return false;
	else
		return true;
}

function setCookie(cookieName, cookieValue, expires, path, domain, secure) {
	document.cookie =
	escape(cookieName) + '=' + escape(cookieValue)
	+ (expires ? '; expires=' + expires.toGMTString() : '')
	+ (path ? '; path=' + path : '')
	+ (domain ? '; domain=' + domain : '')
	+ (secure ? '; secure' : '');
}

function getCookie(cookieName) {
	var cookieValue = '';
	var posName = document.cookie.indexOf(escape(cookieName) + '=');
	if (posName != -1) {
	var posValue = posName + (escape(cookieName) + '=').length;
	var endPos = document.cookie.indexOf(';', posValue);
	if (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));
	else cookieValue = unescape(document.cookie.substring(posValue));
	}
	return (cookieValue);
}

function getStyleProperty(obj, property) {
	if (obj.currentStyle)
		return obj.currentStyle[property];
	return document.defaultView.getComputedStyle(obj, null).getPropertyValue(property);
}

function clone(obj){
    if(obj == null || typeof(obj) != 'object')
        return obj;

    var temp = obj.constructor(); // changed

    for(var key in obj)
        temp[key] = clone(obj[key]);
    return temp;
}

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

function isValidaEmail(obj){
	var email = obj.value;
	clearMessage();
	
	if ((email.length == 0))
		return true;
	
	if ((email.length != 0) && ((email.indexOf("@") < 1) || (email.indexOf('.') < 7)))
	{
		return true;
	} 
	  return false;
}

