// JavaScript Document
function fnOpenFlash(swf, id, arg){
	var width = ob(id).style.width.substr(0, ob(id).style.width.length-2);
	var height = ob(id).style.height.substr(0, ob(id).style.height.length-2);
	var so = new SWFObject("swf/"+swf+".swf", id+"_swf", width, height, "8", "#FFF", "transparent");
	so.addParam("WMODE", "transparent");
	if(null!=arg && undefined!=arg) so.addVariable("arg", arg);
	so.write(id);
}

function fnTextoFlash(arquivo, div){
	var id = "";
	var num = arquivo.length;
	for(var i=0; i<num; i++){
		letra = String(arquivo).substr(i, 1);
		if("."==letra) break;
		id += letra;
	}
	
	if(!div) div = id;
	var texto = ob(div).innerHTML;
	ob(div).innerHTML = "";
	
	var width = ob(div).style.width.substr(0, ob(div).style.width.length-2);
	var height = ob(div).style.height.substr(0, ob(div).style.height.length-2);
	
	var so = new SWFObject("swfs/"+arquivo, id, width, height, "8", "#FFF", "transparent");
	so.addParam("WMODE", "transparent");
	so.addVariable("txt", texto);
	so.write(div);
}

// Filtro Numérico /////////////////////////////////////////////////////////////////////
function fnNumbersOnly(obj, retorno, isFloat){
	var teor = "";
	if(obj.value) teor = obj.value;
	if(obj.innerHTML) teor = obj.innerHTML;	
	
	
	var retifica = "";
	var flag=false;
	var array = null;
	if(!isFloat){
		array = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
	} else if(1==isFloat) {
		array = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ",");
	} else if(2==isFloat){
		array = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "x", "X");
	}
	for(var i=0; i<teor.length; i++){
		flag=false;
		letra = teor.substr(i, 1);
		for(j=0; j<array.length; j++){
			if(String(letra)!=String(array[j])){
				flag=true;
			} else {
				retifica+=String(letra);
			}
		}
	}
	if(flag){
		if(!retorno){
			obj.value = retifica;
		} else {
			return retifica;
		}
	}
}

function fnMascarar(obj, retorno){
	var teor = obj.value;
	var retifica = "";
	var array = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
	for(var i=0; i<teor.length; i++){
		var flag=false;
		letra = teor.substr(i, 1);
		for(j=0; j<array.length; j++){
			if(String(letra)==String(array[j])){
				flag=true;
				break;
			}
		}
		if(flag) retifica+=letra;
	}	var lt=0;
	while(String("0")==String(lt) || String(",")==String(lt)){
		lt = retifica.substr(0,1);
		if(String("0")==String(lt)) retifica = retifica.substr(1, retifica.length-1);
	}
	if(""!=retifica){
		if(1==retifica.length){
			retifica = "0,0" + retifica;
		} else if(2==retifica.length){
			retifica = "0," + retifica;
		} else if(retifica.length>=3){
			retifica = retifica.substr(0, retifica.length-2) + "," + retifica.substr(retifica.length-2, 2);
		}
	}
	if(!retorno){
		if(retifica){
			obj.value = "R$ "+retifica;
		} else {
			obj.value = "";
		}
	} else {
		return retifica;	
	}
}

// Comunicação Ajax ///////////////////////////////////////////////////////

