// JavaScript Document
 
////////////////////////////////////////////////
// Adicionando a função trim ao objeto String //
////////////////////////////////////////////////
String.prototype.trim = function() { 
	return this.replace(/^\s+|\s+$/, ''); 
}

///////////////////////////////////////////////////////
// Funções para retornar a area do util do navegador //
///////////////////////////////////////////////////////
function getAreaUtilWidth(){
	return window.innerWidth && window.innerWidth > 0 ? window.innerWidth : /* Non IE */
			 document.documentElement.clientWidth && document.documentElement.clientWidth > 0 ? document.documentElement.clientWidth : /* IE 6+ */
			 document.body.clientWidth && document.body.clientWidth > 0 ? document.body.clientWidth : -1; /* IE 4 */
}  

function getAreaUtilHeight(){   
	return window.innerHeight && window.innerHeight > 0 ? window.innerHeight : /* Non IE */
			 document.documentElement.clientHeight && document.documentElement.clientHeight > 0 ? document.documentElement.clientHeight : /* IE 6+ */
			 document.body.clientHeight && document.body.clientHeight > 0 ? document.body.clientHeight : -1; /* IE 4 */
}

/////////////////////////////////////////////////////
// Adicionando a função data no formato dd/mm/aaaa //
/////////////////////////////////////////////////////
Date.prototype.format = function(formato) { 
	dia = "00" + this.getDate();
	dia = dia.substring(dia.length - 2, dia.length);
	
	mes = "00" + (this.getMonth() + 1);
	mes = mes.substring(mes.length - 2, mes.length);
		
	if (formato == 'BR'){;
		data = dia + "/" + mes + "/" + this.getFullYear();
	}else{
		data = this.getFullYear() + "/" + mes + "/" + dia;
	}
	return data; 
}

function g(el){
	return document.getElementById(el);	
}
function gn(el){
	return document.getElementsByName(el);	
}

function Formatar(valor, mascara, invertido) {
	// Função para formatação de valores com base em uma máscara
	var valor_formatado = '';

	if (invertido) {
		valor = strReverse(valor);
		mascara = strReverse(mascara);
	}
	
	ar_mascara = mascara.split("#");
	len_mascara = ar_mascara.length -1
	
	for (i = 0; i <= len_mascara; i++)  //Limpando String
		valor = valor.replace(ar_mascara[i], "");
	
	if (valor.length == 0)
		return '';
	
	for (i = 0; i <= len_mascara; i++) {
		if (i <= valor.length)
			valor_formatado += ar_mascara[i] + valor.substring(i, i+1);
	}
	
	if (invertido)
		valor_formatado = strReverse(valor_formatado);
	
	return valor_formatado;
}

function strReverse(str){
	// Retorna a string fornecida de forma inversa
	var valor_reverso = '';

	for (i = 0; i <= str.length; i++) {
		valor_reverso = str.substring(i, i+1) + valor_reverso;
	}

	return valor_reverso;
}

function FormataData(obj) {
	// Utilizada para formatar um campo de data de um formulario
	if (event.keyCode == 8) { // Backspace
		return;
	}
	
	obj.value = Formatar(obj.value, "##/##/####");
}

function numero(ev) {
	//Aceita a digitação apenas de numeros
	if (ev.keyCode < 48 || ev.keyCode > 57 ) { //&& (ev.keyCode < 96 || ev.keyCode > 105 ) 
		ev.returnValue = false;
		return;
	}
}

