// Decompiled by DJ v3.0.0.63 Copyright 2002 Atanas Neshkov  Date: 29/09/2006 14:27:40

// Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!

// Decompiler options: packimports(3) 

// Source File Name:   Q70JavascriptLib.java



package q02b.tag;



//import java.lang.reflect.Method;

//import java.util.ArrayList;



import es.ejie.frmk.listeners.base.Q70ListenerUtils;



//import es.ejie.frmk.presentacion.sesiondatos.Q70ContextoEJIE;



//import es.ejie.frmk.infraestructura.internacionalizacion.Q70GestorMensajesi18n;

//import es.ejie.frmk.infraestructura.traza.Q70TraceLevel;

import es.ejie.frmk.infraestructura.traza.Q70Traza;



import javax.servlet.http.HttpServletRequest;

//import javax.servlet.http.HttpSession;



import q02b.exe.utils.Q02bFormatData;





//import q02b.exe.utils.Q02bConstantes;





public class Q02bJavascriptUtils 

{

	final static String COMPONENTE 				= "JAVASCRIPT_UTILS";

	final static String PARAMETRO_INTERWOVEN	= "R01HNoPortal";

	

	//private static Q70Traza tr = Q70Traza.getSingleton();

	

    public Q02bJavascriptUtils(){}



    /**

	 * Devuelve un String para recuperar un campo JavaScript

	 * 

	 * @param String s

	 * @param String s1

	 * @param String s2

	 *   

	 * @return String

	 * 

	 */

    public static String getHtmlFieldValue(String s, String s1, String s2)

    {

    	//Se declara el stringbuffer donde se almacenarán los valores

        StringBuffer stringbuffer = new StringBuffer("");

        //Se comprueba que ambos strings tengan valor

        if(!Q02bFormatData.esVacio(s1) && !Q02bFormatData.esVacio(s2)){

        	stringbuffer.append("document.").append(s1).append(".").append(s2).append(".value");

        }

        //Se devuelve el stringbuffer convertido en string

        return null == stringbuffer ? "" : stringbuffer.toString();

    }

    

    public static String getHtmlFieldValue(String s2)

    {

        return getHtmlFieldValue(" ", null,s2);

    }



    private static String getBridgeBaseUrl(HttpServletRequest httpservletrequest, String s)

    {

        StringBuffer stringbuffer = new StringBuffer(256);

        stringbuffer.append(httpservletrequest.getContextPath()).append(s);

        return stringbuffer.toString();

    }



    

    

    public static String generarCodigo(String cadena, String formName){

    	StringBuffer aux = new StringBuffer(cadena).append(" AND (1=1)");

    	//S99GNT02_NI = {cmb_tipo_proceso}S99GNT02_NI = {cmb_tipo_proceso}

    	//si viene COLUMN1= {nom_campo} and COLUMN1 > {nom_campo2}

    	StringBuffer inicio = new StringBuffer("");

    	while (aux.indexOf("{") != -1 && aux.indexOf("}") != -1){

    		//vienen campos javscript

    		inicio = inicio.append(aux.substring(0,aux.indexOf("{") ));

    		StringBuffer resto =  new StringBuffer(aux.substring(aux.indexOf("{"), aux.length()));

    		String campo = resto.substring(1,resto.indexOf("}"));

    		inicio.append("\"+").append(Q02bJavascriptUtils.getHtmlFieldValue("LIST",formName, campo));

    		aux = new StringBuffer(aux.substring(aux.indexOf("}")+1).trim());

    		if (aux.length() > 0 ){

    			inicio.append("+ \" ");

    		}    		

    	} 

    	inicio = inicio.append(aux);

    	return inicio.toString(); 

    }

     



  

    public static String renderComboTablasCodEnlazadoHtmlCode(HttpServletRequest httpservletrequest, Q02bComboTablasCodEnlazado q02blistasenlazadastag)

    {

        String s = Q70ListenerUtils.getApplicationProperty("JavascriptLib", null, "ALIAS_LISTAS_ENLAZADAS");

        String s1 = Q70ListenerUtils.getApplicationProperty("JavascriptLib", null,"PREFIJO_URL_ESTATICO") + Q70ListenerUtils.getGlobalProperty("ALIAS_ESTATICO") + "/scripts";

        StringBuffer stringbuffer = new StringBuffer(1000);

        String s2 = q02blistasenlazadastag.getBridgeName();

        if("iframe".equalsIgnoreCase(q02blistasenlazadastag.getTechnology()))

        {

            if(!q02blistasenlazadastag.isInPageContext("FrmkBrowserSniffer.js"))

            {

                stringbuffer.append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkBrowserSniffer.js\" type=\"text/javascript\"></script> \r\n");

                q02blistasenlazadastag.putInPageContext("FrmkBrowserSniffer.js");

            }

            if(!q02blistasenlazadastag.isInPageContext("FrmkIframe.js"))

            {

                stringbuffer.append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkIframe.js\" type=\"text/javascript\"></script> \r\n");

                q02blistasenlazadastag.putInPageContext("FrmkIframe.js");

            }

