// Função para iniciarmos o Ajax no browser do cliente.
function openAjax() {

var ajax;

try{
    ajax = new XMLHttpRequest(); // XMLHttpRequest para browsers decentes, como: Firefox, Safari, dentre outros.
}catch(ee){
    try{
        ajax = new ActiveXObject("Msxml2.XMLHTTP"); // Para o IE da MS
    }catch(e){
        try{
            ajax = new ActiveXObject("Microsoft.XMLHTTP"); // Para o IE da MS
        }catch(E){
            ajax = false;
        }
    }
}
return ajax;
}

// Função que realiza a busca instantânea

function abre(id, url) {
	
	if(document.getElementById) { // Para os browsers complacentes com o DOM W3C.
		
		var exibeResultado = document.getElementById(id); // div que exibirá o resultado da busca.
		
			var ajax = openAjax(); // Inicia o Ajax.
			ajax.open("GET", url, true); // Envia o termo da busca como uma querystring, nos possibilitando o filtro na busca.
			ajax.onreadystatechange = function() {
				if(ajax.readyState == 1) { // Quando estiver carregando, exibe: carregando...
					exibeResultado.innerHTML = "<center>Carregando...</center>";
				}
				if(ajax.readyState == 4) { // Quando estiver tudo pronto.
					if(ajax.status == 200) {
						var resultado = ajax.responseText; // Coloca o resultado (da busca) retornado pelo Ajax nessa variável (var resultado).
						
						var resultado2 = resultado;			
						
						resultado = resultado.replace(/\+/g," "); // Resolve o problema dos acentos (saiba mais aqui: http://www.plugsites.net/leandro/?p=4)
						resultado = unescape(resultado); // Resolve o problema dos acentos
						exibeResultado.innerHTML = resultado;
						
						
						// Pegando o conteudo do div que foi carregado
    					var conteudo = resultado2;	
						
						var p1 = eval(conteudo.indexOf('<script'));
						var teste = conteudo.substr(p1,conteudo.length);
						p1 = eval(teste.indexOf('>')+1);
						//alert(teste.substr(0, p1));
						var p2 = conteudo.indexOf('</script>');
						var qtd_str = eval(p2-p1);
						
    					// Declarando a criação de uma nova tag <script>
   						var newElement = document.createElement("script");
    
   						// Pegando os valores das Tags <script> que estão na página carregada pelo AJAX
   						var scripts = conteudo.substr(p1,qtd_str);
        				eval(scripts);
    					
						
						
					} else {
						exibeResultado.innerHTML = "<center>Erro!</center>";
					}
				}
			}
			ajax.send(null); // submete
		
	}

}	



function addfavoritos(vUrl,vDescricao, vRetorno)
{
  window.external.AddFavorite(vUrl,vDescricao);
  if (vRetorno==null)
  {
    //não retorna nada
  }
  else
  {
    //retorna qualquer coisa que você definir em vRetorno 
    //obs.: aplicavel ao caso de querer retornar uma outra função ou o valor de outra função
    return vRetorno;
  };
};

function paginicial(vId, vUrl, vRetorno)
{
  var ns = (navigator.appName == "Netscape");
  var ie = (navigator.appName == "Microsoft Internet Explorer");
  if(ie)
  {
    vId.style.behavior='url(#default#homepage)';
    vId.setHomePage(vUrl);
  } 
  else if(ns)
  {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesWrite");
    navigator.preference("browser.startup.homepage", vUrl);
  };

  if (vRetorno==null)
  {
    //não retorna nada
  }
  else
  {
    //retorna qualquer coisa que você definir em vRetorno 
    //obs.: aplicavel ao caso de querer retornar uma outra função ou o valor de outra função
    return vRetorno;
  };
};

//lembrar que dá erro javascript se vc carregar as funções diretamente dentro da pag q está sendo carregada com outro ajax
function lista_cliente(str){	
	if(str.length > 2){
		abre('pes','reserva/lista_cliente.php?nome='+str);
	}
}
function lista_usuario(str){	
	if(str.length > 2){
		abre('pes','relatorios/lista_usuario.php?nome='+str);
	}
}
function lista_fornecedor(str){	
	if(str.length > 2){		
		abre('pes','compra/lista_fornecedor.php?nome='+str);
	}
}
function lista_filme(str){	
	if(str.length > 2){
		abre('pes','reserva/lista_filme.php?nome='+str);
	}
}

