
dojo.require("dijit.Menu");
dojo.require("dijit.TitlePane");
dojo.require("dijit.Tooltip");
dojo.require("dijit.Tree");
dojo.require("dijit.Tooltip");

dojo.require("dojo.data.ItemFileReadStore");

dojo.require("dojox.grid.Grid");
dojo.require("dojox.grid.compat._data.model");
dojo.require("dojox.image.SlideShow");

dojo.require("dojo.parser");

// various Form elemetns
dojo.require("dijit.form.Textarea");
dojo.require("dijit.form.FilteringSelect");
dojo.require("dijit.form.TextBox");


dojo.require("dijit.form.Button");
dojo.require("dijit.form.Form");
dojo.require("dijit.Dialog");
dojo.require("dijit.form.MultiSelect");
//dojo.require("dijit.util.parser");

dojo.require("dojo.io.script");


// layouts used in page
dojo.require("dijit.layout.AccordionContainer");
dojo.require("dijit.layout.ContentPane");
dojo.require("dijit.layout.TabContainer");
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.LinkPane");
dojo.require("dijit.Dialog");

// scan page for widgets and instantiate them
dojo.require("dojo.parser");	

// referencia al titulo de la ventana
var tituloPane ="";
var tipo = "";
var modelo = "";
var nso = "Xp";

function GuiIngresoComponentes(titulo) {
  console.log("--> Creando Gui Central.");
  html = "<br/><label class=\"textolabel\"> &nbsp; Codigo:&nbsp;&nbsp;&nbsp;</label>";
  html += "<input type=\"text\" name=\"user\" dojoType=\"dijit.form.TextBox\"</input>";
                                    
  var cp = new dijit.layout.ContentPane({ title: titulo,
      closable: true, id: "tabIngComp", dojoType: "dijit.layout.LinkPane", href: "stComponentes.jsp"});
  //cp.setContent(html);
  dijit.byId("tt1").addChild(cp);
  
      
}

function GuiIngresoDiagnostico(titulo) {
  console.log("--> Creando Gui Central.");
  html = "<br/><label class=\"textolabel\">&nbsp; Codigo:&nbsp;&nbsp;&nbsp;</label>";
  html += "<input type=\"text\" name=\"user\" dojoType=\"dijit.form.TextBox\" class=\"textoform\"</input>";
                                    
  var cp = new dijit.layout.ContentPane({ title: titulo,
      closable: true, id: "TabIngDiag"});
  cp.setContent(html);
  dijit.byId("tt1").addChild(cp);


}

// utilidades.js
function ObjetoAJAX(){
    var xhr;
    if(window.ActiveXObject){
         xhr=new ActiveXObject("Microsoft.XMLHttp");
    }
    else if((window.XMLHttpRequest) || (typeof XMLHttpRequest)!=undefined){
         xhr=new XMLHttpRequest();
    }
    else{
         xhr=null;
    }
    //declaraci�n de m�todos de la clase
    this.enviar=m_enviar;
    this.respuestaTexto=m_texto;
    this.respuestaXML=m_XML;
    this.obtenerEncabezados=m_encabezados;
    this.estado=m_estado;
    this.textoEstado=m_textoEstado;

    function m_enviar(url, method, funcionRetorno, objForm){
        var dataSend=null;
        if(method.toLowerCase()=="post"&&objForm!=null){
            dataSend=obtenerDatos(objForm);
        }
        else if(method.toLowerCase()=="get"&&objForm!=null){
            
            var dataUrl="";
            dataUrl=obtenerDatos(objForm);
            if(url.indexOf("?")==-1){
                url+="?"+dataUrl;
            }
            else{

                url+="&"+dataUrl;
            }
        }
        //realiza siempre la petici�n en modo
        //as�ncrono
        xhr.open(method,url,true);
        xhr.onreadystatechange=function(){
            if(xhr.readyState==4){
                eval(funcionRetorno+"("+")");
            }
        };
        if(objForm!=null){
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        }
        xhr.send(dataSend);

    }

    function m_texto(){
        return xhr.responseText;
    }
    function m_XML(){
        return xhr.responseXML;
    }
    function m_encabezados(){
        return xhr.getAllResponseHeaders();
    }
    function m_estado(){
        return xhr.status;
    }
    function m_textoEstado(){
        return xhr.statusText;
    }
    function obtenerDatos(objForm){
        var controles=objForm.elements;
        var datos=new Array();
        var cad="";
        for(var i=0;i<controles.length;i++){
             cad=encodeURIComponent(controles[i].name)+"=";
             //alert ( "control: " + controles[i].name);
             cad+=encodeURIComponent(controles[i].value);
             datos.push(cad);
        }
        //se forma la cadena con el metodo join() del array
        //para evitar multiples concatenaciones
        cad=datos.join("&");
        return cad;
     }
}