function converteData(data_br_us, Padrao) {
	//Converte uma data (dd/mm/aaaa ou aaaa/mm/dd) para BR US ou data do JS
	var formato;
	var padrao_br = /^\d\d\/\d\d\/[0-9]{4}$/i;
	var padrao_us = /^[0-9]{4}\/\d\d\/\d\d$/i;
	
	
	if (padrao_br.exec(data_br_us)){
		startDate = new Date(data_br_us.substring(6,10), data_br_us.substring(3,5) - 1, data_br_us.substring(0,2));
	}else if (padrao_us.exec(data_br_us)){
		startDate = new Date(data_br_us.substring(0,4), data_br_us.substring(5,7) - 1, data_br_us.substring(8,10));
	}else {
		alert('Formato de date desconhecido!\nUtilize dd/mm/aaaa ou aaaa/mm/dd');	
		return;
	}
	
	dia = "00" + startDate.getDate();
	dia = dia.substring(dia.length - 2, dia.length);
	
	mes = "00" + (startDate.getMonth() + 1);
	mes = mes.substring(mes.length - 2, mes.length);
		
	if (Padrao == 'BR'){;
		data = dia + "/" + mes + "/" + startDate.getFullYear();
		
	}else if (Padrao == 'US'){;
		data = startDate.getFullYear() + "-" + mes + "-" + dia;
	
	}else if (Padrao == 'NM'){;
		var mesNome;
		switch(parseInt(mes, 10)){
			case  1: mesNome = 'Janeiro';
						break;
			case  2: mesNome = 'Fevereiro';
						break;
			case  3: mesNome = 'Março';
						break;
			case  4: mesNome = 'Abril';
						break;
			case  5: mesNome = 'Maio';
						break;
			case  6: mesNome = 'Junho';
						break;
			case  7: mesNome = 'Julho';
						break;
			case  8: mesNome = 'Agosto';
						break;
			case  9: mesNome = 'Setembro';
						break;
			case 10: mesNome = 'Outubro';
						break;
			case 11: mesNome = 'Novembro';
						break;
			case 12: mesNome = 'Dezembro';
						break;
		}
		
		data = dia + ' de ' + mesNome + ' de ' + startDate.getFullYear();
		
	}else if (Padrao == 'DT'){
		data = startDate;
	}
	
	return data;
}

function dayDiff(dt1, dt2){

	if (IsDate(dt1) && IsDate(dt2)){
		
		diff  = new Date();
		date1 = new Date();
		date2 = new Date();

		date1temp = new Date(fCvData(dt1, 1, 2) + " 00:00:00AM");
		date2temp = new Date(fCvData(dt2, 1, 2) + " 00:00:00AM");
		
		date1.setTime(date1temp.getTime());
		date2.setTime(date2temp.getTime());
		
		diff.setTime(Math.abs(date1.getTime() - date2.getTime()));
		
		timediff = diff.getTime();
			
		days = Math.floor(timediff / (1000 * 60 * 60 * 24)); 
		timediff -= days * (1000 * 60 * 60 * 24);
		
		return days; // form should never submit, returns false
	}else{
		return '';
	}	
}
function dateadd(tipo, data, qt){ 
	/************************************************************
	* tipo: D, M, A                                             *
	* data: dd/mm/aaaa                                          *
	* qt: N - Número inteiro                                    *
	* Exemplo: nova_data = dateadd("D", "30/06/2004", 10)       *
	************************************************************/
	var dia;
	dia = eval(data.substr(0,2));
	var mes;
	mes = eval(data.substr(3,2)) - 1; //MES de 0 à 11
	var ano;
	ano = eval(data.substr(6,4));

	if (tipo == "D")
		dia = dia + parseInt(qt);
	if (tipo == "M")
		mes = mes + parseInt(qt);
	if (tipo == "A")
		ano = ano + parseInt(qt);

	var n_data = new Date(ano,mes,dia);
	var n_dia = n_data.getDate();
	var n_mes = n_data.getMonth() + 1; //MES de 0 à 11;
	var n_ano = n_data.getYear();
	
	return right('00'+n_dia, 2) + '/' + right('00'+n_mes, 2) + '/' + right('0000'+n_ano, 4);
}


function YearAdd(startDate, numYears)
{
		return dateadd('A', startDate, numYears);
}

function MonthAdd(startDate, numMonths)
{
		return dateadd('M', startDate, numMonths);
}

function dayAdd(startDate, numDays)
{
		//date1temp = new Date(startDate.substring(6,10),startDate.substring(3,5),startDate.substring(0,2));
		return dateadd('D', startDate, numDays);
}

///////////////////////////////////////////
// Função para tratamento da QueryString //
///////////////////////////////////////////
function queryString(ID){
	var url = document.location.href;
	var qs;
	var keyVal;
	var val; 
	if(url.indexOf('?') > -1){
		qs = url.split('?')[1];
		keyVal = qs.split('&');
		
		for(var i = 0; i < keyVal.length; i++){
			if(keyVal[i].indexOf(ID + '=') == 0){
				val = keyVal[i].split('=');
				return val[1];
			}
		}
		return ''; // Não achou o valor
	}else{
		return ''; // Não tem queryString
	}
}