function devolve_midia(m){
	//window.location='admin.php?pag=devolucao&acao=devolucao&barra='+m;
	document.form1.barra.value=m;
	document.form1.submit();
}

function apaga_midia(m){
	document.form1.apaga.value=m;
	document.form1.submit();
}

function atualiza_diaria(){
	document.form1.calc.value=true;
	document.form1.submit();
}

function imgTroca(id,src){
	document.getElementById(id).src=src;
}

function limpa_mid(){
	document.form1.mid.value='';
	document.form1.mid.focus();
	event.keyCode=0;
	event.returnValue=false;
}

function limpa_midia(){
	document.form1.pesquisa.value='';
	document.form1.pesquisa.focus();
	event.keyCode=0;
	event.returnValue=false;
}

function limpa_cli(){
	document.form1.cli.value='';
}

function limpa_fornecedor(){
	document.form1.forne.value='';
	document.form1.forne.focus();
	event.keyCode=0;
	event.returnValue=false;
}

function limpa_prod(){
	document.form1.prod.value='';
	document.form1.prod.focus();
	event.keyCode=0;
	event.returnValue=false;
}


function limpa_produto(){
	document.form1.pesquisa.value='';
	document.form1.pesquisa.focus();
	event.keyCode=0;
	event.returnValue=false;
}

function atualizatexto(id, str){	
	var exibeResultado = document.getElementById(id); // div que exibirá o resultado da busca.
	var resultado = str;
	resultado = resultado.replace(/\+/g," "); // Resolve o problema dos acentos (saiba mais aqui: http://www.plugsites.net/leandro/?p=4)
	resultado = unescape(resultado); // Resolve o problema dos acentos
	exibeResultado.innerHTML = resultado;	
}

function escondeGeral(id){
	//alert('esconde'+i);
	var obj = document.getElementById(id);
	//if(obj.style.visibility == "visible"){
		obj.style.visibility = "hidden";
		obj.style.display = "none";
	//}
}



function escondeMostra(id){
	var obj = document.getElementById(id);
	if(obj.style.visibility == "visible"){
		obj.style.visibility = "hidden";
		obj.style.display = "none";
	} else {
		obj.style.visibility = "visible";
		obj.style.display = "block";
	}
}

function esconde(i){
	//alert('esconde'+i);
	var obj = document.getElementById(i);
	//if(obj.style.visibility == "visible"){
		obj.style.visibility = "hidden";
		obj.style.display = "none";
		
	//}
}
function mostra(i){
	//alert('mostra'+i);
	var obj = document.getElementById(i);
	//if(obj.style.visibility == "hidden"){
		obj.style.visibility = "visible";
		obj.style.display = "block";
	//}
}

function aviso_pelicula(str){	
	var exibeResultado = document.getElementById('conteudo_pelicula'); // div que exibirá o resultado da busca.
	var resultado = str;
	
	exibeResultado.innerHTML = resultado;
	mostra('pelicula');
}

function esconde_status(){	
	document.form1.status.style.visibility="hidden";
	document.form1.status.style.display="none";
}

function mostra_status(){	
	document.form1.status.style.visibility="visible";
	document.form1.status.style.display="block";
}




documentall = document.all;

function formatamoney(c) {
    var t = this; if(c == undefined) c = 2;		
    var p, d = (t=t.split("."))[1].substr(0, c);
    for(p = (t=t[0]).length; (p-=3) >= 1;) {
	        t = t.substr(0,p) + "." + t.substr(p);
    }
    return t+","+d+Array(c+1-d.length).join(0);
}

String.prototype.formatCurrency=formatamoney

