/* MotorJS - 05/2006 */

function MotorJS(){
	
	this.navPermite = function(){
		if( navigator.userAgent.indexOf('MSIE') > -1 || navigator.userAgent.indexOf('Firefox') > -1 || navigator.userAgent.indexOf('Netscape') > -1 ) return true; 
		return false;
	}
	
	this.mascaraPadrao = function(sObjeto, sEvento, sMascara){
		var LetrasU = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
		var LetrasL = 'abcdefghijklmnopqrstuvwxyz';
		var Letras  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
		var Numeros = '0123456789';
		var Fixos   = '().-:/+ ';
		var Charset = " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_/`abcdefghijklmnopqrstuvwxyz{|}~";
		var AsciiCh = 'áãâàäÁÃÂÀÄéêèëÉÊÈËíîìïÍÎÌÏóõôòöÓÕÔÒÖúûùüÚÛÙÜçÇ';
		
		sEvento = (sEvento) ? sEvento : (window.event) ? window.event : '';
		var ntecla = (sEvento.which) ? sEvento.which : sEvento.keyCode;
		var ValorObjeto = sObjeto.value;
		
		if(sEvento){
			var TamanhoValorObjeto = ValorObjeto.length;
			if (TamanhoValorObjeto >= sMascara.length){
				if (ntecla==8 || ntecla==46 || ntecla==39 || ntecla==37 || ntecla==35 || ntecla==36 || ntecla==9) return true;
				return false;
			}

			if( this.navPermite() ){
				tecla = Charset.substr(ntecla - 32, 1);
				if (ntecla < 32) return true;
				if (ntecla==8 || ntecla==46 || ntecla==39 || ntecla==37) return true;
				
				var pos = sMascara.substr(TamanhoValorObjeto, 1); 
				while(Fixos.indexOf(pos) != -1){
					ValorObjeto += pos;
					TamanhoValorObjeto = ValorObjeto.length;
					
					if (TamanhoValorObjeto >= sMascara.length){
						if (ntecla==8 || ntecla==46 || ntecla==39 || ntecla==37) return true;
						return false;
					}
					pos = sMascara.substr(TamanhoValorObjeto, 1);
				}
				
				switch(pos){
					case '#' : if ( (Numeros.indexOf(tecla) == -1) || ((ntecla < 48) || (ntecla > 57)) ) return false; break;
					case 'A' : if (LetrasU.indexOf(tecla) == -1) return false; break;
					case 'a' : if (LetrasL.indexOf(tecla) == -1) return false; break;
					case 'Z' : if (Letras.indexOf(tecla) == -1) return false; break;
					case '*' : sObjeto.value = ValorObjeto; return true; break;
					default : return false; break;
				}
			}
		}
		
		sObjeto.value = ValorObjeto;
		return true;
	}
	
	this.maxChar = function(sObjeto, iMaximo){
		var iTamanho = sObjeto.value.length; 
		var iDigitado = 0;
		
		iDigitado = iDigitado + iTamanho;
		
		document.getElementById(sObjeto.name + '_digitado').innerHTML = iDigitado + ' digitados ';
		document.getElementById(sObjeto.name + '_restante').innerHTML = (iMaximo - iDigitado) + ' restantes ';
	
		if (iTamanho > iMaximo){ 
			var sAux = sObjeto.value; 
			sObjeto.value = sAux.substring(0, iMaximo); 
			
			document.getElementById(sObjeto.name + '_digitado').innerHTML = iMaximo + ' digitados ';
			document.getElementById(sObjeto.name + '_restante').innerHTML = ' 0 restantes ';
		}
	}
	
	this.setData = function(sData){
		var aNovadata = new Array();
		var sRetorno  = new String();
		var sTipo	  = (arguments[1]) ? arguments[1] : 'mysql';
		
		switch(sTipo){
			case 'mysql':
				aNovadata = sData.split('/');
				sRetorno  = aNovadata[2] + '-' + aNovadata[1] + '-' + aNovadata[0];
				break;
			
			case 'data':
				aNovadata = sData.split('-');
				sRetorno  = aNovadata[2] + '/' + aNovadata[1] + '/' + aNovadata[0];
				break;
			
			case 'datahora':
				aNovadata = sData.split(' ');
				
				var sHora = aNovadata[1];
				var sQuebra = (arguments[2]) ? arguments[2] : ' ';
				
				aNovadata = aNovadata[0].split('-');
				sHora = sHora.substring(0, 5);
				
				sRetorno = aNovadata[2] + '/' + aNovadata[1] + '/' + aNovadata[0] + sQuebra + sHora;
				break;
			
			case 'timestamp':
				if( sData.indexOf('/') > -1 ){
					aNovadata = sData.split('/');
					sRetorno  = new Date( aNovadata[1] + '/' + aNovadata[0] + '/' + aNovadata[2] );
				}
				
				if( sData.indexOf('-') > -1 ){
					aNovadata = sData.split('-');
					sRetorno  = new Date( aNovadata[1] + '/' + aNovadata[2] + '/' + aNovadata[0] );
				}
				
				sRetorno = sRetorno.getTime();
				break;
		}
		
		return sRetorno;
	}
	
	this.comparaData = function(sData1, sData2){
		var sComparacao = (arguments[2] && arguments[2]!='') ? arguments[2] : '>';
		
		if( eval("this.setData(sData1, 'timestamp') " + sComparacao + " this.setData(sData2, 'timestamp')") ) return false;		
		return true;
	}
	
	this.comparaHora = function(sHora1, sHora2){
		var sComparacao = (arguments[2] && arguments[2]!='') ? arguments[2] : '>';
		var sData	    = '01/01/1970';
		var aNovaHora1  = sHora1.split(':');
		var aNovaHora2  = sHora2.split(':');
		
		aNovaHora1[2] = (aNovaHora1[2]==undefined) ? '00' : aNovaHora1[2];
		aNovaHora2[2] = (aNovaHora2[2]==undefined) ? '00' : aNovaHora2[2];
		
		sHora1 = new Date( sData + aNovaHora1[0] + ':' + aNovaHora1[1] + ':' + aNovaHora1[2] );
		sHora2 = new Date( sData + aNovaHora2[0] + ':' + aNovaHora2[1] + ':' + aNovaHora2[2] );
		
		if( eval("sHora1.getTime() " + sComparacao + " sHora2.getTime()") ) return false;
		return true;
	}
	
	this.diffData = function(sData1, sData2){
		var sTipo = (arguments[2]) ? arguments[2] : 'dias';
		var iBase = new Number();
		
		switch(sTipo){
			case 'segundos': iBase = 1; 		   break;
			case 'minutos':  iBase = 60; 		   break;
			case 'horas':	 iBase = 60 * 60; 	   break;
			case 'dias': 	 iBase = 60 * 60 * 24; break;
		}
		
		var iDiff = ( (this.setData(sData2, 'timestamp') - this.setData(sData1, 'timestamp')) / (iBase*1000) );
		return Math.floor(iDiff);
	}
	
	this.proxixoCampo = function(sOrigem, iTamanho, sDestino){
		var sFormulario = sOrigem.form.name;
		
		with(document.forms[sFormulario]){
			if(sOrigem.value.length == iTamanho) sDestino.focus();
		}
	}
	
	this.HTMLDebug = function(sSource){
		var aTags 	 = new Array(); //array com todas as tags
		var aArgs 	 = new Array(); //array com todos os argumentos (pertinentes)
		var aEventos = new Array(); //array com todos os eventos (pertinentes)
		
		aTags = [
			'TABLE', 'THEAD', 'TBODY', 'TH', 'TR', 'TD',
			'HTML', 'HEAD', 'TITLE', 'BODY', 'SCRIPT', 'LINK', 'STYLE',
			'FONT', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6',
			'DIV', 'SPAN', 'IMG',
			'FORM', 'INPUT', 'TEXTAREA', 'SELECT', 'OPTION', 'OPTGROUP', 'FIELDSET', 'LEGEND', 'LABEL',
			'FRAMESET', 'IFRAME', 'FRAME', 'OBJECT', 'META',
			'P', 'BR', 'HR', 'B', 'STRONG', 'U', 'I', 'EM', 'UL', 'OL', 'LI', 'A'
		];
		aArgs    = ['id=', 'name='];
		aEventos = ['onclick=', 'onblur', 'onkeypress=', 'onkeydown', 'onkeyup', 'onmouseover', 'onmouseout'];
		
		try {
			debugWindow = window.open('about:blank', 'source', 'width=720, height=500, scrollbars=yes, resizable=yes, status=yes');
			debugWindow.document.write('<html><head><title>HTML Debug</title><style type="text/css">body{font-family:Courier New; font-size:12px;}</style></head><body><p><font size="5"><b>HTML Debug</b></font><hr size="1" noshade /></p><div id="debugTag"></div><br><hr size="1" noshade /></body></html>');
			
			sSource = sSource.replace(/&/g, "&amp;");
			sSource = sSource.replace(/</g, "<br>&lt;");
			sSource = sSource.replace(/>/g, "&gt;<br>");
			
			for(var i=0;i<aTags.length;i++) sSource = sSource.replace(eval('/' + aTags[i] + '/g'), "<font color=#000080>" + aTags[i] + "</font>");
			for(var i=0;i<aArgs.length;i++) sSource = sSource.replace(eval('/' + aArgs[i] + '/g'), "<font color=#CC0000><b>" + aArgs[i] + "</b></font>");
			for(var i=0;i<aEventos.length;i++) sSource = sSource.replace(eval('/' + aEventos[i] + '/g'), "<font color=#008000><b>" + aEventos[i] + "</b></font>");
			debugWindow.document.getElementById('debugTag').innerHTML = sSource;
		}
		catch(e){
			alert('A janela já estava aberta. Feche-a e execute-a novamente!');
		}
	}
	
	//---------------------------------------------------------------------------
	
	this.trim = function(sString){
		return sString.replace(/(\s+$)|(^\s+)/g, '');
	}
	
	this.in_array = function(sPesquisa, objArray){
		var sStrict = (arguments[2]) ? arguments[2] : false;
		
		if(sStrict == true){
			for(var i=0;i<objArray.length;i++){
				if( objArray[i] === sPesquisa ) return true;
			}
		}else{
			for(var i=0;i<objArray.length;i++){
				if( objArray[i] == sPesquisa ) return true;
			}
		}
		
		return false;
	}
	
}