            if(!q02blistasenlazadastag.isInPageContext("FrmkForm.js"))

            {

                stringbuffer.append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkForm.js\" type=\"text/javascript\"></script> \r\n");

                q02blistasenlazadastag.putInPageContext("FrmkForm.js");

            }

            if(!q02blistasenlazadastag.isInPageContext("FrmkBridge.js"))

            {

                stringbuffer.append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkBridge.js\" type=\"text/javascript\"></script> \r\n");

                q02blistasenlazadastag.putInPageContext("FrmkBridge.js");

            }

            if(!q02blistasenlazadastag.isInPageContext("FrmkScripts.js"))

            {

                stringbuffer.append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkScripts.js\" type=\"text/javascript\"></script> \r\n");

                q02blistasenlazadastag.putInPageContext("FrmkScripts.js");

            }

            stringbuffer.append("<script language=\"JavaScript\"> \r\n").append("var ").append(s2).append(" = new FrmkBridge(\"").append(s2).append("\"); \r\n").append("function ").append(q02blistasenlazadastag.getJavascriptCallerFunc()).append("(){ \r\n").append(" var u=\"").append(getBridgeBaseUrl(httpservletrequest, s)).append("?formName=").append(q02blistasenlazadastag.getFormName().length() <= 0 ? "" : q02blistasenlazadastag.getFormName()).append("&sourceTag=").append(q02blistasenlazadastag.getSourceTag().length() <= 0 ? "" : q02blistasenlazadastag.getSourceTag()).append("&sourceTagValue=");

            if(null != q02blistasenlazadastag.getSourceTag() && 0 < q02blistasenlazadastag.getSourceTag().length()){

                stringbuffer.append("\"+").append(getHtmlFieldValue("LIST", q02blistasenlazadastag.getFormName(), q02blistasenlazadastag.getSourceTag())).append("+\"");
            }
            

            stringbuffer.append("&targetTag=").append(q02blistasenlazadastag.getTargetTag().length() <= 0 ? "" : q02blistasenlazadastag.getTargetTag());

            /*if(comboEnlazado.getExtraPredicate() != null && comboEnlazado.getExtraPredicate().length() > 0){

        	 stringbuffer.append(generarCodigo(comboEnlazado.getExtraPredicate(),comboEnlazado.getFormName()));

        }       */

            stringbuffer.append("&retFunc=").append(q02blistasenlazadastag.getJavascriptReturnFunc() == null ? "" : q02blistasenlazadastag.getJavascriptReturnFunc()).append("&table=").append(q02blistasenlazadastag.getTable() == null ? "" : q02blistasenlazadastag.getTable()).append("&labelColumn=").append(q02blistasenlazadastag.getLabelColumn().length() <= 0 ? "" : q02blistasenlazadastag.getLabelColumn()).append("&valueColumn=").append(q02blistasenlazadastag.getValueColumn().length() <= 0 ? "" : q02blistasenlazadastag.getValueColumn()).append("&predicateColumn=").append(q02blistasenlazadastag.getPredicateColumn().length() <= 0 ? "" : q02blistasenlazadastag.getPredicateColumn()).append("&predicateColumnNumeric=").append(q02blistasenlazadastag.getPredicateColumnNumeric()).append("&extraPredicate=").append(q02blistasenlazadastag.getExtraPredicate().length() <= 0 ? "" : generarCodigo(q02blistasenlazadastag.getExtraPredicate(),q02blistasenlazadastag.getFormName())  ).append("&technology=").append(q02blistasenlazadastag.getTechnology().length() <= 0 ? "" : q02blistasenlazadastag.getTechnology()).append("\"; \r\n ").append(s2);

            if(q02blistasenlazadastag.getSubmitMethod().toUpperCase().equals("POST")){

                stringbuffer.append(".doSubmit(u);  \r\n");
            }
            else{

                stringbuffer.append(".doRedirect(u);  \r\n");
            }
            stringbuffer.append("} \r\n").append("</script> \r\n");

        } else

        if("ajax".equalsIgnoreCase(q02blistasenlazadastag.getTechnology()))

        {

            if(!q02blistasenlazadastag.isInPageContext("FrmkAjax.js"))

            {

                stringbuffer.append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkAjax.js\" type=\"text/javascript\"></script> \r\n");

                q02blistasenlazadastag.putInPageContext("FrmkAjax.js");

            }

            if(!q02blistasenlazadastag.isInPageContext("FrmkScripts.js"))

            {

                stringbuffer.append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkScripts.js\"></script> \r\n");

                q02blistasenlazadastag.putInPageContext("FrmkScripts.js");

            }

            stringbuffer.append("<script language=\"JavaScript\" type=\"text/javascript\"> \r\n").append("function ").append(q02blistasenlazadastag.getJavascriptCallerFunc()).append("(){ \r\n").append(" var u=\"").append(getBridgeBaseUrl(httpservletrequest, s)).append("\"; \r\n ").append(" var method=\"").append(q02blistasenlazadastag.getSubmitMethod()).append("\"; \r\n ").append(" var parametros = \"formName=").append(q02blistasenlazadastag.getFormName().length() <= 0 ? "" : q02blistasenlazadastag.getFormName()).append("&sourceTag=").append(q02blistasenlazadastag.getSourceTag().length() <= 0 ? "" : q02blistasenlazadastag.getSourceTag()).append("&sourceTagValue=");

            if(null != q02blistasenlazadastag.getSourceTag() && 0 < q02blistasenlazadastag.getSourceTag().length()){

                stringbuffer.append("\"+").append(getHtmlFieldValue("LIST", q02blistasenlazadastag.getFormName(), q02blistasenlazadastag.getSourceTag())).append("+\"");
            }
            stringbuffer.append("&targetTag=").append(q02blistasenlazadastag.getTargetTag().length() <= 0 ? "" : q02blistasenlazadastag.getTargetTag());

            stringbuffer.append("&retFunc=").append(q02blistasenlazadastag.getJavascriptReturnFunc() == null ? "" : q02blistasenlazadastag.getJavascriptReturnFunc()).append("&table=").append(q02blistasenlazadastag.getTable() == null ? "" : q02blistasenlazadastag.getTable()).append("&labelColumn=").append(q02blistasenlazadastag.getLabelColumn().length() <= 0 ? "" : q02blistasenlazadastag.getLabelColumn()).append("&valueColumn=").append(q02blistasenlazadastag.getValueColumn().length() <= 0 ? "" : q02blistasenlazadastag.getValueColumn()).append("&predicateColumn=").append(q02blistasenlazadastag.getPredicateColumn().length() <= 0 ? "" : q02blistasenlazadastag.getPredicateColumn()).append("&predicateColumnNumeric=").append(q02blistasenlazadastag.getPredicateColumnNumeric()).append("&extraPredicate=").append(q02blistasenlazadastag.getExtraPredicate().length() <= 0 ? "" : generarCodigo(q02blistasenlazadastag.getExtraPredicate(),q02blistasenlazadastag.getFormName()) ).append("&technology=").append(q02blistasenlazadastag.getTechnology().length() <= 0 ? "" : q02blistasenlazadastag.getTechnology()).append("\"; \r\n ").append("fncPeticionAjax (u, parametros, method);  \r\n").append("} \r\n").append("</script> \r\n");

        }

        return stringbuffer == null ? "" : stringbuffer.toString();

    }





    

    /**

	 * Genera el String con la información del combo

	 * 

	 * @param HttpServletRequest httpservletrequest

	 * @param Q02bComboTablasCodEnlazado comboEnlazado

	 * 

	 * @author iker.martinez

	 * 

	 * @return String

	 * 

	 */

    //NUESTRO

    /*

    public static String renderComboTablasCodEnlazadoHtmlCode(HttpServletRequest httpservletrequest, Q02bComboTablasCodEnlazado comboEnlazado)

    {    

        //Definición de variables que no se modificarán

    	final String JAVASCRIPT_LIB 			= "JavascriptLib";

    	final String ALIAS_LISTAS_ENLAZADAS		= "ALIAS_LISTAS_ENLAZADAS";

    	final String ALIAS_ESTATICO				= "ALIAS_ESTATICO";

    	final String PREFIJO_URL_ESTATICO		= "PREFIJO_URL_ESTATICO";

    	//Se genera una cadena donde se irá almacenando toda la información

        StringBuffer stringbuffer = new StringBuffer(1000);

        //Se obtienen valores globales de la aplicación

        String s 	= Q70ListenerUtils.getApplicationProperty(JAVASCRIPT_LIB, null, ALIAS_LISTAS_ENLAZADAS);

        String s1 	= Q70ListenerUtils.getGlobalProperty(PREFIJO_URL_ESTATICO) + Q70ListenerUtils.getGlobalProperty(ALIAS_ESTATICO) + "/scripts";

        //Se obtiene el nombre del controlador de tags del framework

        String s2 	= comboEnlazado.getBridgeName();

        //Si el valor del bridge counter es 0, se deben añadir una serie de librerías del framework

        if(comboEnlazado.getBridgeCounter() == 0){

        	 stringbuffer.append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkBrowserSniffer.js\"></script> \r\n")

        	 .append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkIframe.js\"></script> \r\n")

        	 .append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkForm.js\"></script> \r\n")

        	 .append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkBridge.js\"></script> \r\n")

        	 .append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkScripts.js\"></script> \r\n");

        }

        //Se añade a la cadena código javascript para recuperar los valores del tag

        stringbuffer.append("<script language=\"JavaScript\"> \r\n")

        .append("var ").append(s2).append(" = new FrmkBridge(\"").append(s2).append("\"); \r\n")

        .append("function ").append(comboEnlazado.getJavascriptCallerFunc()).append("(){ \r\n")

        .append(" var u=\"").append(getBridgeBaseUrl(httpservletrequest, s))

        .append("?formName=").append(comboEnlazado.getFormName().length() <= 0 ? "" : comboEnlazado.getFormName())

        .append("&sourceTag=").append(comboEnlazado.getSourceTag().length() <= 0 ? "" : comboEnlazado.getSourceTag())

        .append("&sourceTagValue=");

        //Se comprueba que el tag del source tenga valor

        if(comboEnlazado.getSourceTag() != null && comboEnlazado.getSourceTag().length() > 0){

            stringbuffer.append("\"+").append(getHtmlFieldValue("LIST", comboEnlazado.getFormName(), comboEnlazado.getSourceTag())).append("+\"");

        }

        stringbuffer.append("&targetTag=").append(comboEnlazado.getTargetTag().length() <= 0 ? "" : comboEnlazado.getTargetTag());

        stringbuffer.append("&retFunc=").append(comboEnlazado.getJavascriptReturnFunc() == null ? "" : comboEnlazado.getJavascriptReturnFunc())

        .append("&table=").append(comboEnlazado.getTable() == null ? "" : comboEnlazado.getTable())

        .append("&labelColumn=").append(comboEnlazado.getLabelColumn().length() <= 0 ? "" : comboEnlazado.getLabelColumn())

        .append("&valueColumn=").append(comboEnlazado.getValueColumn().length() <= 0 ? "" : comboEnlazado.getValueColumn())

        .append("&predicateColumn=").append(comboEnlazado.getPredicateColumn().length() <= 0 ? "" : comboEnlazado.getPredicateColumn())

        .append("&predicateColumnNumeric=").append(comboEnlazado.getPredicateColumnNumeric())        

        .append("&extraPredicate=");

        if(comboEnlazado.getExtraPredicate() != null && comboEnlazado.getExtraPredicate().length() > 0){

        	 stringbuffer.append(generarCodigo(comboEnlazado.getExtraPredicate(),comboEnlazado.getFormName()));

        }        

        stringbuffer.append("\"; \r\n ").append(s2);

        if("POST".equals(comboEnlazado.getSubmitMethod().toUpperCase()))

            stringbuffer.append(".doSubmit(u);  \r\n");

        else

            stringbuffer.append(".doRedirect(u);  \r\n");

        stringbuffer.append("} \r\n").append("</script> \r\n");

        return stringbuffer == null ? "" : stringbuffer.toString();

    }

    */

    public static String renderComboCodigosActivosHtmlCode(HttpServletRequest httpservletrequest, Q02bComboTablasCodEnlazado comboEnlazado)

    {

        String s 	= Q70ListenerUtils.getApplicationProperty("JavascriptLib", null, "ALIAS_LISTAS_ENLAZADAS");

        String s1 	= Q70ListenerUtils.getGlobalProperty("PREFIJO_URL_ESTATICO") + Q70ListenerUtils.getGlobalProperty("ALIAS_ESTATICO") + "/scripts";

        StringBuffer stringbuffer = new StringBuffer(1000);

        String s2 = comboEnlazado.getBridgeName();

        if(0 == comboEnlazado.getBridgeCounter()){

            stringbuffer.append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkBrowserSniffer.js\"></script> \r\n").append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkIframe.js\"></script> \r\n").append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkForm.js\"></script> \r\n").append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkBridge.js\"></script> \r\n").append("<script language=\"JavaScript\" src=\"").append(s1).append("/FrmkScripts.js\"></script> \r\n");
        }
        stringbuffer.append("<script language=\"JavaScript\"> \r\n").append("var ").append(s2).append(" = new FrmkBridge(\"").append(s2).append("\"); \r\n").append("function ").append(comboEnlazado.getJavascriptCallerFunc()).append("(){ \r\n").append(" var u=\"").append(getBridgeBaseUrl(httpservletrequest, s)).append("?formName=").append(comboEnlazado.getFormName().length() <= 0 ? "" : comboEnlazado.getFormName()).append("&sourceTag=").append(comboEnlazado.getSourceTag().length() <= 0 ? "" : comboEnlazado.getSourceTag()).append("&sourceTagValue=");

        if(null != comboEnlazado.getSourceTag() && 0 < comboEnlazado.getSourceTag().length()){

            stringbuffer.append("\"+").append(getHtmlFieldValue("LIST", comboEnlazado.getFormName(), comboEnlazado.getSourceTag())).append("+\"");
        }
        stringbuffer.append("&targetTag=").append(comboEnlazado.getTargetTag().length() <= 0 ? "" : comboEnlazado.getTargetTag());

        stringbuffer.append("&retFunc=").append(comboEnlazado.getJavascriptReturnFunc() == null ? "" : comboEnlazado.getJavascriptReturnFunc()).append("&table=").append(comboEnlazado.getTable() == null ? "" : comboEnlazado.getTable()).append("&labelColumn=").append(comboEnlazado.getLabelColumn().length() <= 0 ? "" : comboEnlazado.getLabelColumn()).append("&valueColumn=").append(comboEnlazado.getValueColumn().length() <= 0 ? "" : comboEnlazado.getValueColumn()).append("&predicateColumn=").append(comboEnlazado.getPredicateColumn().length() <= 0 ? "" : comboEnlazado.getPredicateColumn()).append("&predicateColumnNumeric=").append(comboEnlazado.getPredicateColumnNumeric()).append("&extraPredicate=").append(comboEnlazado.getExtraPredicate().length() <= 0 ? "" : comboEnlazado.getExtraPredicate()).append("\"; \r\n ").append(s2);

        if(comboEnlazado.getSubmitMethod().toUpperCase().equals("POST")){

            stringbuffer.append(".doSubmit(u);  \r\n");
        }
        else{

            stringbuffer.append(".doRedirect(u);  \r\n");
        }
        stringbuffer.append("} \r\n").append("</script> \r\n");

        return stringbuffer == null ? "" : stringbuffer.toString();

    }



    

    /**

	 * Genera el String con la información del combo

	 * 

	 * @param HttpServletRequest httpservletrequest

	 * @param Q02bCombo 		 combo

	 * 

	 * @return String

	 * 

	 */

    public static String renderComboHtmlCode(HttpServletRequest httpservletrequest, Q02bCombo combo)

    {

    	//Definición de variables que no se modificarán

    	final String APP_PARAMETERS 	= "APP_PARAMETERS";

    	final String APP_DATA 			= "APP_DATA";

    	final String CLASSNAME 			= "CLASSNAME";

    	final String METHOD 			= "METHOD";

    	final String METHOD_NAME 		= "getComboData";

    	final String CLASS_LAUNCHER 	= "q02b.exe.comun.Q02bCoddataLauncher";

    	final String RESULT 			= "RESULT";

    	final String RESULT_1 			= "RESULT_1";

    	//Se genera una cadena donde se irá almacenando toda la información

        StringBuffer stringbuffer 	= new StringBuffer();

        //Se añade a la cadena código javascript para recuperar los valores del tag

        stringbuffer.append("<script language=\"JavaScript\"> \r\n");

        stringbuffer.append("function ").append(combo.getJavascriptCallerFunc()).append("(){ \r\n");

        stringbuffer.append("var GDTP = new ARQ_GDTP(); \r\n");

        stringbuffer.append("GDTP.addGroup(\"").append(APP_PARAMETERS).append("\"); \r\n");

        stringbuffer.append("GDTP.addProperty(\"").append(APP_PARAMETERS).append("\",\"")

        .append(CLASSNAME).append("\",\"").append(CLASS_LAUNCHER).append("\"); \r\n");

        stringbuffer.append("GDTP.addProperty(\"").append(APP_PARAMETERS).append("\",\"")

        .append(METHOD).append("\",\"").append(METHOD_NAME).append("\"); \r\n");

        stringbuffer.append("GDTP.addGroup(\"").append(APP_DATA).append("\"); \r\n");

        stringbuffer.append("GDTP.addProperty(\"").append(APP_DATA).append("\",\"TABLE\"").append(",\"")

        .append(combo.getTable()).append("\"); \r\n");

        stringbuffer.append("GDTP.addProperty(\"").append(APP_DATA).append("\",\"COD_COLUM_NAME_SELECT\"").append(",\"")

        .append(combo.getValueColumn()).append("\"); \r\n");

        stringbuffer.append("GDTP.addProperty(\"").append(APP_DATA).append("\",\"DESC_COLUM_NAME_SELECT\"").append(",\"")

        .append(combo.getLabelColumn()).append("\"); \r\n");

        stringbuffer.append("GDTP.addProperty(\"").append(APP_DATA).append("\",\"COD_COLUM_NAME_WHERE\"").append(",\"")

        .append(combo.getPredicateColumn()).append("\"); \r\n");

        stringbuffer.append("GDTP.addProperty(\"").append(APP_DATA).append("\",\"VALUE_COLUM_NAME_WHERE\"").append(",")

        .append( getHtmlFieldValue("LIST", combo.getFormName(), combo.getSourceTag())).append("); \r\n");

        stringbuffer.append("GDTP.addProperty(\"").append(APP_DATA).append("\",\"NUMERIC_COLUM_WHERE\"").append(",\"")

        .append(combo.getPredicateColumnNumeric()).append("\"); \r\n");

        //Opcionales

        if(!Q02bFormatData.esVacio(combo.getWhereClause())){

            stringbuffer.append("GDTP.addProperty(\"").append(APP_DATA).append("\",\"VALUE_OPTIONAL_WHERE\"").append(",\"")

            .append(combo.getWhereClause()).append("\"); \r\n");

        }

        if(!Q02bFormatData.esVacio(combo.getSeparador())){

            stringbuffer.append("GDTP.addProperty(\"").append(APP_DATA).append("\",\"SEPARADOR\"").append(",\"")

            .append(combo.getSeparador()).append("\"); \r\n");

        }

        if(!Q02bFormatData.esVacio(combo.getOrderByClause())){

            stringbuffer.append("GDTP.addProperty(\"").append(APP_DATA).append("\",\"COLUM_ORDER_BY\"").append(",\"")

            .append(combo.getOrderByClause()).append("\"); \r\n");

        }

        if(!Q02bFormatData.esVacio(combo.getOrdenOrderBy())){

            stringbuffer.append("GDTP.addProperty(\"").append(APP_DATA).append("\",\"ORDEN_ORDER_BY\"").append(",\"")

            .append(combo.getOrdenOrderBy()).append("\"); \r\n");

        }

        stringbuffer.append("var response = Comm.submitGDTP(GDTP,\"/").append("q02b").append(combo.getModulo()).append("War")

        .append("/comunJSP/q02blauncher.jsp? \" + getIndNoPortalParaUrl(),\"POST\"); \r\n");

        stringbuffer.append("var result = response.getProperty(\"").append(RESULT_1).append("\",\"").append(RESULT).append("\"); \r\n");

        stringbuffer.append("cargaDatos(response, result); \r\n");

        stringbuffer.append("} \r\n");

        

        stringbuffer.append("function cargaDatos(response, result){ \r\n");

        stringbuffer.append("if(result == \"OK\"){ \r\n");

        stringbuffer.append("var opciones = document.all['").append(combo.getTargetTag()).append("'].options; \r\n");

        stringbuffer.append("for(i=opciones.length-1;i>=0;i--) { \r\n");

        stringbuffer.append("opciones[i] = null; \r\n");

        stringbuffer.append("} \r\n");

        stringbuffer.append("var count = response.getProperty(\"").append(RESULT_1).append("\",\"NUMREGISTROS\"); \r\n");

        stringbuffer.append("for(i=0;i<count;i++){ \r\n");

        stringbuffer.append("var codigo		 = response.getProperty(\"").append(RESULT_1).append("\",\"CODIGO_\"+i); \r\n");

        stringbuffer.append("var descripcion = response.getProperty(\"").append(RESULT_1).append("\",\"DESCRIPCION_\"+i); \r\n");

        stringbuffer.append("document.all['").append(combo.getTargetTag()).append("'].options[i] = new Option(descripcion,codigo); \r\n");

        //Fin del for

        stringbuffer.append("} \r\n");

        //Se añade la opción de blanco

        stringbuffer.append("document.all['").append(combo.getTargetTag()).append("'].options[count] = new Option('',''); \r\n");

        //Fin del if OK

        stringbuffer.append("} \r\n");

        //Fin de la función cargaDatos()

        stringbuffer.append("} \r\n");

        

        stringbuffer.append("</script> \r\n");

        

    	return stringbuffer.toString();

    }

    

    /**

	 * Genera el String de la función javascript que abrirá el pop-up del buscador general

	 * 

	 * @param HttpServletRequest 	httpservletrequest

	 * @param Q02bBuscadorGeneral 	buscadorGeneral

	 * 

	 * @return String

	 * 

	 */

    public static String renderBuscadorGeneralHtmlCode(HttpServletRequest httpservletrequest, Q02bBuscadorGeneral buscadorGeneral)

    {

    	//Definición de variables que no se modificarán

    	final String SUBMIT_BUSCADOR 		= "../comunJSP/q02bSubmitBusquedaBuscadorGeneral.do";

    	//Se genera una cadena donde se irá almacenando toda la información

        StringBuffer stringbuffer 			= new StringBuffer();

        //Se genera una cadena para centrar el buscador

        StringBuffer stringbufferCentrado 	= new StringBuffer();

        //Se indica las dimensiones de la página

        String dimensionesBuscador		= null;

        //Número de columnas a utilizar

        int numColumnas 				= 0;

        //Se comprueba si existen columnas idiomáticas

        if(!Q02bFormatData.esVacio(buscadorGeneral.getTableColumnsIdioma())){

        	//Se obtiene el número de columnas de la tabla de idiomas

        	//Se divide entre dos porque siempre irán en parejas columna_es,columna_eu...

        	//y en la lista de resultados sólo se visualiza una columna en función del idioma.

        	//Más tarde se le suma 1 porque hay que tener en cuenta la columna del código

        	numColumnas = buscadorGeneral.getTableColumnsIdioma().split(",").length/2+1;

        } else {

        	//Se obtiene el número de columnas

        	numColumnas = buscadorGeneral.getTableColumns().split(",").length;

        }

        //Se genera la cadena de centrado del buscador

        stringbufferCentrado.append("var x,y,arriba,izda;\n");

        stringbufferCentrado.append("x=window.screen.width;\n");

        stringbufferCentrado.append("y=window.screen.height;\n");

        //Se cambiarán las dimensiones en función de las columnas

        if(numColumnas == 2){

        	dimensionesBuscador	= "width=550,height=400,top='+arriba+',left='+izda";

        	stringbufferCentrado.append("izda=(x-550)/2;\n");

        	stringbufferCentrado.append("arriba=(y-400)/2;\n");

        }else if(numColumnas == 3){

        	dimensionesBuscador	= "width=700,height=550,top='+arriba+',left='+izda";

        	stringbufferCentrado.append("izda=(x-700)/2;\n");

        	stringbufferCentrado.append("arriba=(y-500)/2;\n");

        }

        else if(numColumnas == 4){

        	dimensionesBuscador	= "width=800,height=570,top='+arriba+',left='+izda";

        	stringbufferCentrado.append("izda=(x-800)/2;\n");

        	stringbufferCentrado.append("arriba=(y-550)/2;\n");

        }

        //Se añade a la cadena código javascript para recuperar los valores del tag

        stringbuffer.append("<script language=\"JavaScript\"> \r\n");

        stringbuffer.append("function ").append(buscadorGeneral.getJavascriptCallerFunc()).append("(){ \r\n");

        //Variables para el centrado del buscador general

        stringbuffer.append(stringbufferCentrado.toString());

        //Se empieza a escribir el window.open

        stringbuffer.append("window.open('").append(SUBMIT_BUSCADOR);

        stringbuffer.append("?targetValue=").append(buscadorGeneral.getTargetValue());

        stringbuffer.append("&").append(PARAMETRO_INTERWOVEN).append("=true");

        stringbuffer.append("&targetTextA=").append(buscadorGeneral.getTargetTextA());

        stringbuffer.append("&datosSelectBuscadorGeneral(table)=").append(buscadorGeneral.getTable());

        stringbuffer.append("&datosSelectBuscadorGeneral(tableColumns)=").append(buscadorGeneral.getTableColumns());

        stringbuffer.append("&datosSelectBuscadorGeneral(tableNi)=").append(buscadorGeneral.getTableNi());

        stringbuffer.append("&labelColumns=").append(buscadorGeneral.getLabelColumns());

        stringbuffer.append("&labelColumnsExtra=").append(buscadorGeneral.getLabelColumnsExtra());

        stringbuffer.append("&title=").append(buscadorGeneral.getTitle());

        //En función del número de columnas se indica un buscador u otro

        if(numColumnas == 2){

        	stringbuffer.append("&tipoBuscador=A");

        } else if(numColumnas == 3) {

        	stringbuffer.append("&tipoBuscador=B");

        } else if(numColumnas == 4) {

        	stringbuffer.append("&tipoBuscador=C");

        }

        //Se comprueba si se quiere depositar en otro texto

        stringbuffer.append("&targetTextB=").append(buscadorGeneral.getTargetTextB());

        

        //Se comprueba si se quiere depositar otro código

        stringbuffer.append("&targetCodigoA=").append(buscadorGeneral.getTargetCodigoA());

        

        //Se indican las columnas idiomáticas

        stringbuffer.append("&datosSelectBuscadorGeneral(tableColumnsIdioma)=").append(buscadorGeneral.getTableColumnsIdioma());



        //Se comprueba si se ha introducido la columna del order by

        if(!Q02bFormatData.esVacio(buscadorGeneral.getTableOrderByClause())){

        	stringbuffer.append("&datosSelectBuscadorGeneral(tableOrderByClause)=").append(buscadorGeneral.getTableOrderByClause());

        	//Se comprueba si se ha introducido el sentido del order by: ASC ó DESC

        	if(!Q02bFormatData.esVacio(buscadorGeneral.getTableOrdenOrderBy())){

        		stringbuffer.append("&datosSelectBuscadorGeneral(tableOrdenOrderBy)=").append(buscadorGeneral.getTableOrdenOrderBy());

        	}

        }else{

        	stringbuffer.append("&datosSelectBuscadorGeneral(tableOrderByClause)=").append(buscadorGeneral.getTableOrderByClause());

        	stringbuffer.append("&datosSelectBuscadorGeneral(tableOrdenOrderBy)=").append(buscadorGeneral.getTableOrdenOrderBy());

        }

        //Se comprueba si se ha introducido la columna where junto con el valor del campo del formulario

        if(!Q02bFormatData.esVacio(buscadorGeneral.getTableColumnWhere()) && !Q02bFormatData.esVacio(buscadorGeneral.getSourceValueColumnWhere())){

        	stringbuffer.append("&datosSelectBuscadorGeneral(tableColumnWhere)=").append(buscadorGeneral.getTableColumnWhere());

        	stringbuffer.append("&datosSelectBuscadorGeneral(sourceValueColumnWhere)='+document.all[\"").append(buscadorGeneral.getSourceValueColumnWhere()).append("\"].value+'");

            //Se comprueba si se ha introducido la característica de numérico

        	if(buscadorGeneral.getTableColumnWhereNumeric()){

            	stringbuffer.append("&datosSelectBuscadorGeneral(tableColumnWhereNumeric)=true");

            } else {

            	stringbuffer.append("&datosSelectBuscadorGeneral(tableColumnWhereNumeric)=false");

            }

        }else{

        	stringbuffer.append("&datosSelectBuscadorGeneral(tableColumnWhere)=");

        	stringbuffer.append("&datosSelectBuscadorGeneral(sourceValueColumnWhere)=");

        	stringbuffer.append("&datosSelectBuscadorGeneral(tableColumnWhereNumeric)=");

        }

        //Se comprueba si se ha introducido la where opcional

        if(!Q02bFormatData.esVacio(buscadorGeneral.getOptionalWhere())){

        	if(buscadorGeneral.getOptionalWhere().indexOf("'")>0){

        		buscadorGeneral.setOptionalWhere(buscadorGeneral.getOptionalWhere().replaceAll("'",":"));

        	}

        }

        

        //Se añade la where opcional

    	stringbuffer.append("&datosSelectBuscadorGeneral(optionalWhere)=").append(convertirLlavesJS(buscadorGeneral.getOptionalWhere()));

        

    	//Se introducen las columnas opcionales

    	stringbuffer.append("&datosSelectBuscadorGeneral(tableColumnsExtra)=").append(buscadorGeneral.getTableColumnsExtra());

    	//Se introducen las columnas opcionales idiomaticas

    	stringbuffer.append("&datosSelectBuscadorGeneral(tableColumnsIdiomaExtra)=").append(buscadorGeneral.getTableColumnsIdiomaExtra());

    	

    	//COMBO

    	stringbuffer.append("&datosSelectBuscadorGeneral(tableCombo)=").append(buscadorGeneral.getTableCombo());

    	stringbuffer.append("&datosSelectBuscadorGeneral(comboLabelColumn)=").append(buscadorGeneral.getComboLabelColumn());

    	stringbuffer.append("&datosSelectBuscadorGeneral(comboValueColumn)=").append(buscadorGeneral.getComboValueColumn());

        //Se comprueba si se ha introducido el control idiomático

        if(buscadorGeneral.getComboIdioma()){

        	stringbuffer.append("&datosSelectBuscadorGeneral(comboIdioma)=true");

        } else {

        	stringbuffer.append("&datosSelectBuscadorGeneral(comboIdioma)=false");

        }

        //Se comprueba si se ha introducido el campo NI de la tabla que hace refencia al combo

        stringbuffer.append("&datosSelectBuscadorGeneral(tableNiCombo)=").append(buscadorGeneral.getTableNiCombo());

        //Se comprueba si se ha introducido alguna condición adicional a la where del combo

        if(!Q02bFormatData.esVacio(buscadorGeneral.getComboOptionalWhere())){

        	if(buscadorGeneral.getComboOptionalWhere().indexOf("'")>0){

        		buscadorGeneral.setComboOptionalWhere(buscadorGeneral.getComboOptionalWhere().replaceAll("'",":"));

        	}

    		stringbuffer.append("&datosSelectBuscadorGeneral(comboOptionalWhere)=").append(convertirLlavesJS(buscadorGeneral.getComboOptionalWhere()));

        }else{

        	stringbuffer.append("&datosSelectBuscadorGeneral(comboOptionalWhere)=").append(convertirLlavesJS(buscadorGeneral.getComboOptionalWhere()));

        }

        //Se comprueba si se quiere llamar a una función Javascript de la pagina llamante al cerrar el popup del buscador  

        stringbuffer.append("&callBackFunctionJS=").append(buscadorGeneral.getCallBackFunctionJS());      

        //Se comprueba si se ha introducido el control idiomático

        if(buscadorGeneral.getSelectMultiple()){

        	stringbuffer.append("&selectMultipleBuscadorGeneral=true");

        } else {

        	stringbuffer.append("&selectMultipleBuscadorGeneral=false");

        }

        //Se resetea siempre esta variable para que no existan registros preseleccionados 

        stringbuffer.append("&selectMultipleMarcados=null");

        //Se manda el valor del select list del formulario

        stringbuffer.append("&returnSelectListBuscadorGeneral=").append(buscadorGeneral.getReturnSelectList());

        //FIN COMBO

        stringbuffer.append("','ventana','scrollbars=yes,").append(dimensionesBuscador).append("); \r\n");

        //Fin de la función cargaDatos()

        stringbuffer.append("} \r\n");

        stringbuffer.append("</script> \r\n");

        return stringbuffer.toString();

    }

    

    

    /**

	 * Metodo que devuelve el código para una optional where que quiere recuperar

	 * campos JS

	 * 

	 * @param String cadena

	 * 

	 * @return String

	 * 

	 */

    private static String convertirLlavesJS(String cadena){

    	//String con la nueva cadena

    	StringBuffer nuevaCadena = new StringBuffer();

    	//Se comprueba si tiene datos

    	if(!Q02bFormatData.esVacio(cadena)){

    		if(cadena.indexOf("{")>=0){

	    		//Se comprueba si tiene llaves

	    		while(cadena.indexOf("{")>=0){

	    			StringBuffer aux= new StringBuffer(cadena.substring(0,cadena.indexOf("{")));

	    			cadena			= cadena.substring(cadena.indexOf("{")+1,cadena.length());

	    			String campo    = cadena.substring(0,cadena.indexOf("}"));

	    			aux			    = aux.append("'+document.all[\""+campo+"\"].value+'");

	    			cadena			= cadena.substring(cadena.indexOf("}")+1,cadena.length());

	    			nuevaCadena     = nuevaCadena.append(aux);

	    		}

	    		//Si el último caracter se corresponde con " quiere decir que se ha

	    		//añadido una ' porque se quiere que el campo de búsqueda sea string

	    		if(cadena.indexOf(":")>=0){

	    			nuevaCadena.append(":");

	    		}

	    		//se controlara si exixte un caracter de cierre de parentesis para añadirlo a la

	    		//nueva cadena 

	    		if(cadena.indexOf(")")>=0){

	    			nuevaCadena.append(")");

	    		} 

	    		return nuevaCadena.toString();

    		}else{

    			return cadena;

    		}

    	} else {

    		return cadena;

    	}

    }

        

} //fin clase

     

    