function demaskvalue(valor, currency){
/*
* Se currency é false, retorna o valor sem apenas com os números. Se é true, os dois últimos caracteres são considerados as 
* casas decimais
*/
var val2 = '';
var strCheck = '0123456789';
var len = valor.length;
	if (len== 0){
		return 0.00;
	}

	if (currency ==true){	
		/* Elimina os zeros à esquerda 
		* a variável  <i> passa a ser a localização do primeiro caractere após os zeros e 
		* val2 contém os caracteres (descontando os zeros à esquerda)
		*/
		
		for(var i = 0; i < len; i++)
			if ((valor.charAt(i) != '0') && (valor.charAt(i) != ',')) break;
		
		for(; i < len; i++){
			if (strCheck.indexOf(valor.charAt(i))!=-1) val2+= valor.charAt(i);
		}

		if(val2.length==0) return "0.00";
		if (val2.length==1)return "0.0" + val2;
		if (val2.length==2)return "0." + val2;
		
		var parte1 = val2.substring(0,val2.length-2);
		var parte2 = val2.substring(val2.length-2);
		var returnvalue = parte1 + "." + parte2;
		return returnvalue;
		
	}
	else{
			/* currency é false: retornamos os valores COM os zeros à esquerda, 
			* sem considerar os últimos 2 algarismos como casas decimais 
			*/
			val3 ="";
			for(var k=0; k < len; k++){
				if (strCheck.indexOf(valor.charAt(k))!=-1) val3+= valor.charAt(k);
			}			
	return val3;
	}
}

function reais(obj,event){

var whichCode = (window.Event) ? event.which : event.keyCode;
/*
Executa a formatação após o backspace nos navegadores !document.all
*/
if (whichCode == 8 && !documentall) {	
/*
Previne a ação padrão nos navegadores
*/
	if (event.preventDefault){ //standart browsers
			event.preventDefault();
		}else{ // internet explorer
			event.returnValue = false;
	}
	var valor = obj.value;
	var x = valor.substring(0,valor.length-1);
	obj.value= demaskvalue(x,true).formatCurrency();
	return false;
}
/*
Executa o Formata Reais e faz o format currency novamente após o backspace
*/
FormataReais(obj,'.',',',event);
} // end reais


function backspace(obj,event){
/*
Essa função basicamente altera o  backspace nos input com máscara reais para os navegadores IE e opera.
O IE não detecta o keycode 8 no evento keypress, por isso, tratamos no keydown.
Como o opera suporta o infame document.all, tratamos dele na mesma parte do código.
*/

var whichCode = (window.Event) ? event.which : event.keyCode;
if (whichCode == 8 && documentall) {	
	var valor = obj.value;
	var x = valor.substring(0,valor.length-1);
	var y = demaskvalue(x,true).formatCurrency();

	obj.value =""; //necessário para o opera
	obj.value += y;
	
	if (event.preventDefault){ //standart browsers
			event.preventDefault();
		}else{ // internet explorer
			event.returnValue = false;
	}
	return false;

	}// end if		
}// end backspace

function FormataReais(fld, milSep, decSep, e) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;

//if (whichCode == 8 ) return true; //backspace - estamos tratando disso em outra função no keydown
if (whichCode == 0 ) return true;
if (whichCode == 9 ) return true; //tecla tab
if (whichCode == 13) return true; //tecla enter
if (whichCode == 16) return true; //shift internet explorer
if (whichCode == 17) return true; //control no internet explorer
if (whichCode == 27 ) return true; //tecla esc
if (whichCode == 34 ) return true; //tecla end
if (whichCode == 35 ) return true;//tecla end
if (whichCode == 36 ) return true; //tecla home

/*
O trecho abaixo previne a ação padrão nos navegadores. Não estamos inserindo o caractere normalmente, mas via script
*/

if (e.preventDefault){ //standart browsers
		e.preventDefault()
	}else{ // internet explorer
		e.returnValue = false
}

var key = String.fromCharCode(whichCode);  // Valor para o código da Chave
if (strCheck.indexOf(key) == -1) return false;  // Chave inválida

/*
Concatenamos ao value o keycode de key, se esse for um número
*/
fld.value += key;

var len = fld.value.length;
var bodeaux = demaskvalue(fld.value,true).formatCurrency();
fld.value=bodeaux;

/*
Essa parte da função tão somente move o cursor para o final no opera. Atualmente não existe como movê-lo no konqueror.
*/
  if (fld.createTextRange) {
    var range = fld.createTextRange();
    range.collapse(false);
    range.select();
  }
  else if (fld.setSelectionRange) {
    fld.focus();
    var length = fld.value.length;
    fld.setSelectionRange(length, length);
  }
  return false;

}