function fnConexao(args, file, retorno, tipo){
	var req = null;
	
	if (window.XMLHttpRequest){
	
		req = new XMLHttpRequest();
		if (req.overrideMimeType){
			req.overrideMimeType('text/xml');
		}
	} 
	
	else if (window.ActiveXObject){
	
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e){
		
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	
	req.onreadystatechange = function() { 
	
		if(req.readyState == 4)	{
			
			if(req.status == 200) {
				
				if(tipo){
					tipo=tipo.toLowerCase();
					var doc = null;
					if("text"==tipo){
						doc = req.responseText;
					} else if("xml"==tipo) {
						doc = req.responseXML;
						//doc2 = req.responseText;
						//alert(doc2);
						//alert(doc.childNodes[0].firstChild.data);
					}
					//alert(retorno);
					if(retorno){
						retorno = retorno + "(doc)";
						eval(retorno);
					}
				}				
			}
		}
	};
	
	req.open("POST", file, true);
	req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	req.send(args);
}

//Validando Emails
function fnValidaEmail(emailad){
	var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
	var check=/@[\w\-]+\./;
	var checkend=/\.[a-zA-Z]{2,3}$/;
	if(((emailad.search(exclude) != -1)||(emailad.search(check)) == -1)||(emailad.search(checkend) == -1)){
		return false;
	}
	else {
		return true;
	}
}

//elimina espaços em branco no inicio e no final da string
function trimAll(sString){
	var sString = new String(sString);
	while (sString.substring(0,1) == " "){
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == " "){
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function fnFocus(id){
	ob(id).focus();	
}

function ob(id){
	return document.getElementById(id);
}

function include(arquivo){
	document.write("<script language=\"JavaScript\" src='"+arquivo+"'></script>"); 
}

var aval = function (id, condition ,mensagem){
	if("empty"==condition){
		if(0==trimAll(ob(id).value).length){
			alert(mensagem);
			fnFocus(id);
			return true;
		} else {
			return false;
		}
	} else if("email"==condition){
		if(!fnValidaEmail(ob(id).value)){
			alert(mensagem);
			fnFocus(id);
			return true;
		} else {
			return false;
		}
	} else if(condition){
		if(!condition.test(ob(id).value)){
			alert(mensagem);
			ob(id).value="";
			fnFocus(id);
			return true;
		} else {
			return false;
		}
	} else {
		return true;	
	}
}

// Utilitários de Formatação //////////////////////////////////////////////

function fnFormataCep(obj){
	var teor = null;
	if(obj.value) teor = obj.value;
	if(obj.innerHTML) teor = obj.innerHTML;
	
	if(teor){
	
		var retifica = "";
		var flag=false;
		
		var array = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
		
		for(var i=0; i<teor.length; i++){
			flag=false;
			letra = teor.substr(i, 1);
			for(var j=0; j<array.length; j++){
				if(String(letra)!=String(array[j])){
					flag=true;
				} else {
					retifica+=String(letra);
				}
			}
		}
		
		var saida = "";
		
		if(retifica.length>=6){
			saida = retifica.substr(0, 5) + "-";
			restante = retifica.length - 5;
			saida += retifica.substr(5, restante);
		} else {
			saida=retifica;
		}
		
		obj.value = saida;
	}
}

function fnFormataCelular(obj){
	var teor = null;
	if(obj.value) teor = obj.value;
	if(obj.innerHTML) teor = obj.innerHTML;
	
	if(teor){
	
		var retifica = "";
		var flag=false;
		
		var array = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
		
		for(var i=0; i<teor.length; i++){
			flag=false;
			letra = teor.substr(i, 1);
			for(var j=0; j<array.length; j++){
				if(String(letra)!=String(array[j])){
					flag=true;
				} else {
					retifica+=String(letra);
				}
			}
		}
		
		obj.value = retifica.substr(0, 8);
	}
}

function fnRgFormat(obj){
	if(obj.value.length>0){
		var teor = fnNumbersOnly(obj, 1, 2);
		
		/*
		teor = teor.substr(0, 13);
		var tam = teor.length;
		var new_quant = obj.value.length;
		
		var retorno = teor.substr(0, 2);
		if(2==retorno.length && tam>2){
			retorno += ".";
			retorno += teor.substr(2, 3);
			if(6==retorno.length && tam>5){
				retorno += ".";
				retorno += teor.substr(5, 3);
				if(10==retorno.length && tam>8){
					retorno += "-";
					retorno += teor.substr(8, 2);
				}
			}
		}
		*/
		
		obj.value = teor; //retorno;
	}
}

function fnCpfFormat(obj){
	if(obj.value.length>0){
		var teor = fnNumbersOnly(obj, 1, null);
		teor = teor.substr(0, 14);
		var tam = teor.length;
		
		var retorno = teor.substr(0, 3);
		if(3==retorno.length && tam>3){
			retorno += ".";
			retorno += teor.substr(3, 3);
			if(7==retorno.length && tam>6){
				retorno += ".";
				retorno += teor.substr(6, 3);
				if(11==retorno.length && tam>9){
					retorno += "-";
					retorno += teor.substr(9, 2);
				}
			}
		}
		obj.value = retorno;
	}
}

function fnFoneFormat(obj){
	if(obj.value.length>0){
		var teor = fnNumbersOnly(obj, 1, null);
		teor = teor.substr(0, 10);
		var tam = teor.length;
		
		var retorno = "(";
		retorno += teor.substr(0, 2);
		if(3==retorno.length && tam>2){
			retorno += ") ";
			retorno += teor.substr(2, 4);
			if(9==retorno.length && tam>6){
				//retorno += "-";
				retorno += teor.substr(6, 4);
			}
		}
		obj.value = retorno;
	}
}

var Password = function() {
	this.pass = "";

	this.generate = function(chars) {
		for (var i=0; i<chars; i++) {
			this.pass += this.getRandomChar();
		}
		return this.pass;
	}

	this.getRandomChar = function() {
		 /*
		*    matriz contendo em cada linha indices (inicial e final) da tabela ASCII para retornar alguns caracteres.
		*    [48, 57] = numeros;
		*    [64, 90] = "@" mais letras maiusculas;
		*    [97, 122] = letras minusculas;
		*/
		var ascii = [[48, 57],[97,122]];
		var i = Math.floor(Math.random()*ascii.length);
		return String.fromCharCode(Math.floor(Math.random()*(ascii[i][1]-ascii[i][0]))+ascii[i][0]);
	}
}

var fnJumper = function(obj, size, nextobj){
	obj.value=obj.value.substr(0, size);
	if(parseInt(size)==obj.value.length) fnFocus(nextobj);
}