function create_button(){
  var params = {
      label: "Buscar...",
      onClick:cargaGrilla
    //label: "Buscar...",
    // Note here, when creating programmatically, this is a function, not a string
    //onClick: call_function
   };

  var button_dynamic = new dijit.form.Button(
    params,dojo.byId("boton_buscar")
  );
}
function create_button2(){
  var params = {
      label: "Buscar..."
   };

  var botonGrid = new dijit.form.Button(
    params
  );

 return botonGrid;
}

dojo.addOnLoad(create_button);

// funcion que carga el grid en el layout central
function cargaGrilla(tipo,modelo, nOP) {
    // a grid view is a group of columns.
    var view1 = {cells: [
      [
      {name: "#", width: "20px", field:"id"},
      {name: "Driver",  width:"200px",field:"nom"},
      {name: "Tama&ntilde;o",  width:"200px",field:"size"},
      {name: "Sistema Operativo", width:"200px", field:"so"},
      {name: "Download", width:"200px",  get:gridButton}
      //{name: "St", width:"200px",field: "st", styles: "text-align: center", editor: dojox.grid.editors.CheckBox}
      ]
       
    ]};

     console.debug("Tipo: " + tipo + " Modelo: " + modelo + " OP: " + nOP);

    //var so = dijit.byId("sis").attr("value", (dijit.byId("sis")).item);
    var so = dijit.byId("sis").attr("value");
    //alert(so);
    
    // capturando el valor del textbox
    /*var idOP = dojo.byId("nroOP");
    var vOP = idOP.value;*/

    //alert("valor parametro: " + ss);

    var layout = [ view1 ];

    if (tipo == "Notebook") {
        jsonStore = new dojo.data.ItemFileReadStore({url: "./Drv"+"?tipo=" + tipo + "&modelo=" + modelo, urlPreventCache:true, clearOnClose:true});
    } else if ( tipo == "Netbook") {
        jsonStore = new dojo.data.ItemFileReadStore({url: "./Drv"+"?tipo=" + tipo + "&modelo=" + modelo, urlPreventCache:true, clearOnClose:true});
    } else if ( tipo == "Desktop") {
        jsonStore = new dojo.data.ItemFileReadStore({url: "./Drv"+"?tipo=" + tipo + "&modelo=" + modelo + "&nOP=" + nOP, urlPreventCache:true, clearOnClose:true});
    }

    

    var gotNames= function(items, request){
        console.info("---------> Items: " + items.length );
        if ( items.length <= 0) {
            alert("Ninguna equivalencia.");
        }
    
     //for (var i = 0; i < items.length; i++){
     // var item = items[i];
     // console.log("Located name: " + jsonStore.getLabel(item));
     //}
    }
    var gotError = function(error, request) {
        alert("No se encontraron resultados segun los datos ingresados. Esto puede suceder porque"
                + " el Tipo y/o Modelo seleccionado aun no se encuentran disponibles sus controladores o porque"
                + " el nro. de Serie de su Desktop esta mal ingresado. Gracias");
        //dijit.byId('dialogError').show();
        console.info("gotError.error:" + error);
        console.info("gotError.request" + request);
    }

    var nGrid = dojo.byId("drvGrid");



    // ver si puedo crearlo en una primera instancia esconderlo y luego mostrarlo.
    // #### Fin combobox #####################################################

    // Pregunto si la grilla ya se encuentra creada, si es asi la destruyo.
    // nota: investigar, debe haber otra solucion por ej. eliminar contenido
    // de la grilla para luego actualizar con los nuevos parámetros
    var nGrilla = dojo.byId("grilli");
    if (nGrilla) {
        console.info("Grilla existe...");
        dijit.byId("grilli").destroy();
    }

    var nDiv = document.createElement("div");
    nGrid.parentNode.appendChild(nDiv);
    
    jsonStore.fetch({query: {so:'Microsoft XP'}, onComplete: gotNames, onError: gotError});
    var usersModel = new dojox.grid.data.DojoData(null,jsonStore, {rowsPerPage: 10, query: {so:'Microsoft XP'}});
    //var grid = new dojox.Grid({keepRows: 30, clientSort:true, model: usersModel, structure: layout}, nGrid);
    //var grid = new dojox.Grid({id: 'grilli',keepRows: 30, style:"height:170;",clientSort:true, model: usersModel, structure: layout, onRowClick: ValorRuta},nDiv);
    var grid = new dojox.Grid({id: 'grilli',keepRows: 30, style:"height:170;",clientSort:true, model: usersModel, structure: layout},nDiv);
    //dojo.byId("gridDrivers").appendChild(grid.domNode);


    //nGrid.appendChild(grid.domNode);
    /*grid.setModel(usersModel);
    grid.setStructure(layout);
    grid.render();
    grid.startup();*/

}
//dojo.addOnLoad(cargaGrilla);