function ContaCaracteres(){
   intCaracteres = 350 - document.form.descricao.value.length;
   if (intCaracteres > 0) {
      document.form.caracteres.value = intCaracteres;
      return true;
   }
   else {
      document.form.caracteres.value = 0;
      document.form.descricao.value = document.form.descricao.value.substr(0,350)
      return false;
   }
}
function Validar(){
   if (ContaCaracteres()){
      document.form.submit();
   }
   else{
      alert("Número de caracteres do comentário maior que 350.");
   }
}


function formatar(src, mask) 
{
  var i = src.value.length;
  var saida = mask.substring(0,1);
  var texto = mask.substring(i)
if (texto.substring(0,1) != saida) 
  {
	src.value += texto.substring(0,1);
  }
}
function writeToday(formName, elementName, nextElement){
	var tmpObj = eval("document." +formName+ "." +elementName);
	if (tmpObj.value == "") {
		var today = new Date();
		var tmpDay =  String(today.getDate());
		var tmpMonth = String(today.getMonth()+ 1); 
		var tmpYear = String(today.getFullYear()); 
    	tmpDay  = ((tmpDay.length==1)? '0':'')  + String(tmpDay);
		tmpMonth = ((tmpMonth.length==1)? '0':'') +  String(tmpMonth);
		var tmpDate = tmpDay +"/"+ tmpMonth +"/"+ tmpYear;
		tmpObj.value = tmpDate;
	} else {
		return;
	}
}
function NewWindow(myPage, myName, Width, Height, Scroll, Resizable) {
	var winTop = ((screen.height - Height) / 2);
	var winLeft= ((screen.width - Width) / 2);
	winProps = 'top=' +winTop+ ',left=' +winLeft+ ',height=' +Height+ ',width=' +Width+ ',Scrollbars=' +Scroll+ ',Resizable=' +Resizable+ ';'
	Win = window.open(myPage, myName, winProps);
		
		if (parseInt(navigator.appVersion) >= 4) { 
			Win.window.focus(); //set focus to the window
		}
}

