/*	----------------------------------------------------------------- 
	Classe Swiss Knife - Utilitários de Desenvolvimento
	Desenvolvida por Anderson Triacca - anderson@andersontriacca.com
	Data de Criação: 19/02/2007
	Última Modificação: 13/05/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;
	SwissKnife.prototype.pre_load = pre_load;
	SwissKnife.prototype.ordenarTabela = ordenarTabela;
	SwissKnife.prototype.inserirEditor = inserirEditor;
	SwissKnife.prototype.criadorInputs = criadorInputs;
	SwissKnife.prototype.retornaPagina = retornaPagina;
}

/*
*
* 	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){
	var variaveis = {
		'pagina': variavel
	};
	var parametros = {
		wmode: "transparent"
	};
	var atributos = {
		menu: "false"	
	}
	swfobject.embedSWF(swf, alvo, largura, altura, "10", "scripts/expressInstall.swf", variaveis, parametros, atributos);
}

/*
*
* 	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){
	//Variáveis
	retorno = false;
	valor = false;
	
	//Verificando se o form existe
	if(!document.getElementById(form)){
		alert('Erro! Formul\u00E1rio n\u00E3o encontrado!');
		return false;
	}
	
	// Rotina de Limpeza de Inputs
	inputs = document.getElementById(form).getElementsByTagName('input');
	for(i=0;i<inputs.length;i++){
		inputs[i].onfocus = 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;
			}
		}	
	}
	
	// Rotina de Limpeza de Textarea
	textarea = document.getElementById(form).getElementsByTagName('textarea');
	for(i=0;i<textarea.length;i++){
		textarea[i].onfocus = 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){
	//Verificando se o form existe
	if(!document.getElementById(form)){
		alert('Erro! Formul\u00E1rio n\u00E3o encontrado!');
		return false;
	}
	
	// Rotina de Validação dos Inputs
	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 "'+document.getElementById(campos[j]).title+'" \u00E9 obrigat\u00F3rio!');	
				return false;
			}
		}
		return true;
	}
}

/*
*
* 	Pré Carrega Iamgens no Cache do Navegador
*
*	@param		img			String 		contendo o caminho da imagem a ser carregada
*	@return					Boolean		True se a imagem for carregada ou False caso contrário
*
*/
function pre_load(img){
	obj_image = new Image();
	obj_image.src = img;
	obj_image.onload = function(){
		return true;
	}
	obj_image.onerror = function(){
		return false;
	}
}

/*
*
* 	Chama a ordenação de uma tabela
*
*	@param		tabela		String 		Identificador da Tabela a Ordenar
*	@return					void
*
*/
function ordenarTabela(tabela){
	if(!!document.getElementById(tabela)){
		$("#"+tabela).tablesorter();
		$('.clear').each(function(){
			$('.clear').removeClass('normal');
		});
	}
}

/*
*
* 	Substitui um Textarea pelo FCKEditorS
*
*	@param		alvo		String 		Identificador do Textarea
*	@return					void
*
*/
function inserirEditor(alvo){
	if(document.getElementById(alvo)){
		var oFCKeditor = new FCKeditor(alvo) ;
		oFCKeditor.BasePath = "../boss/scripts/fckeditor/" ;
		oFCKeditor.ToolbarSet = 'Basic';
		oFCKeditor.Width = 500;
		oFCKeditor.ReplaceTextarea();
	}
}

/*
*
* 	Ao clicar num botão insere inputs type=file na tela
*
*	@return					void
*
*/

function criadorInputs(){
	if(!!document.getElementById('adicionar_fotos')){
		document.getElementById('adicionar_fotos').onclick = function(){
			input = document.createElement('input');
			input.type = 'file';
			input.name = 'fotos[]';
			input.className = 'file';
			document.getElementById('fotos').appendChild(input);
			return false;
		}
	}
}

/*
*
* 	Pega o Indentificador de Página no HTML
*
*	@return		string		Retorna o Identificador de Página
*
*/
function retornaPagina(){
	return document.getElementById('pagina_atual').value;
}