function ValorRuta(e) {
    var hh2 = dijit.byId("grilli");
    val = e.rowIndex;
    var nPath = hh2.model.getRow(e.rowIndex).path;
   
    console.log("Archivo a procesar: " + nPath);
}


// funcion que agrega un boton con imagen en cada fila del grid
function gridButton(p){
    var downloadButton = "<div id='" + p + "' dojoType=\"dijit.form.Button\"><a href='./soporte/" + this.grid.model.getDatum( p, 7) + "'><img src=\"img/";
    downloadButton = downloadButton + "download.gif\" width=\"18\" height=\"18\"";
    downloadButton = downloadButton + "></a></div>";
    console.debug("Path: " + this.grid.model.getDatum( p, 7));
    return downloadButton;
}

// funcion cuadro de dialogo para indicar al usuario la ubicacion del nro. de serie del pc.
function nsDialogo(){
    
}

// Ventana seleccion del tipo
function MultiSel1(){

    var sel = dojo.byId('dynamic');
    var n = 0;
    var i = 0;
    var aTipo = [];

    aTipo[0] = "DeskTop";
    aTipo[1] = "NoteBook";
    aTipo[2] = "NetBook";

    for ( i; i< aTipo.length; i++) {
            var c = dojo.doc.createElement('option');
            c.innerHTML = aTipo[i];
            c.value = n++;
            sel.appendChild(c);
    }

    //dijit.byId("txtOP").innerHTML = "invalidMessage=\"<a href=\"#\" onclick=\"dijit.byId('dialog2')\">Verificar la Serie.</a>";

}
dojo.addOnLoad(MultiSel1);

