/*	----------------------------------------------------------------- 
	Classe Swiss Knife - Utilitários de Desenvolvimento
	Desenvolvida por Anderson Triacca - anderson@andersontriacca.com
	Data de Criação: 19/02/2007
	Última Modificação: 20/03/2009
-----------------------------------------------------------------	*/

/*
*
* 	Declaração dos métodos da classe
*
*/
function SwissKnife() {
	SwissKnife.prototype.criarObj = criarObj;	
	SwissKnife.prototype.efetuarPedido = efetuarPedido;		
	SwissKnife.prototype.addListener = addListener;		
	SwissKnife.prototype.retornarQueryString = retornarQueryString;		
	SwissKnife.prototype.addSwf = addSwf;		
	SwissKnife.prototype.randomico = randomico;
	SwissKnife.prototype.in_array = in_array;
	SwissKnife.prototype.limpaInputs = limpaInputs;
	SwissKnife.prototype.validaInputs = validaInputs;
}

/*
*
* 	Adiciona Ouvintes a ações de DOM
*
*	@param		obj			Objeto a ser monitorado
*	@param		evento		Evento do objeto a ser monitorado
*	@param		funcao		função a disparar junto com o evento
	@return					void
*
*/
function addListener(obj, evento, funcao) {
	if(window.attachEvent) {
		obj.attachEvent('on'+evento, funcao);
	} else{
		obj.addEventListener(evento, funcao, false);
	} 
}

/*
*
* 	Busca Valores de Querystring
*
*	@param		string		Nome da variável a buscar
*	@return					valor contido na variável "string"
*
*/
var req = window.location.search.substr(1,window.location.search.length);
var dbl = req.split('&');
var aPrm = new Array();
var aVal = new Array();
var objQS = new Object();
for (i=0;i < dbl.length;i++) {
  aPrm[i+1] = dbl[i].substring(0,dbl[i].indexOf('='));
  aVal[i+1] = unescape(dbl[i].substring(dbl[i].indexOf('=')+1,dbl[i].length));
  objQS[aPrm[i+1]] = aVal[i+1];
}
function retornarQueryString(string) {
  return eval("objQS." + string);
}

/*
*
* 	Cria um Objeto XMLHttp
*	@return		void
*/
function criarObj() {
	var xmlhttp;
	/*@cc_on
		@if (@_jscript_version >= 5) {
			try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {
					xmlhttp = false;
				}
			}
		} @else {
			xmlhttp = false;
		}
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}
	this.obj = xmlhttp;
}

/*
*
* 	Efetua uma requisição através do objeto
*
*	@param		url			url da requisição
*	@param		método		método da requisição
*	@param		conteudo	variáveis contidas na requisição
*	@return					void
*
*/
function efetuarPedido(url, metodo, conteudo){
	this.obj.open(metodo, url, true);
	this.obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	this.obj.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate"); 
	this.obj.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
	this.obj.setRequestHeader("Pragma", "no-cache");
	this.carregado = false;
	this.status = 'carregando';
	this.obj.send(conteudo);
}

/*
*
* 	Substitui o conteúdo de uma DIV por um objeto SWF
*
*	@param		swf			Caminho do SWF a substituir
*	@param		alvo		ID do elemento DOM a ser preenchido com o SWF
*	@param		altura		Altura do SWF
*	@param		largura		Largura do SWF
*	@param		[variavel]	Nome da variável a Inserir dentro do SWF
*	@param		[valor]		Valor a Inserir na Variável dentro do SWF
*	@return					void
*
*/
function addSwf(swf, alvo, largura, altura, variavel, valor){
	var so = new SWFObject(swf, alvo, largura, altura, "8", "");
	if(variavel){
		so.addVariable(variavel, valor);
	}
	so.addParam("wmode", "transparent");
	so.write(alvo);
}

/*
*
* 	Sorteia um Número Randômico entre 1 e "limite"
*
*	@param		limite		Maior número a ser gerado
*	@return					Número sorteado
*
*/
function randomico(limite){
	limite += 1;
	num = Math.floor(Math.random()*limite);
	if(num == 0){
		randomico(limite-1);
	} else{
		return num;
	}
}

/*
*
* 	Verifica valores nos índices de um Array
*
*	@param		array		Array a ser consultado
*	@param		valor		Valor a buscar dentro do Array
*	@return		boolean		True caso o valor seja encontrado dentro do array, e False caso não seja
*
*/
function in_array(array, valor){
	retorno = false;
	for(i=0;i<array.length;i++){
		if(array[i] == valor){
			retorno = true;	
		}
	}
	return retorno;
}

/*
*
* 	Limpa os campos input e textarea do formulário quando se lica neles
*
*	@param		form		Identificador do formulário a ser limpado
*	@param		valores		Array contendo os valores originais dos campos
*	@return					void
*
*/
function limpaInputs(form, valores){
	retorno = false;
	valor = false;
	inputs = document.getElementById(form).getElementsByTagName('input');
	for(i=0;i<inputs.length;i++){
		inputs[i].onclick = function(){
			if(this.type == 'text'){
				valor = this.value;
				retorno = s.in_array(valores,valor);
				if(retorno){
					this.value = '';	
				}
			}	
		}	
		inputs[i].onblur = function(){
			if(this.value == ''){
				this.value = valor;
			}
		}	
	}
	textarea = document.getElementById(form).getElementsByTagName('textarea');
	for(i=0;i<textarea.length;i++){
		textarea[i].onclick = function(){
			valor = this.innerHTML;
			retorno = s.in_array(valores,valor);
			if(retorno){
				this.innerHTML = '';	
			}
		}	
		textarea[i].onblur = function(){
			if(this.innerHTML == ''){
				this.innerHTML = valor;
			}
		}	
	}
}

/*
*
* 	Faz validação dos campos Input do formulário
*
*	@param		form		Identificador do formulário a ser validado
*	@param		campos		Array contendo os ids dos campos a serem validados
*	@param		valores		Array contendo os valores originais dos campos
*	@return					void
*
*/
function validaInputs(form, campos, valores){
	document.getElementById(form).onsubmit = function(){
		retorno = true;
		campo = false;
		for(j=0;j<campos.length;j++){
			if(document.getElementById(campos[j]).value == '' || s.in_array(valores, document.getElementById(campos[j]).value)){
				alert('O campo "'+campos[j]+'" é obrigat\u00F3rio');	
				return false;
			}
		}
		return true;
	}
}