/**
  *  
  *  Implementação de um PopupManager em JavaScript para aplicações que disparam mais de um popup a partir de uma única página.
  *  
  *  Métodos:	
  *	popitup(url, popupParams) - método que dispara um popup abrindo a url passada como parâmetro e chamando o popup com as propriedades passadas pelo
					    parâmetro popupParams
					  Ex.: popup('www.google.com.br', 'height=200,width=150');
*/

//////////////////////////////////////////////////////
//     BLOCO DE GERÊNCIA DOS POPUPS DA APLICAÇÃO  //
//////////////////////////////////////////////////////
var popupsHash = new Hashtable(); //objeto hash que irá manter as referências para os popups da aplicação. A chave será a url do popup.

function popup(url, popupParams, customkey) { //key, se informada, será a chave do popup (do contrário a url será usada)
	

	var key = url;
	
	if (customkey != null) {
	    key = customkey;
	}
	
	var newwindow = popupsHash.get(url);
	if (newwindow && !newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		//Este trecho de codigo permite que a url seja modificada para ser usada como chave na chamada dos popups, assim permitindo o correto gerenciamento dos mesmos no client.
		var url_id = key.replace(/\//g, "");
		url_id = url_id.replace(/:/g, "");
		url_id = url_id.replace(/\?/g, "");
		url_id = url_id.replace(/\./g, "");
		url_id = url_id.replace(/=/g, "");
		url_id = url_id.replace(/&/g, "");

        // Configuração para abrir popup no centro da tela	    	    
	    str2 =  popupParams.split(",");
	    str3 = str2[0].split("=");
	    str4 = str2[1].split("=");
	    
	    var strAltura;
	    var strLargura;
	    
	    for (i = 0; i < str3.length; i++){
	        if(str3[i] != "height"){
	            strAltura = str3[i];
	        }
	        if(str4[i] != "width"){
	            strLargura = str4[i];
	        }
	    }
	    
        var esquerda = (screen.width - strLargura)/2;
        var topo = (screen.height - strAltura)/2;
	    		
	    var temp = popupParams;
	    popupParams = "left=" + esquerda + ",top=" + topo + "," + temp;
	   	    
		newwindow=window.open(url, url_id, popupParams);
		if (!newwindow.opener) newwindow.opener = self;
		
		popupsHash.put(url, newwindow);
	}
	if (window.focus) {newwindow.focus()}
	return false;
}

function closeAllPopups() {
    
    var popupWindow;
    popupsHash.moveFirst();
    
    while (popupsHash.next()) {
        popupWindow = popupsHash.getValue();
        popupWindow.close();
    }
}

//A chave (key) pode ser a url ou uma outra expressao
function closePopup(btn) {

//	var newwindow = popupsHash.get(key);
//	
//	if (!newwindow) {
//		var url_id = key.replace(/\//g, "");
//		url_id = url_id.replace(/:/g, "");
//		url_id = url_id.replace(/\?/g, "");
//		url_id = url_id.replace(/\./g, "");
//		url_id = url_id.replace(/=/g, "");
//		url_id = url_id.replace(/&/g, "");
//			
//		newwindow = popupsHash.get(key);
//	}
//	
//	if (newwindow) {
//        newwindow.close();
    //	}

    window.close();

}
//---------------------------------------------------------------------------------------//
//    FIM DO BLOCO DE GERÊNCIA DOS POPUPS DA APLICAÇÃO   //
//--------------------------------------------------------------------------------------//