// Ventana seleccion del producto
function MultiSel2(){

    var sel = dojo.byId('dynamic2');
    var n = 0;
    var i = 0;
    var aTipo = [];

    //aTipo[0] = "Seleccionar";
            aTipo[0] = "aaa";
            aTipo[1] = "bbb";
            //aTipo[2] = "ccc";
    console.debug("valor de aTipo: " + aTipo.length);
    
    for ( i; i< aTipo.length; i++) {
            console.debug("Valor de i1:" + i);
            var c = dojo.doc.createElement('option');
            c.innerHTML = aTipo[i];
            c.value = n++;
            sel.appendChild(c);
    }

}
//dojo.addOnLoad(MultiSel2);

function MultiSel3(){

    var sel = dojo.byId('dynamic3');
    var n = 0;
    var i = 0;
    var aTipo = [];

    aTipo[0] = "Seleccionar";


    for ( i; i< aTipo.length; i++) {
            var c = dojo.doc.createElement('option');
            c.innerHTML = aTipo[i];
            c.value = n++;
            sel.appendChild(c);
    }

}
//dojo.addOnLoad(MultiSel3);



function Evento1() {

    // capturo el index del multiselect
    ev1 = dijit.byId("dynamic").attr("value");
    opc = parseInt(ev1);

    switch (opc)
    {
        case 0:
            dojo.style(dijit.byId("dynamic2").domNode,"display","none");
            dojo.style(dijit.byId("txtOP").domNode,"display","");
            dojo.style(dijit.byId("boton2").domNode,"display","");


            hh = dijit.byId("win2");
            tipo = "Desktop";
            hh.setTitle("Ingresar el Nro. de Serie");
            

            if (!hh.open) {
                hh.toggle();
            }
            break;
        case 1:
            var sel = dojo.byId('dynamic2');
            dojo.style(dijit.byId("dynamic2").domNode,"display","");
            dojo.style(dijit.byId("txtOP").domNode,"display","none");
            dojo.style(dijit.byId("boton2").domNode,"display","none");



            hh = dijit.byId("win2");

            hh.setTitle("Selecionar el Modelo");
            tipo = "Notebook";
            

            if (!hh.open) {
                hh.toggle();
            }

            //ms2.domNode.removeAttribute('multiple');

            var n = 0;
            var i = 0;
            var aTipo2 = [];

            aTipo2[0] = "U41IL";
            aTipo2[1] = "U40SI";
            aTipo2[2] = "M30KI";
            aTipo2[3] = "L41II4";
            aTipo2[4] = "L41II8";
            aTipo2[5] = "X40II8";
            aTipo2[6] = "S42";
	    aTipo2[7] = "V40";
	    aTipo2[8] = "ZR6";


            // Primero remuevo los elementos que ya estan

            for ( i; i < aTipo2.length; i++) {
                console.debug("Valor de i2:" + i);
                dojo.byId("dynamic2").remove(0);
            }

            i = 0;
            n = 0;
            for ( i; i< aTipo2.length; i++) {
                var c = dojo.doc.createElement('option');
                c.innerHTML = aTipo2[i];
                c.value = n++;
                sel.appendChild(c);
            }

            break;
        case 2:
            sel = dojo.byId('dynamic2');
            dojo.style(dijit.byId("dynamic2").domNode,"display","");
            dojo.style(dijit.byId("txtOP").domNode,"display","none");
            dojo.style(dijit.byId("boton2").domNode,"display","none");


            hh  = dijit.byId("win2");
            elem= sel.length;
            hh.setTitle("Selecionar el Modelo");
            tipo = "Netbook";
            
            
            if (!hh.open) {
                hh.toggle();
            }

            //ms2.domNode.removeAttribute('multiple');

            n = 0;
            i = 0;
            aTipo2 = [];


            aTipo2[0] = "OX J10";
            aTipo2[1] = "PC 88002";
            aTipo2[2] = "PC 88005";
            aTipo2[3] = "JUMPC";
            aTipo2[4] = "JUMPC TE";


            //aTipo[2] = "ccc";

            // Primero remuevo los elementos que ya estan
            console.debug("Valor elementos dynamic2: " + sel.length);
            for ( i; i < elem; i++) {
                
                console.debug("Valor de i2:" + i);
                dojo.byId("dynamic2").remove(0);
            }

            i = 0;
            n = 0;
            for ( i; i< aTipo2.length; i++) {
                c = dojo.doc.createElement('option');
                c.innerHTML = aTipo2[i];
                c.value = n++;
                sel.appendChild(c);
            }
            break;
        default:
            alert("Ninguna seleccion");
            break;
    }
}

