var ehIE = isIE();

function $(id){  
	var elemento = document.getElementById(id);	
  	return elemento;
}


function showComponent(id){
  $(id).style.display = "block";
}

function hideComponent(id){
  $(id).style.display = "none";  	
}

/**
 * Esconde o objeto passado como parametro.
 * @param {Object} obj
 */
function hideObject(obj){	
	obj.style.display = "none";
}


function isVisible(id){  
 
 return $(id).style.display=="block" || $(id).style.display==""?true:false;
 
}

/**
 * Informa se o browser é IE ou nao
 */
function isIE(){
      if (window.XMLHttpRequest) {
        return false;
      } 
	  else{ 
	    if (window.ActiveXObject) {
         isIE = true;
         return true;
        }
	  }
		 	
	  return false;
}

/**
  Mostra e esconde um componente a partir do click. 
  Se o componente estiver aberto ele ? fechado e vice versa
**/
function pullDownComponent(id){	 	
  isVisible(id)?hideComponent(id):showComponent(id);
}

/**
 * 
 * @param {Object} id do formulario
 */
function postForm(id){
	try{
		$(id).submit();
	}
	catch (e) {
		alert("Ocorreu um problema..."+e);
	}
}

/**
 Faz a validacao dos checkboxes nas telas de listagens. Todas tem que estar
 com o checkbox com id =ids
**/
function validaCheckIds(){

  for(var i=0;i<document.forms[0].elements.length;i++){
     var e = document.forms[0].elements[i];
     if(e.type=="checkbox"){
        if(e.checked){
           return true;
        }
     }
   }
   alert("Voce deve selecionar alguma opcao!");
   return false;
}

/**
 * Retorna todos os ids de checks marcados separados por ,. Tem um bug de jogar 
 * uma , na ultima posicao. Depois eu resolvo. E tambem ja esconde a linha
 */
function getChecksIds(){
  var cks = "";
  var quantForms= document.forms.length;
  /*
   * eu pesquiso pelos checks em todos os forms da pagina para poupar trabalho
   */     
  for(var j=0;j<quantForms;j++){  	  
	  for(var i=0;i<document.forms[j].elements.length;i++){	  	
	     var e = document.forms[j].elements[i];
		 
	     if(e.type=="checkbox" && e.id=="ids"){	 	
	        if(e.checked){		   
	           cks +=e.value+",";
			   e.checked = false;
			   //hideComponent(e.value);		   
			   hideObject(e.parentNode.parentNode);		   		   
	        }
	     }
	   }
   }
   return cks;	
}

		   		 		   		   		 
/**
 Funcao que recebe um combo e deixa
 selecionado determinado item se o selectedValue nao for vazio.
**/
function selecionaItemCombo(comboId,selectValue){
	
   var select = $(comboId);   
   if(selectValue!="" && selectValue!=null){       
	   for(i=0;i<select.options.length;i++){
	       if(select.options[i].value==selectValue){
	          select.options[i].selected=true;
	          break;
	       }
	   }
    }
}

/**
 * 
 * @param {Object} table tabela de onde deve ser removida a linha
 * @param {Object} rowId id da linha a ser removida
 */
function removeRow(table,rowId){	 
	  var linhas = table.rows;
	  for(i=0;i<linhas.length;i++){
	  	  if(linhas[i].id==rowId){		  	 
		  	 table.deleteRow(i);
			 break;
		  }
	  }	   
}


/**
 * Remove as linhas especificas da tabela
 * @param {Object} tableId
 * @param {Object} rowsId ids separados por ,
 */
function removeRows(tableId,rowsId){
	var table = $(tableId);	
	rowsId = rowsId.split(",");		
	var decremento = 0;
	for(i=0;i<rowsId.length;i++){
		if(rowsId[i]!=""){		   		
           removeRow(table,rowsId[i]);
		}
	}
}

/**
 * 
 * @param {Object} tableId
 * @param {Object} rowsId
 */
function especialRemoveRows(tableId,rowsId){
	var table = $(tableId);	
	rowsId = rowsId.split(",");		
	var decremento = 0;	
		
	for(i=0;i<rowsId.length;i++){					    
		if(rowsId[i]!="" && isVisible(rowsId[i])){				   	   	   		   
           //table.deleteRow($("deleteId"+rowsId[i]).value-decremento);
		   //decremento +=1;
		   hideComponent(rowsId[i]);		   		   		   
		}
	}	
}