//-------------------------------------------------------------------------------
var motorjs = new MotorJS();
//-------------------------------------------------------------------------------

function mascaraCEP(sObjeto, sEvento){
	return motorjs.mascaraPadrao(sObjeto, sEvento, '#####-###');
}

function mascaraCPF(sObjeto, sEvento){
	return motorjs.mascaraPadrao(sObjeto, sEvento, '###.###.###-##');
}

function mascaraCNPJ(sObjeto, sEvento){
	return motorjs.mascaraPadrao(sObjeto, sEvento, '##.###.###/####-##');
}

function mascaraData(sObjeto, sEvento){
	return motorjs.mascaraPadrao(sObjeto, sEvento, '##/##/####');
}

function mascaraHora(sObjeto, sEvento){
	return motorjs.mascaraPadrao(sObjeto, sEvento, '##:##');
}

function mascaraTelefone(sObjeto, sEvento){
	return motorjs.mascaraPadrao(sObjeto, sEvento, '(##) ####-####');
}

function mascaraTelefoneInternacional(sObjeto, sEvento){
	return motorjs.mascaraPadrao(sObjeto, sEvento, '+## ## ####-####');
}

function mascaraNumeros(sObjeto, sEvento){
	var iMaximo  = (arguments[2]) ? arguments[2] : 10;
	var sMascara = new String();
	
	for(var i=0;i<iMaximo;i++) sMascara += '#';
	return motorjs.mascaraPadrao(sObjeto, sEvento, sMascara);
}