function Evento2() {
    ev1 = dijit.byId("dynamic2").attr("value");
   
    //alert(nso);
    
    opc = parseInt(ev1);
    hh  = dijit.byId("win3");


    // compruebo si el combobox esta creado, si no lo esta lo creo.
    var pSis = dojo.byId("sis");
    if (pSis) {
        console.info("Combo Existe !!");
        //dijit.byId("grilli").destroy();
    } else {

        // ########### filtering combobox ################.
        stor = new dojo.data.ItemFileReadStore({
            jsId: "soStore",
            url: "so.json"
        });

        var nCB = dijit.byId("cbSO");
        var cb1 = new dijit.form.ComboBox({
            value: 'Microsoft XP',
            store: stor,
            id: "sis",
            jsId : "sis",
            name: "sigla",
            searchAttr: "name"
            
        }, "cbSO");
    }
    //alert("Sistema: " + dijit.byId("sis").attr("value"));
    
    dojo.style(dijit.byId("bActualizar").domNode,"display","");
    // ############ fin filtering #####################


    simg = dijit.byId("gallery2");
    jsonStoreImg = new dojo.data.ItemFileReadStore({url: "img2.json"});

    ItemNameMap = {
        imageThumbAttr: "thumb",
        imageLargeAttr: "large"
    };

    if (!hh.open) {
        hh.toggle();
    }

    if ( tipo == "Desktop") {
        // capturando el valor del textbox
        var vOP = dojo.byId("txtOP").value;

        modelo = "Desktop"
        ItemRequest = {
            query: {
                grupo: modelo
            },
            count: 6
        };

        simg.setDataStore(jsonStoreImg, ItemRequest, ItemNameMap);
        cargaGrilla(tipo,modelo,vOP);
    }

    if ( tipo == "Notebook") {
        
        switch (opc)
        {
            case 0:
                modelo = "U41IL";
                hh.setTitle(modelo);
                ItemRequest = {
                    query: {
                        grupo: modelo
                    },
                    count: 6
                };

                simg.setDataStore(jsonStoreImg, ItemRequest, ItemNameMap);

                break;
            case 1:
                modelo = "U40SI";
                hh.setTitle(modelo);
                ItemRequest = {
                    query: {
                        grupo: modelo
                    },
                    count: 6
                };

                simg.setDataStore(jsonStoreImg, ItemRequest, ItemNameMap);
               
                break;
            case 2:
                modelo = "M30KI";
                hh.setTitle(modelo);
                // no tiene imagenes, se asocia la flor
                ItemRequest = {
                    query: {
                        grupo: "FLOR"
                    },
                    count: 6
                };

                simg.setDataStore(jsonStoreImg, ItemRequest, ItemNameMap);
                break;
            case 3:
                modelo = "L41";
                hh.setTitle(modelo);
                // dado que son las misma imagenes, se asocia al grupo L41
                ItemRequest = {
                    query: {
                        grupo: "L41"
                    },
                    count: 6
                };

                simg.setDataStore(jsonStoreImg, ItemRequest, ItemNameMap);
                break;
            case 4:
                modelo = "L41";
                hh.setTitle(modelo);
                        
                ItemRequest = {
                    query: {
                        grupo: "L41"
                    },
                    count: 6
                };

                simg.setDataStore(jsonStoreImg, ItemRequest, ItemNameMap);
                break;
            case 5:
                modelo = "X40";
                hh.setTitle(modelo);
                // no tiene imagenes, se asocia la flor
                ItemRequest = {
                    query: {
                        grupo: "FLOR"
                    },
                    count: 6
                };

                simg.setDataStore(jsonStoreImg, ItemRequest, ItemNameMap);
                break;
          case 6:
                modelo="S42";
                hh.setTitle(modelo);
                ItemRequest = {
                    query: {
                        grupo: "FLOR"
                    },
                    count: 6
                };
                break;
          case 7:
                modelo="V40";
                hh.setTitle(modelo);
                ItemRequest = {
                    query: {
                        grupo: "FLOR"
                    },
                    count: 6
                };
                break;
	  case 8:
		modelo="ZR6";
		hh.setTitle(modelo);
		ItemRequest = {
			query: { 
		  	grupo: "FLOR"
			},
			count: 6
		};
		break;

            default:
                alert("Debe seleccionar un item.");
                break;
        }
            nCB = dojo.byId("cbSO");
        //  ##### Segmento donde creo un combobox y listo los sistemas operativos
        //nGrid.innerHTML = "<input id='cbSO'/>";


        cargaGrilla(tipo,modelo,'');
    }

    if (tipo == "Netbook") {
        switch (opc)
        {
            case 0:
                modelo = "OXJ10";
                hh.setTitle(modelo);
                //
                ItemRequest = {
                    query: {
                        grupo: modelo
                    },
                    count: 6
                };

                simg.setDataStore(jsonStoreImg, ItemRequest, ItemNameMap);
                break;
            case 1:
                modelo = "PC88002";
                hh.setTitle(modelo);
                ItemRequest = {
                    query: {
                        grupo: modelo
                    },
                    count: 6
                };

                simg.setDataStore(jsonStoreImg, ItemRequest, ItemNameMap);
                break;
            case 2:
                modelo = "PC88005";
                hh.setTitle(modelo);

                ItemRequest = {
                    query: {
                        grupo: modelo
                    },
                    count: 6
                };

                simg.setDataStore(jsonStoreImg, ItemRequest, ItemNameMap);
                break;
            case 3:
                modelo = "JUMPC";
                hh.setTitle(modelo);

                ItemRequest = {
                    query: {
                        grupo: modelo
                    },
                    count: 6
                };

                simg.setDataStore(jsonStoreImg, ItemRequest, ItemNameMap);
                break;
            case 4:
                modelo = "TABLE";
                hh.setTitle(modelo);

                ItemRequest = {
                    query: {
                        grupo: modelo
                    },
                    count: 6
                };
		simg.setDataStore(jsonStoreImg, ItemRequest, ItemNameMap);
                break;

            default:
                alert("Debe seleccionar un item.");
                break;
        }
        cargaGrilla(tipo,modelo,'');
    }
}


function actualizaSO(mso) {
    //alert(mso);
    
    gg = dijit.byId("grilli");
    gg.model.query = {so:mso};
    gg.model.refresh();
}


function cerrarWin1() {

    w2 = dijit.byId("win2");
    w3 = dijit.byId("win3");
    //w4 = dijit.byId("win4");
    w2.setTitle("");
    w3.setTitle("");
    
    if (w2.open) {
        w2.toggle();
    }
    if (w3.open) {
        w3.toggle();
    }
    /*if (w4.open) {
        w4.toggle();
    }*/
    setTimeout('Evento1()',600);
    //Evento1();
    //w2.toggle();
}

function cerrarWin2() {
    w3 = dijit.byId("win3");
    //w4 = dijit.byId("win4");
    w3.setTitle("");
    if (w3.open) {
        w3.toggle();
    }
    setTimeout('Evento2()',600);
    /*if (w4.open) {
        w4.toggle();
    }*/
}

function cerrarWin3() {
    w4 = dijit.byId("win4");

    if (w4.open) {
        w4.toggle();
    }

}

function focoTxt() {
    dijit.byId("txtOP").attr("value","");
}