//--------------------------------------------  GERA TECLAS DE ATALHO   ----------------------------------------------------
//--------------------------------------------  GERA TECLAS DE ATALHO   ----------------------------------------------------
//--------------------------------------------  GERA TECLAS DE ATALHO   ----------------------------------------------------
teclas_atalho = {
	'all_shortcuts':{},//All the shortcuts are stored in this array
	'add': function(shortcut_combination,callback,opt) {
		//Provide a set of default options
		var default_options = {
			'type':'keydown',
			'propagate':false,
			'disable_in_input':false,
			'target':document,
			'keycode':false
		}
		if(!opt) opt = default_options;
		else {
			for(var dfo in default_options) {
				if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo];
			}
		}

		var ele = opt.target
		if(typeof opt.target == 'string') ele = document.getElementById(opt.target);
		var ths = this;
		shortcut_combination = shortcut_combination.toLowerCase();

		//The function to be called at keypress
		var func = function(e) {
			e = e || window.event;
			
			if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields
				var element;
				if(e.target) element=e.target;
				else if(e.srcElement) element=e.srcElement;
				if(element.nodeType==3) element=element.parentNode;

				if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return;
			}
	
			//Find Which key is pressed
			if (e.keyCode) code = e.keyCode;
			else if (e.which) code = e.which;
			var character = String.fromCharCode(code).toLowerCase();
			
			if(code == 188) character=","; //If the user presses , when the type is onkeydown
			if(code == 190) character="."; //If the user presses , when the type is onkeydown
	
			var keys = shortcut_combination.split("+");
			//Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked
			var kp = 0;
			
			//Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken
			var shift_nums = {
				"`":"~",
				"1":"!",
				"2":"@",
				"3":"#",
				"4":"$",
				"5":"%",
				"6":"^",
				"7":"&",
				"8":"*",
				"9":"(",
				"0":")",
				"-":"_",
				"=":"+",
				";":":",
				"'":"\"",
				",":"<",
				".":">",
				"/":"?",
				"\\":"|"
			}
			//Special Keys - and their codes
			var special_keys = {
				'esc':27,
				'escape':27,
				'tab':9,
				'space':32,
				'return':13,
				'enter':13,
				'backspace':8,
	
				'scrolllock':145,
				'scroll_lock':145,
				'scroll':145,
				'capslock':20,
				'caps_lock':20,
				'caps':20,
				'numlock':144,
				'num_lock':144,
				'num':144,
				
				'pause':19,
				'break':19,
				
				'insert':45,
				'home':36,
				'delete':46,
				'end':35,
				
				'pageup':33,
				'page_up':33,
				'pu':33,
	
				'pagedown':34,
				'page_down':34,
				'pd':34,
	
				'left':37,
				'up':38,
				'right':39,
				'down':40,
	
				'f1':112,
				'f2':113,
				'f3':114,
				'f4':115,
				'f5':116,
				'f6':117,
				'f7':118,
				'f8':119,
				'f9':120,
				'f10':121,
				'f11':122,
				'f12':123
			}
	
			var modifiers = { 
				shift: { wanted:false, pressed:false},
				ctrl : { wanted:false, pressed:false},
				alt  : { wanted:false, pressed:false},
				meta : { wanted:false, pressed:false}	//Meta is Mac specific
			};
                        
			if(e.ctrlKey)	modifiers.ctrl.pressed = true;
			if(e.shiftKey)	modifiers.shift.pressed = true;
			if(e.altKey)	modifiers.alt.pressed = true;
			if(e.metaKey)   modifiers.meta.pressed = true;
                        
			for(var i=0; k=keys[i],i<keys.length; i++) {
				//Modifiers
				if(k == 'ctrl' || k == 'control') {
					kp++;
					modifiers.ctrl.wanted = true;

				} else if(k == 'shift') {
					kp++;
					modifiers.shift.wanted = true;

				} else if(k == 'alt') {
					kp++;
					modifiers.alt.wanted = true;
				} else if(k == 'meta') {
					kp++;
					modifiers.meta.wanted = true;
				} else if(k.length > 1) { //If it is a special key
					if(special_keys[k] == code) kp++;
					
				} else if(opt['keycode']) {
					if(opt['keycode'] == code) kp++;

				} else { //The special keys did not match
					if(character == k) kp++;
					else {
						if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase
							character = shift_nums[character]; 
							if(character == k) kp++;
						}
					}
				}
			}

			if(kp == keys.length && 
						modifiers.ctrl.pressed == modifiers.ctrl.wanted &&
						modifiers.shift.pressed == modifiers.shift.wanted &&
						modifiers.alt.pressed == modifiers.alt.wanted &&
						modifiers.meta.pressed == modifiers.meta.wanted) {
				callback(e);
	
				if(!opt['propagate']) { //Stop the event
					//e.cancelBubble is supported by IE - this will kill the bubbling process.
					e.cancelBubble = true;
					e.returnValue = false;
	
					//e.stopPropagation works in Firefox.
					if (e.stopPropagation) {
						e.stopPropagation();
						e.preventDefault();
					}
					return false;
				}
			}
		}
		this.all_shortcuts[shortcut_combination] = {
			'callback':func, 
			'target':ele, 
			'event': opt['type']
		};
		//Attach the function with the event
		if(ele.addEventListener) ele.addEventListener(opt['type'], func, false);
		else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func);
		else ele['on'+opt['type']] = func;
	},

	//Remove the shortcut - just specify the shortcut and I will remove the binding
	'remove':function(shortcut_combination) {
		shortcut_combination = shortcut_combination.toLowerCase();
		var binding = this.all_shortcuts[shortcut_combination];
		delete(this.all_shortcuts[shortcut_combination])
		if(!binding) return;
		var type = binding['event'];
		var ele = binding['target'];
		var callback = binding['callback'];

		if(ele.detachEvent) ele.detachEvent('on'+type, callback);
		else if(ele.removeEventListener) ele.removeEventListener(type, callback, false);
		else ele['on'+type] = false;
	}
}
//-------------------------------------------- FIM  GERA TECLAS DE ATALHO   ----------------------------------------------------