function mascaraNumeros2(sObjeto, sEvento){
	var iMaximo  = (arguments[2]) ? arguments[2] : 10;
	var sMascara = new String();

	var ntecla   = (sEvento.which) ? sEvento.which : sEvento.keyCode;
	var chrTecla = String.fromCharCode(ntecla).toUpperCase();

	switch(chrTecla){
		case '.': return false; break; 
		case '%': return false; break; 		
		case "'": return false; break; 				
		case '"': return false; break; 						
		//case '-': if(sObjeto.value.length < iMaximo) return true; break;
	}
	for(var i=0;i<iMaximo;i++) sMascara += '#';
	return motorjs.mascaraPadrao(sObjeto, sEvento, sMascara);
}


function mascaraCartaoVisa(sObjeto, sEvento){
	return motorjs.mascaraPadrao(sObjeto, sEvento, '#### #### #### ####');
}

function mascaraCartaoValidade(sObjeto, sEvento){
	return motorjs.mascaraPadrao(sObjeto, sEvento, '##/##');
}

function mascaraMoeda(sObjeto, sEvento){
	var iMaximo  = (arguments[2]) ? arguments[2] : 7;
	var ntecla   = (sEvento.which) ? sEvento.which : sEvento.keyCode;
	var chrTecla = String.fromCharCode(ntecla).toUpperCase();

	switch(chrTecla){
		case '.': return false; break; 
		case '-': if(sObjeto.value.length < iMaximo) return true; break;
	}
		
	switch(ntecla){
		case 8:  //backspace
		case 46: //delete
		case 39: //frente
		case 37: //tras
		case 35: //home
		case 36: //end
		case 9: //tab
			return true;
			break;
		
		case 13:
			return false;
			break;
			
		default:
			if( ((ntecla<48) || (ntecla>57)) || (sObjeto.value.length > iMaximo) ) return false;
			
			var sConteudo = sObjeto.value;
			sConteudo 	  = sConteudo + chrTecla;
			sConteudo	  = sConteudo.replace('.', '');
			sObjeto.value = sConteudo.substring(0, sConteudo.length-2) + '.' + sConteudo.substring(sConteudo.length-2, sConteudo.length);
			break;
	}
	
	return false;
}

//-------------------------------------------------------------------------------
