//Contém funções genéricas e úteis
function getElementsByClassName(classname, parent){
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = parent.getElementsByTagName("*");
    for(var i=0,j=els.length; i<j; i++)
        if(re.test(els[i].className))a.push(els[i]);
    return a;
}

function insertAfter(newElement,targetElement){
	var parent = targetElement.parentNode;
	
	if (parent.lastChild == targetElement){
		parent.appendChild(newElement);
	}
	else{
		parent.insertBefore(newElement,targetElement.nextSibling);
	}
}

//Verifica o browser
function getBrowser(){
    var bname;
    var bversion;
    var url;
    var janela = null;
    
    bname=navigator.appName;
    bversion=navigator.appVersion;
    bversion=parseFloat(navigator.appVersion);
    
    var retorno = Array();
    retorno['name']    = trim(bname, "all");
    retorno['version'] = trim(bversion, "all");
    
    return retorno;
}

//Por Lauro Becker
//Função 'trim' que possibilita eliminar todos (ou apenas os do começo ou do final) espaços em branco de uma string
//input - String a ser processada.
//tipo  - tipo de trim {"all", "start", "end"}
function trim(input, tipo){
	if (typeof input != "string") { return input; }
	
	if(tipo == "end"){
		input = trimEnd(input);
	}
	else if(tipo == "start"){
		input = trimStart(input);
	}
	else{
		input = trimEnd(input);
		input = trimStart(input);
	}	
	
	return input;
	
	
	//--------------------
	
	//Função interna que retira os caracteres em branco do começo da string
	function trimStart(input){
		nova = new Array(input.length);
		
		elimina = true;
		cont = 0;
		eliminados = 0;
		for(i = 0; i < input.length; i++){
			if(elimina){
				if(input.charAt(i) != " "){
					nova[cont] = input.charAt(i);
					elimina = false;
					cont++;
				}
				else{
					eliminados++;
				}
			}
			else{
				nova[cont] = input.charAt(i);
				cont++;
			}
		}
		
		retorno = "";
		for(i = 0; i < (nova.length - eliminados); i++)
			retorno += nova[i];
		
		return retorno;
	}
	
	//Função interna que retira os caracteres em branco do final da string
	function trimEnd(input){
		nova = new Array(input.length);
		
		elimina = true;
		cont = 0;
		eliminados = 0;
		for(i = input.length - 1; i >= 0; i--){
			if(elimina){
				if(input.charAt(i) != " "){
					nova[cont] = input.charAt(i);
					elimina = false;
					cont++;
				}
				else{
					eliminados++;
				}
			}
			else{
				nova[cont] = input.charAt(i);
				cont++;
			}
		}
		
		retorno = "";
		for(i = (nova.length - eliminados) - 1; i >= 0; i--)
			retorno += nova[i];
		
		return retorno;
	}
}

//Retira as carateres especiais. Ex: \n, \t
function cleanEscape(inputString){
	if (typeof inputString != "string") { return inputString; }
	var retValue = inputString;
	var ch = retValue.substring(0, 1);
	
	while (ch == "\n" || ch == "\t") {
	  retValue = retValue.substring(1, retValue.length);
	  ch = retValue.substring(0, 1);
	}
	ch = retValue.substring(retValue.length-1, retValue.length);
	
	while (ch == "\n" || ch == "\t") {
	  retValue = retValue.substring(0, retValue.length-1);
	  ch = retValue.substring(retValue.length-1, retValue.length);
	}
	
	while (retValue.indexOf("  ") != -1) {
	  retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
	}
	
	return retValue;
}

/*
	Faz o preload da imagem passada por parâmetro.
*/
var listaImagensPreload = Array();
var countPreload = 0;
function preloadImage(src){
	listaImagensPreload[countPreload] = new Image();
	listaImagensPreload[countPreload].src = src;
	
	countPreload++;
}