/**
 * Ambos os parametros, quando mais de um item, devem vir separados por ,.
 * O formato é o seguinte-> origem:destino,origem:destino ...
 * @param {Object} origens campos de origem para serem extraidos os dados 
 */
function copyProperties(campos){
	campos = campos.split(",");
	for(i=0;i<campos.length;i++){
		
		origem = campos[i].split(":")[0];
        destino = campos[i].split(":")[1];		
		$(destino).value = $(origem).value;
					
	}
}

function abrirJanela(url, nomeJanela,resisable,w,h) {

    var res = 'no';
    if(resisable){
		res = 'yes';
	}

    if(!w)
        w=800;
    if(!h)
        h=600;
		

    
    var left = (screen.width)?(screen.width-w)/2:100;
	var top = (screen.height)?(screen.height-h)/2:100;
    
    window.open(url, nomeJanela, "toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable="+res+", copyhistory=yes, width="+w+", height="+h+", left="+left+",top="+top);
}

/**
 * Abri um popup com todas as opcoes habilitadas
 * @param {Object} url
 * @param {Object} nomeJanela
 */
function abrirJanelaCompleta(url,nomeJanela){
	var w = 800;
	var h = 600;

    var left = (screen.width)?(screen.width-w)/2:100;
	var top = (screen.height)?(screen.height-h)/2:100;
	
window.open(url, nomeJanela, "toolbar=yes, location=no, directories=no, status=yes, menubar=yes, scrollbars=yes, resizable=yes, copyhistory=yes, width="+w+", height="+h+", left="+left+",top="+top);		
}

/**
 * Troca o src de uma tag img dado o path e o id
 * @param {Object} path
 */
function verImagem(path,id){  
 document.getElementById(id).src = path; 
}

 function limpaCombo(select){
   while (select.options.length > 0){
      select.options[0] = null;
   }
   select.options[0] = new Option("-- Wählen --","");
 }
 
/**
 * 
 * @param {Object} str
 * @param {Object} wh > O apenas trim o inicio, se for < apenas o final, se nao inicio e final
 */
function trim(str,wh){
	if(!str.replace){ return str; }
	if(!str.length){ return str; }
	var re = (wh > 0) ? (/^\s+/) : (wh < 0) ? (/\s+$/) : (/^\s+|\s+$/g);
	return str.replace(re, "");
} 


/**
 * Monta os parametros para uma url
 * A string deve vir no seguinte formato-> nome=valor:nome=valor:nome
 * Caso um nome vier sem valor eu faco document.getElementById(nome).value
 * @param {Object} urlBase -> url base sem os parametros 
 * @param {Object} params
 * @return url
 */
function createUrlParameters(urlBase,params){
	var params = params.split(":");
	urlBase = urlBase+"?";
	for(i=0;i<params.length;i++){
		var vetor = params[i].split("=");
		var nome = vetor[0];
		
		var valor = "";
		if(vetor.length>1 && trim(vetor[1]).length>0){			
			valor = vetor[1];
		}
		else{					
			valor = $(nome).value;
		}
		urlBase+=nome+"="+valor+"&";
	}
	
	return urlBase;
	
}



/**
 * 
 * @param {Object} values valores separados por alguma coisa
 * @param {Object} separador separador
 */
function parserStringToArray(values,separador){
	return values.split(separador);
}

/**
 * 
 * @param {Object} srcs dos js separados por ,
 */
function includeJS(srcs){
			var vetor = parserStringToArray(srcs,",");
			
			for(i=0;i<vetor.length;i++){
		        novo = document.createElement("script");
				novo.setAttribute("type","text/javascript");
				novo.setAttribute("src",vetor[i]);				            				
	            //document.body.appendChild(novo);
				document.getElementsByTagName("head").item(0).appendChild(novo);				
			}
}

/**
 * Funcao para dar reload na pagina externa ao iframe.
 * @param {Object} urlBase
 */
function reloadSite(urlBase){	
	this.parent.document.location.href = urlBase+"admin.do?lastUrl=modules/administrarModulos.do?method=listar";
}
