diff --git a/UyTube_aplicacion/nbproject/project.properties b/UyTube_aplicacion/nbproject/project.properties
index b558c3cf0347d3b77fe6acb1c5d07d92db66bb55..05ee5a952343e9004a25d82eb02cf7afc0fde1c8 100644
--- a/UyTube_aplicacion/nbproject/project.properties
+++ b/UyTube_aplicacion/nbproject/project.properties
@@ -38,12 +38,14 @@ file.reference.jcalendar-1.4.jar-2=C:\\Users\\pc01\\Downloads\\jcalendar-1.4.jar
 file.reference.jcalendar-1.4.jar-1=C:\\Users\\Dofus\\Documents\\NetBeansProjects\\jcalendar-1.4.jar
 >>>>>>> pre_master
 file.reference.jcalendar-1.4.jar-3=D:\\Users\\Facu\\Downloads\\jcalendar-1.4.jar
+file.reference.jcalendar-1.4.jar-4=/home/administrador/tecnologo/4to_semestre/PA/Lab-1/jcalendar-1.4.jar
 includes=**
 jar.compress=false
 javac.classpath=\
     ${libs.absolutelayout.classpath}:\
     <<<<<<< HEAD:\
-    ${file.reference.jcalendar-1.4.jar-3}
+    ${file.reference.jcalendar-1.4.jar-3}:\
+    ${file.reference.jcalendar-1.4.jar-4}
     <<<<<<< HEAD:\
     ${file.reference.jcalendar-1.4.jar-1}
     ${file.reference.jcalendar-1.4.jar}:\
diff --git a/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.form b/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.form
index 55ad9c8e82f2ececc00ef95bba360839628c5bca..aa903fc56d3ba8b1a64f5c794886ed12423eb855 100644
--- a/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.form
+++ b/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.form
@@ -9,10 +9,6 @@
     <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
     <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
   </SyntheticProperties>
-  <Events>
-    <EventHandler event="windowActivated" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowActivated"/>
-    <EventHandler event="windowDeactivated" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowDeactivated"/>
-  </Events>
   <AuxValues>
     <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
     <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
@@ -93,7 +89,7 @@
                 </Property>
               </Properties>
               <Events>
-                <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="lstUsuariosMouseClicked"/>
+                <EventHandler event="valueChanged" listener="javax.swing.event.ListSelectionListener" parameters="javax.swing.event.ListSelectionEvent" handler="lstUsuariosValueChanged"/>
               </Events>
               <AuxValues>
                 <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
@@ -113,7 +109,7 @@
           </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="20" y="350" width="210" height="40"/>
+              <AbsoluteConstraints x="20" y="350" width="180" height="40"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -153,7 +149,7 @@
                 </Property>
               </Properties>
               <Events>
-                <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="lstListasRepMouseClicked"/>
+                <EventHandler event="valueChanged" listener="javax.swing.event.ListSelectionListener" parameters="javax.swing.event.ListSelectionEvent" handler="lstListasRepValueChanged"/>
               </Events>
               <AuxValues>
                 <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
@@ -196,7 +192,7 @@
                 </Property>
               </Properties>
               <Events>
-                <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="lstVideosMouseClicked"/>
+                <EventHandler event="valueChanged" listener="javax.swing.event.ListSelectionListener" parameters="javax.swing.event.ListSelectionEvent" handler="lstVideosValueChanged"/>
               </Events>
               <AuxValues>
                 <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
@@ -216,7 +212,7 @@
           </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="530" y="350" width="230" height="40"/>
+              <AbsoluteConstraints x="440" y="350" width="320" height="40"/>
             </Constraint>
           </Constraints>
         </Component>
diff --git a/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.java b/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.java
index 424d32bb0e9fbda67c1fa31765d99699969a39b5..1196c82799cf1636d1601a73105e0189c75f6949 100644
--- a/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.java
+++ b/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.java
@@ -23,8 +23,9 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
         this.setLocationRelativeTo(null);
         try {
             sys = Fabrica.getInstancia().getIAdmin();
+            cargarListaUsuarios();// Carga los usuarios al abrir el formulario
         } catch (Exception e) {
-            JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE);
+            JOptionPane.showMessageDialog(null, "Ha ocurrido un error\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
         }        
     }  
     
@@ -40,12 +41,11 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
            if(!sys.listarUsuarios().isEmpty()){
             for(DtUsuario elem: sys.listarUsuarios()){
                 modelo.addElement(elem.getNickname());
-                System.out.println("Lista Usuarios, nombre: "+elem.getNickname());
             }
             lstUsuarios.setModel(modelo);                 
         }  
         } catch (Exception e) {
-            JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE);
+            JOptionPane.showMessageDialog(null, "Ha ocurrido un error\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
         }
         
     }
@@ -59,26 +59,22 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
                 indexListRes.add(elem.getId());//guarda todos los id en la misma posicion que el modelo
             }            
             lstListasRep.setModel(modelo);
-            limpiarLstVideos();
         }
+        limpiarLstVideos();
     }
     
     private void cargarListaVideos(){
         indexVideos.clear();
         DefaultListModel modelo = new DefaultListModel();
         try {
-            if(!sys.listarVideosDeListaDeReproduccion().isEmpty()){ //Obtiene los videos de la lista de reproduccion seleccionada
             for (DtVideo elem : sys.listarVideosDeListaDeReproduccion()) {
                 modelo.addElement(elem.getNombre());
                 indexVideos.add(elem.getId());//guarda todos los id en la misma posicion que el modelo
-                System.out.println("Lista Videos, nombre: "+elem.getNombre()+" id: "+elem.getId());
-            }            
-            lstVideos.setModel(modelo);                 
-        }
+            }
+            lstVideos.setModel(modelo);
         } catch (Exception e) {
-            JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE);
+            JOptionPane.showMessageDialog(null, "Ha ocurrido un error\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
         }
-        
     }
 
     /**
@@ -105,14 +101,6 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
 
         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
         setTitle("Quitar video de lista de reproduccion");
-        addWindowListener(new java.awt.event.WindowAdapter() {
-            public void windowActivated(java.awt.event.WindowEvent evt) {
-                formWindowActivated(evt);
-            }
-            public void windowDeactivated(java.awt.event.WindowEvent evt) {
-                formWindowDeactivated(evt);
-            }
-        });
 
         jPanel22.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
 
@@ -121,9 +109,9 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
         jPanel22.add(jLabel118, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 10, -1, -1));
 
         lstUsuarios.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
-        lstUsuarios.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                lstUsuariosMouseClicked(evt);
+        lstUsuarios.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
+                lstUsuariosValueChanged(evt);
             }
         });
         jScrollPane43.setViewportView(lstUsuarios);
@@ -137,7 +125,7 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
                 btnCancelarActionPerformed(evt);
             }
         });
-        jPanel22.add(btnCancelar, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 350, 210, 40));
+        jPanel22.add(btnCancelar, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 350, 180, 40));
 
         jLabel119.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
         jLabel119.setText("Videos:");
@@ -145,9 +133,9 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
         jPanel22.add(jLabel119, new org.netbeans.lib.awtextra.AbsoluteConstraints(440, 10, -1, -1));
 
         lstListasRep.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
-        lstListasRep.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                lstListasRepMouseClicked(evt);
+        lstListasRep.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
+                lstListasRepValueChanged(evt);
             }
         });
         jScrollPane44.setViewportView(lstListasRep);
@@ -159,9 +147,9 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
         jPanel22.add(jLabel120, new org.netbeans.lib.awtextra.AbsoluteConstraints(220, 10, -1, -1));
 
         lstVideos.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
-        lstVideos.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                lstVideosMouseClicked(evt);
+        lstVideos.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
+                lstVideosValueChanged(evt);
             }
         });
         jScrollPane45.setViewportView(lstVideos);
@@ -175,7 +163,7 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
                 btnQuitarActionPerformed(evt);
             }
         });
-        jPanel22.add(btnQuitar, new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 350, 230, 40));
+        jPanel22.add(btnQuitar, new org.netbeans.lib.awtextra.AbsoluteConstraints(440, 350, 320, 40));
 
         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
         getContentPane().setLayout(layout);
@@ -202,61 +190,79 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
     }// </editor-fold>//GEN-END:initComponents
 
     private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
-        //listaRep->quitarVideo->cancelar       
-        this.setVisible(false);
+        //listaRep->quitarVideo->cancelar
+        try {
+            sys.liberarMemoriaUsuario();
+            sys.liberarMemoriaListaDeReproduccion();
+        } catch (Exception e) {
+            JOptionPane.showMessageDialog(null, "Ha ocurrido un error\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
+        }finally{
+            dispose();
+        }
     }//GEN-LAST:event_btnCancelarActionPerformed
 
     private void btnQuitarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnQuitarActionPerformed
-        try {            
-            int opcion=JOptionPane.showConfirmDialog(null, 
-                        "¿Realmente desea quitar de la lista el video: \""+nombreVideo+"\"?"                            
-                        , "Confirmar quitar Video", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
-            if(opcion == 0){
-                System.out.println("estoy en el if con id: " + idVideo);
+        if (lstUsuarios.getSelectedIndex() < 0) {
+            JOptionPane.showMessageDialog(null, "Debe seleccionar un usuario", "Error", JOptionPane.WARNING_MESSAGE);
+            return;
+        }
+        if (lstListasRep.getSelectedIndex() < 0) {
+            JOptionPane.showMessageDialog(null, "Debe seleccionar una lista de reproducción", "Error", JOptionPane.WARNING_MESSAGE);
+            return;
+        }
+        if (lstVideos.getSelectedIndex() < 0) {
+            JOptionPane.showMessageDialog(null, "Debe seleccionar un video", "Error", JOptionPane.WARNING_MESSAGE);
+            return;
+        }
+
+        try {
+            int opcion = JOptionPane.showConfirmDialog(null,
+                    "¿Realmente desea quitar de la lista el video: \"" + nombreVideo + "\"?",
+                    "Confirmar quitar Video",
+                    JOptionPane.OK_CANCEL_OPTION,
+                    JOptionPane.QUESTION_MESSAGE);
+            
+            if (opcion == 0) {
                 sys.quitarVideoDeListaDeReproduccion(idVideo);//Elimina el video de la lista de reproduccion
-            }                
+                cargarListaVideos();
+            }
         } catch (Exception e) {
-            JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE);
-        } 
+            JOptionPane.showMessageDialog(null, "Ha ocurrido un error\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
+        }
     }//GEN-LAST:event_btnQuitarActionPerformed
 
-    private void formWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowActivated
-        cargarListaUsuarios();// Carga los usuarios al abrir el formulario
-    }//GEN-LAST:event_formWindowActivated
-
-    private void lstUsuariosMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lstUsuariosMouseClicked
-      //  limpiarListaRerp();//Borra la lista de reproduccion para mostrar las listas de reproduccion del usuario seleccionado         
+    private void lstUsuariosValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_lstUsuariosValueChanged
+        
+        if (evt.getValueIsAdjusting()) return;
+        if (lstUsuarios.getSelectedIndex()<0) return;
         usrSeleccionado = lstUsuarios.getSelectedValue(); // El sistema selecciona al usuario actual con el nickname seleccionado de la lista 
         try {
             sys.seleccionarUsuario(usrSeleccionado); //Selecciona el usuarioSeleccionado
-            ArrayList<DtListaDeReproduccion> dtListRep = new ArrayList<>();
-            dtListRep = sys.listarListasDeReproduccionDeUsuario(usrSeleccionado);
+            ArrayList<DtListaDeReproduccion> dtListRep = sys.listarListasDeReproduccionDeUsuario(usrSeleccionado);
             cargarListaReproducion(dtListRep);
         } catch (Exception e) {
-            JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE);
+            JOptionPane.showMessageDialog(null, "Ha ocurrido un error\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
         }
-        
-    }//GEN-LAST:event_lstUsuariosMouseClicked
+    }//GEN-LAST:event_lstUsuariosValueChanged
 
-    private void lstListasRepMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lstListasRepMouseClicked
+    private void lstListasRepValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_lstListasRepValueChanged
+        if (evt.getValueIsAdjusting()) return;
+        if (lstListasRep.getSelectedIndex()<0) return;
         try {
             idListaRep=indexListRes.get(lstListasRep.getSelectedIndex());
             DtListaDeReproduccion dt = sys.seleccionarListaDeReproduccion(idListaRep);//Selecciona la lista de reproduccion        
             cargarListaVideos();                //Carga los videos de la lista seleccionada 
         } catch (Exception e) {
-            JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE);
+            JOptionPane.showMessageDialog(null, "Ha ocurrido un error\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
         }
-             
-    }//GEN-LAST:event_lstListasRepMouseClicked
+    }//GEN-LAST:event_lstListasRepValueChanged
 
-    private void lstVideosMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lstVideosMouseClicked
+    private void lstVideosValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_lstVideosValueChanged
+        if (evt.getValueIsAdjusting()) return;
+        if (lstVideos.getSelectedIndex()<0) return;
         idVideo = indexVideos.get(lstVideos.getSelectedIndex());
         nombreVideo = lstVideos.getSelectedValue();
-    }//GEN-LAST:event_lstVideosMouseClicked
-
-    private void formWindowDeactivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowDeactivated
-        
-    }//GEN-LAST:event_formWindowDeactivated
+    }//GEN-LAST:event_lstVideosValueChanged
 
     // Variables declaration - do not modify//GEN-BEGIN:variables
     private javax.swing.JButton btnCancelar;
diff --git a/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.form b/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.form
index 9a5e895f3a93d4b93ec1e27540fcbfb98624669c..465b68df0dba3a423713fd134e1e3c21e1019587 100644
--- a/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.form
+++ b/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.form
@@ -15,6 +15,7 @@
   </SyntheticProperties>
   <Events>
     <EventHandler event="windowClosed" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosed"/>
+    <EventHandler event="windowActivated" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowActivated"/>
   </Events>
   <AuxValues>
     <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
@@ -107,13 +108,6 @@
             </Constraint>
           </Constraints>
         </Component>
-        <Component class="com.toedter.calendar.JDateChooser" name="jDateChooser1">
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="270" y="230" width="100" height="-1"/>
-            </Constraint>
-          </Constraints>
-        </Component>
         <Component class="javax.swing.JButton" name="btSeleccionar">
           <Properties>
             <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
@@ -258,7 +252,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="20" y="230" width="-1" height="-1"/>
+              <AbsoluteConstraints x="20" y="220" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -435,7 +429,14 @@
         <Component class="javax.swing.JLabel" name="lbMsjFecha">
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="20" y="250" width="350" height="-1"/>
+              <AbsoluteConstraints x="20" y="240" width="350" height="15"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="com.toedter.calendar.JDateChooser" name="jDateChooser1">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="270" y="220" width="100" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
diff --git a/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.java b/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.java
index d714b78a0efe18fd5989194a37bfba798083427d..ee280c6529c95b570250a5f735f6a9afa58e83bc 100644
--- a/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.java
+++ b/UyTube_aplicacion/src/Presentacion/Usuario/frmAltaUsuario.java
@@ -10,6 +10,9 @@ import com.sun.glass.events.KeyEvent;
 import java.awt.Color;
 import java.awt.Image;
 import java.io.File;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
 import javax.swing.BorderFactory;
 import javax.swing.ImageIcon;
 import javax.swing.JFileChooser;
@@ -30,7 +33,8 @@ public class frmAltaUsuario extends javax.swing.JDialog {
     Pattern patronEmail = Pattern.compile("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
             + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
     
-    Pattern patronNombres= Pattern.compile("^([A-Za-zÑñÁáÉéÍíÓóÚú]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú]+)$");
+    Pattern patronNombres= Pattern.compile("^([A-Za-zÑñÁáÉéÍíÓóÚú]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú]+)\\s*"
+            + "([A-Za-zÑñÁáÉéÍíÓóÚú]+)$");
     IAdmin sys;       
     Border bordeDefault;
     Color colorOK = new ColorUIResource(40,167,69);
@@ -68,8 +72,7 @@ public class frmAltaUsuario extends javax.swing.JDialog {
         if (mather.find() == true) {
             return true;
         } 
-        return false;
-        
+        return false;        
     }
     
     private boolean validarTxt(JTextField txt, int largo,JLabel lb,String nombreCampo){
@@ -160,7 +163,6 @@ public class frmAltaUsuario extends javax.swing.JDialog {
         txtNombre = new javax.swing.JTextField();
         txtApellido = new javax.swing.JTextField();
         txtEmail = new javax.swing.JTextField();
-        jDateChooser1 = new com.toedter.calendar.JDateChooser();
         btSeleccionar = new javax.swing.JButton();
         txtNombreCanal = new javax.swing.JTextField();
         jScrollPane1 = new javax.swing.JScrollPane();
@@ -190,6 +192,7 @@ public class frmAltaUsuario extends javax.swing.JDialog {
         lbMsjApellido = new javax.swing.JLabel();
         lbMsjEmail = new javax.swing.JLabel();
         lbMsjFecha = new javax.swing.JLabel();
+        jDateChooser1 = new com.toedter.calendar.JDateChooser();
 
         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
         setTitle("Alta usuario");
@@ -197,6 +200,9 @@ public class frmAltaUsuario extends javax.swing.JDialog {
             public void windowClosed(java.awt.event.WindowEvent evt) {
                 formWindowClosed(evt);
             }
+            public void windowActivated(java.awt.event.WindowEvent evt) {
+                formWindowActivated(evt);
+            }
         });
 
         jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
@@ -254,7 +260,6 @@ public class frmAltaUsuario extends javax.swing.JDialog {
             }
         });
         jPanel2.add(txtEmail, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 170, 300, -1));
-        jPanel2.add(jDateChooser1, new org.netbeans.lib.awtextra.AbsoluteConstraints(270, 230, 100, -1));
 
         btSeleccionar.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
         btSeleccionar.setText("Selecionar");
@@ -316,7 +321,7 @@ public class frmAltaUsuario extends javax.swing.JDialog {
         jPanel2.add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, -1, -1));
 
         jLabel9.setText("Seleccione la fecha de nacimiento");
-        jPanel2.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 230, -1, -1));
+        jPanel2.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 220, -1, -1));
 
         jLabel11.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
         jLabel11.setText("Canal");
@@ -365,7 +370,8 @@ public class frmAltaUsuario extends javax.swing.JDialog {
         jPanel2.add(lbMsjNombre, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 110, 270, -1));
         jPanel2.add(lbMsjApellido, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 150, 270, -1));
         jPanel2.add(lbMsjEmail, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 190, 300, -1));
-        jPanel2.add(lbMsjFecha, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 250, 350, -1));
+        jPanel2.add(lbMsjFecha, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 240, 350, 15));
+        jPanel2.add(jDateChooser1, new org.netbeans.lib.awtextra.AbsoluteConstraints(270, 220, 100, -1));
 
         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
         getContentPane().setLayout(layout);
@@ -445,12 +451,12 @@ public class frmAltaUsuario extends javax.swing.JDialog {
             nombreCanal = nickname;
             txtNombreCanal.setText(nickname);
         }
-        btnCargar.setEnabled(true);
+        
         try {    
             DtUsuario dtUsuario = new DtUsuario(nickname, nickname, nombre, apellido, email, fecha, imagen, 0);
             DtCanal dtCanal = new DtCanal(Canal.getNuevoId(), nombre, descripcion, privacidad);
             sys.altaUsuarioCanal(dtUsuario, dtCanal);
-            JOptionPane.showMessageDialog(null, "Se ha creado el usuario "+nickname, "Error:", JOptionPane.INFORMATION_MESSAGE);
+            JOptionPane.showMessageDialog(null, "Se ha creado el usuario "+nickname, "Alta de usuario", JOptionPane.INFORMATION_MESSAGE);
             limpiarCampos();
         } catch (Exception e) {
             JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE);
@@ -550,6 +556,13 @@ public class frmAltaUsuario extends javax.swing.JDialog {
         }
     }//GEN-LAST:event_txtNiknameFocusLost
 
+    private void formWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowActivated
+        // Fecha actual del sistema
+        Calendar c = new GregorianCalendar();//Objeto de tipo calendario con la fecha actual
+        java.util.Date fechaActual = new Date(c.get(Calendar.YEAR)-1900,c.get(Calendar.MONTH),c.get(Calendar.DATE));//Obtiene la fecha actual del calendario     
+        jDateChooser1.setDate(fechaActual);//Setea el JDateChooser con la fecha actual
+    }//GEN-LAST:event_formWindowActivated
+
     private void cargarImagen(javax.swing.JLabel jLabelx) {
         JFileChooser jf = new JFileChooser();
         jf.showOpenDialog(this);
diff --git a/UyTube_aplicacion/src/Presentacion/Usuario/frmModificarUsuario.form b/UyTube_aplicacion/src/Presentacion/Usuario/frmModificarUsuario.form
index ed433b8eceb5df6ea53aec63a6e57cf6bfa34af1..f68238dffcdbf9811ffd8597436012d334503a33 100644
--- a/UyTube_aplicacion/src/Presentacion/Usuario/frmModificarUsuario.form
+++ b/UyTube_aplicacion/src/Presentacion/Usuario/frmModificarUsuario.form
@@ -179,7 +179,7 @@
             <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
               <Font name="Tahoma" size="14" style="1"/>
             </Property>
-            <Property name="text" type="java.lang.String" value="Seleccionar"/>
+            <Property name="text" type="java.lang.String" value="Seleccionar imagen"/>
             <Property name="toolTipText" type="java.lang.String" value=""/>
             <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
               <Color id="Cursor Por defecto"/>
@@ -190,7 +190,7 @@
           </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="480" y="450" width="120" height="60"/>
+              <AbsoluteConstraints x="450" y="370" width="170" height="50"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -267,9 +267,9 @@
         <Component class="javax.swing.JButton" name="btnListaReprodiccion">
           <Properties>
             <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-              <Font name="Tahoma" size="24" style="0"/>
+              <Font name="Tahoma" size="14" style="0"/>
             </Property>
-            <Property name="text" type="java.lang.String" value="Lista de reproduccion"/>
+            <Property name="text" type="java.lang.String" value="Modificar lista de reproducci&#xf3;n"/>
           </Properties>
           <Events>
             <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnListaReprodiccionActionPerformed"/>
@@ -283,9 +283,9 @@
         <Component class="javax.swing.JButton" name="btnVideo">
           <Properties>
             <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-              <Font name="Tahoma" size="24" style="0"/>
+              <Font name="Tahoma" size="14" style="0"/>
             </Property>
-            <Property name="text" type="java.lang.String" value="Video"/>
+            <Property name="text" type="java.lang.String" value="Modificar video"/>
           </Properties>
           <Events>
             <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnVideoActionPerformed"/>
@@ -322,7 +322,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="330" y="430" width="140" height="110"/>
+              <AbsoluteConstraints x="330" y="370" width="110" height="110"/>
             </Constraint>
           </Constraints>
 
@@ -333,7 +333,7 @@
             <Component class="javax.swing.JLabel" name="lbImg">
               <Constraints>
                 <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-                  <AbsoluteConstraints x="0" y="0" width="140" height="110"/>
+                  <AbsoluteConstraints x="5" y="5" width="100" height="100"/>
                 </Constraint>
               </Constraints>
             </Component>
@@ -346,43 +346,6 @@
             </Constraint>
           </Constraints>
         </Component>
-        <Component class="javax.swing.JLabel" name="lbOpcional">
-          <Properties>
-            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-              <Font name="Tahoma" size="18" style="0"/>
-            </Property>
-            <Property name="text" type="java.lang.String" value="Opcional *"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="480" y="520" width="-1" height="-1"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="lbImagen">
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="340" y="420" width="140" height="110"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JTextField" name="txtContraNueva1">
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="470" y="340" width="160" height="-1"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JTextField" name="txtContraNueva">
-          <Events>
-            <EventHandler event="keyTyped" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="txtContraNuevaKeyTyped"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="470" y="310" width="160" height="-1"/>
-            </Constraint>
-          </Constraints>
-        </Component>
         <Component class="javax.swing.JTextField" name="txtApellido">
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
@@ -406,7 +369,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="330" y="340" width="-1" height="-1"/>
+              <AbsoluteConstraints x="330" y="300" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -416,7 +379,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="330" y="310" width="-1" height="-1"/>
+              <AbsoluteConstraints x="330" y="270" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -426,7 +389,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="330" y="200" width="-1" height="-1"/>
+              <AbsoluteConstraints x="330" y="180" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -439,7 +402,7 @@
           </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="330" y="260" width="-1" height="-1"/>
+              <AbsoluteConstraints x="330" y="230" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -471,18 +434,58 @@
         </Component>
         <Component class="javax.swing.JLabel" name="lbImagen1">
           <Properties>
-            <Property name="text" type="java.lang.String" value="Imagen"/>
+            <Property name="text" type="java.lang.String" value="Imagen (opcional)"/>
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="360" y="400" width="-1" height="20"/>
+              <AbsoluteConstraints x="330" y="340" width="-1" height="20"/>
             </Constraint>
           </Constraints>
         </Component>
         <Component class="com.toedter.calendar.JDateChooser" name="dcFecha">
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="450" y="200" width="170" height="-1"/>
+              <AbsoluteConstraints x="450" y="180" width="170" height="20"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JButton" name="btnQuitarImagen">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Quitar imagen"/>
+            <Property name="toolTipText" type="java.lang.String" value=""/>
+            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+              <Color id="Cursor Por defecto"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnQuitarImagenActionPerformed"/>
+          </Events>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="450" y="430" width="170" height="50"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JPasswordField" name="txtContraNueva2">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="jPasswordField1"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="450" y="300" width="170" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JPasswordField" name="txtContraNueva1">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="jPasswordField1"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="450" y="270" width="170" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
diff --git a/UyTube_aplicacion/src/Presentacion/Usuario/frmModificarUsuario.java b/UyTube_aplicacion/src/Presentacion/Usuario/frmModificarUsuario.java
index 8f12c4802e21763457a2ffd1fd06f21d2c6d46f8..ddc9767502bf5431d2cd953013c77fdbea10e4de 100644
--- a/UyTube_aplicacion/src/Presentacion/Usuario/frmModificarUsuario.java
+++ b/UyTube_aplicacion/src/Presentacion/Usuario/frmModificarUsuario.java
@@ -7,14 +7,11 @@ import Logica.Fabrica;
 import Logica.Interfaces.IAdmin;
 import Presentacion.ListaDeReproduccion.frmModificarListaDeReproduccion;
 import Presentacion.Video.frmModificarVideo;
-import Presentacion.Video.frmValorarVideo;
-import Presentacion.frmPrincipal;
-import com.sun.org.apache.bcel.internal.generic.Select;
 import java.awt.Image;
 import java.io.File;
-import java.sql.Date;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import javax.swing.DefaultListModel;
 import javax.swing.ImageIcon;
 import javax.swing.JFileChooser;
@@ -22,22 +19,23 @@ import javax.swing.JOptionPane;
 import javax.swing.filechooser.FileNameExtensionFilter;
 
 public class frmModificarUsuario extends javax.swing.JDialog {
-    
+
     IAdmin sys;
     DtUsuario user;
     String ruta;
+
     public frmModificarUsuario(java.awt.Frame parent, boolean modal) {
         super(parent, modal);
         initComponents();
         this.setLocationRelativeTo(null);
-        txtContraNueva.setEnabled(false); // TODO add your handling code here:
         txtContraNueva1.setEnabled(false); // TODO add your handling code here:
+        txtContraNueva2.setEnabled(false); // TODO add your handling code here:
         lbCN.setEnabled(false);
         lbRCN.setEnabled(false);
         btnVideo.setEnabled(false);
         btnListaReprodiccion.setEnabled(false);
         desactivarCampos();
-         try {
+        try {
             // obtiene la instancia de sistema
             sys = Fabrica.getInstancia().getIAdmin();
 
@@ -46,7 +44,7 @@ public class frmModificarUsuario extends javax.swing.JDialog {
         } catch (Exception e) {
             JOptionPane.showMessageDialog(null, "Ha ocurrido un error", "Error", JOptionPane.ERROR_MESSAGE);
         }
-        
+
     }
 
     @SuppressWarnings("unchecked")
@@ -79,10 +77,6 @@ public class frmModificarUsuario extends javax.swing.JDialog {
         jpImagen = new javax.swing.JPanel();
         lbImg = new javax.swing.JLabel();
         jSeparator6 = new javax.swing.JSeparator();
-        lbOpcional = new javax.swing.JLabel();
-        lbImagen = new javax.swing.JLabel();
-        txtContraNueva1 = new javax.swing.JTextField();
-        txtContraNueva = new javax.swing.JTextField();
         txtApellido = new javax.swing.JTextField();
         lbApellido = new javax.swing.JLabel();
         lbRCN = new javax.swing.JLabel();
@@ -93,6 +87,9 @@ public class frmModificarUsuario extends javax.swing.JDialog {
         rbPrivado = new javax.swing.JRadioButton();
         lbImagen1 = new javax.swing.JLabel();
         dcFecha = new com.toedter.calendar.JDateChooser();
+        btnQuitarImagen = new javax.swing.JButton();
+        txtContraNueva2 = new javax.swing.JPasswordField();
+        txtContraNueva1 = new javax.swing.JPasswordField();
 
         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
         setTitle("Modificar usuario");
@@ -139,7 +136,7 @@ public class frmModificarUsuario extends javax.swing.JDialog {
         lbMes.add(btnModificar, new org.netbeans.lib.awtextra.AbsoluteConstraints(670, 490, 270, 50));
 
         btnSeleccionar.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
-        btnSeleccionar.setText("Seleccionar");
+        btnSeleccionar.setText("Seleccionar imagen");
         btnSeleccionar.setToolTipText("");
         btnSeleccionar.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
         btnSeleccionar.addActionListener(new java.awt.event.ActionListener() {
@@ -147,7 +144,7 @@ public class frmModificarUsuario extends javax.swing.JDialog {
                 btnSeleccionarActionPerformed(evt);
             }
         });
-        lbMes.add(btnSeleccionar, new org.netbeans.lib.awtextra.AbsoluteConstraints(480, 450, 120, 60));
+        lbMes.add(btnSeleccionar, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 370, 170, 50));
 
         jSeparator10.setOrientation(javax.swing.SwingConstants.VERTICAL);
         lbMes.add(jSeparator10, new org.netbeans.lib.awtextra.AbsoluteConstraints(640, 0, 10, 560));
@@ -169,8 +166,8 @@ public class frmModificarUsuario extends javax.swing.JDialog {
 
         lbMes.add(jScrollPane51, new org.netbeans.lib.awtextra.AbsoluteConstraints(740, 100, 200, 160));
 
-        btnListaReprodiccion.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
-        btnListaReprodiccion.setText("Lista de reproduccion");
+        btnListaReprodiccion.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
+        btnListaReprodiccion.setText("Modificar lista de reproducción");
         btnListaReprodiccion.addActionListener(new java.awt.event.ActionListener() {
             public void actionPerformed(java.awt.event.ActionEvent evt) {
                 btnListaReprodiccionActionPerformed(evt);
@@ -178,8 +175,8 @@ public class frmModificarUsuario extends javax.swing.JDialog {
         });
         lbMes.add(btnListaReprodiccion, new org.netbeans.lib.awtextra.AbsoluteConstraints(670, 340, 270, 50));
 
-        btnVideo.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
-        btnVideo.setText("Video");
+        btnVideo.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
+        btnVideo.setText("Modificar video");
         btnVideo.addActionListener(new java.awt.event.ActionListener() {
             public void actionPerformed(java.awt.event.ActionEvent evt) {
                 btnVideoActionPerformed(evt);
@@ -198,36 +195,23 @@ public class frmModificarUsuario extends javax.swing.JDialog {
 
         jpImagen.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
         jpImagen.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
-        jpImagen.add(lbImg, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 140, 110));
+        jpImagen.add(lbImg, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 5, 100, 100));
 
-        lbMes.add(jpImagen, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 430, 140, 110));
+        lbMes.add(jpImagen, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 370, 110, 110));
         lbMes.add(jSeparator6, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 40, 650, 20));
-
-        lbOpcional.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
-        lbOpcional.setText("Opcional *");
-        lbMes.add(lbOpcional, new org.netbeans.lib.awtextra.AbsoluteConstraints(480, 520, -1, -1));
-        lbMes.add(lbImagen, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 420, 140, 110));
-        lbMes.add(txtContraNueva1, new org.netbeans.lib.awtextra.AbsoluteConstraints(470, 340, 160, -1));
-
-        txtContraNueva.addKeyListener(new java.awt.event.KeyAdapter() {
-            public void keyTyped(java.awt.event.KeyEvent evt) {
-                txtContraNuevaKeyTyped(evt);
-            }
-        });
-        lbMes.add(txtContraNueva, new org.netbeans.lib.awtextra.AbsoluteConstraints(470, 310, 160, -1));
         lbMes.add(txtApellido, new org.netbeans.lib.awtextra.AbsoluteConstraints(390, 100, 230, -1));
 
         lbApellido.setText("Apellido");
         lbMes.add(lbApellido, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 100, -1, -1));
 
         lbRCN.setText("Repita contraseña");
-        lbMes.add(lbRCN, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 340, -1, -1));
+        lbMes.add(lbRCN, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 300, -1, -1));
 
         lbCN.setText("Contraseña nueva");
-        lbMes.add(lbCN, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 310, -1, -1));
+        lbMes.add(lbCN, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 270, -1, -1));
 
         lbFecha.setText("Fecha de Nac.");
-        lbMes.add(lbFecha, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 200, -1, -1));
+        lbMes.add(lbFecha, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 180, -1, -1));
 
         chkCambiarContra.setText("Cambiar contraseña");
         chkCambiarContra.addActionListener(new java.awt.event.ActionListener() {
@@ -235,7 +219,7 @@ public class frmModificarUsuario extends javax.swing.JDialog {
                 chkCambiarContraActionPerformed(evt);
             }
         });
-        lbMes.add(chkCambiarContra, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 260, -1, -1));
+        lbMes.add(chkCambiarContra, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 230, -1, -1));
 
         grpPrivacidad.add(rbPublico);
         rbPublico.setText("Publico");
@@ -245,9 +229,26 @@ public class frmModificarUsuario extends javax.swing.JDialog {
         rbPrivado.setText("Privado");
         lbMes.add(rbPrivado, new org.netbeans.lib.awtextra.AbsoluteConstraints(840, 270, -1, -1));
 
-        lbImagen1.setText("Imagen");
-        lbMes.add(lbImagen1, new org.netbeans.lib.awtextra.AbsoluteConstraints(360, 400, -1, 20));
-        lbMes.add(dcFecha, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 200, 170, -1));
+        lbImagen1.setText("Imagen (opcional)");
+        lbMes.add(lbImagen1, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 340, -1, 20));
+        lbMes.add(dcFecha, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 180, 170, 20));
+
+        btnQuitarImagen.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        btnQuitarImagen.setText("Quitar imagen");
+        btnQuitarImagen.setToolTipText("");
+        btnQuitarImagen.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+        btnQuitarImagen.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                btnQuitarImagenActionPerformed(evt);
+            }
+        });
+        lbMes.add(btnQuitarImagen, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 430, 170, 50));
+
+        txtContraNueva2.setText("jPasswordField1");
+        lbMes.add(txtContraNueva2, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 300, 170, -1));
+
+        txtContraNueva1.setText("jPasswordField1");
+        lbMes.add(txtContraNueva1, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 270, 170, -1));
 
         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
         getContentPane().setLayout(layout);
@@ -272,18 +273,19 @@ public class frmModificarUsuario extends javax.swing.JDialog {
 
         pack();
     }// </editor-fold>//GEN-END:initComponents
- private void listarUsuarios(ArrayList<DtUsuario> ListaUsuarios){
+ private void listarUsuarios(ArrayList<DtUsuario> ListaUsuarios) {
         DefaultListModel modelo = new DefaultListModel();
         for (DtUsuario it : ListaUsuarios) {
             modelo.addElement(it.getNickname());
         }
         lstUsuarios.setModel(modelo);
-        
+
     }
- private void desactivarCampos(){
+
+    private void desactivarCampos() {
         txtNombre.setEnabled(false);
-        txtContraNueva.setEnabled(false);
         txtContraNueva1.setEnabled(false);
+        txtContraNueva2.setEnabled(false);
         txtDescrpcion.setEnabled(false);
         txtNombreCanal.setEnabled(false);
         txtApellido.setEnabled(false);
@@ -296,20 +298,19 @@ public class frmModificarUsuario extends javax.swing.JDialog {
         lbCorreo.setEnabled(false);
         lbDescripcion.setEnabled(false);
         lbFecha.setEnabled(false);
-        lbOpcional.setEnabled(false);
         chkCambiarContra.setEnabled(false);
         rbPublico.setEnabled(false);
         rbPrivado.setEnabled(false);
         btnModificar.setEnabled(false);
         btnSeleccionar.setEnabled(false);
+        btnQuitarImagen.setEnabled(false);
         txtDescrpcion.setEnabled(false);
-        
-        
-        
+
     }
- private void activarCampos(){
-    
-  txtNombre.setEnabled(true);
+
+    private void activarCampos() {
+
+        txtNombre.setEnabled(true);
         txtDescrpcion.setEnabled(true);
         txtNombreCanal.setEnabled(true);
         txtApellido.setEnabled(true);
@@ -322,37 +323,37 @@ public class frmModificarUsuario extends javax.swing.JDialog {
         lbCorreo.setEnabled(true);
         lbDescripcion.setEnabled(true);
         lbFecha.setEnabled(true);
-        lbOpcional.setEnabled(true);
         chkCambiarContra.setEnabled(true);
         rbPublico.setEnabled(true);
         rbPrivado.setEnabled(true);
         btnModificar.setEnabled(true);
         btnSeleccionar.setEnabled(true);
+        btnQuitarImagen.setEnabled(true);
         txtDescrpcion.setEnabled(true);
     }
- 
- private String seleccionarImagen() {
+
+    private String seleccionarImagen() {
         // Crea un JFileChooser
         JFileChooser JFC = new JFileChooser();
         // crea un filtro para aceptar solo algunas extensiones
         FileNameExtensionFilter filtroImagen = new FileNameExtensionFilter("JPG, PNG", "jpg", "png");
         // Agrega el filtro al JFileChooser
         JFC.setFileFilter(filtroImagen);
-        
+
         // archivo seleccionado
         File archivo;
         // para saber si se selecciono algo o se cancelo
         int resultado;
-        
+
         while (true) {
             // muestra el JFileChooser
             resultado = JFC.showOpenDialog(this);
-            
+
             // Si pasa algo que no sea el aceptar
-            if (resultado != JFileChooser.APPROVE_OPTION){
+            if (resultado != JFileChooser.APPROVE_OPTION) {
                 return "";
             }
-            
+
             // obtiene el archivo seleccionado
             archivo = JFC.getSelectedFile();
 
@@ -362,7 +363,7 @@ public class frmModificarUsuario extends javax.swing.JDialog {
                 String rutaArchivo = archivo.getAbsolutePath();
                 // obtiene el archivo como imagen a partir de la ruta
                 Image img = new ImageIcon(rutaArchivo).getImage();
-                
+
                 // verifica que tanto se deformará la imagen al mostrarla en un cuadrado
                 float deformacion;
                 if (img.getHeight(null) > img.getWidth(null)) {
@@ -370,7 +371,7 @@ public class frmModificarUsuario extends javax.swing.JDialog {
                 } else {
                     deformacion = img.getWidth(null) / img.getHeight(null);
                 }
-                
+
                 if (deformacion < 1.3 && deformacion >= 1) {
                     // si no se deforma demasiado
                     // devuelve la ruta absoluta
@@ -389,8 +390,8 @@ public class frmModificarUsuario extends javax.swing.JDialog {
             }
         }
     }
- 
- private void cargarImagenEnJlabel(javax.swing.JLabel jLabelx, String Ruta){
+
+    private void cargarImagenEnJlabel(javax.swing.JLabel jLabelx, String Ruta) {
         jLabelx.setText(null);
         // Carga la imagen a la variable de tipo Image
         Image img = new ImageIcon(Ruta).getImage();
@@ -401,66 +402,86 @@ public class frmModificarUsuario extends javax.swing.JDialog {
         // establece la imagen en el label
         jLabelx.setIcon(icono);
     }
- 
- 
+
+    private boolean validarNombres(String _nombre) {
+        Pattern patronNombres = Pattern.compile("^([A-Za-zÑñÁáÉéÍíÓóÚú]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú]+)$");
+        Matcher mather = patronNombres.matcher(_nombre);
+        if (mather.find() == true) {
+            return true;
+        }
+        return false;
+    }
+
     private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnModificarActionPerformed
         try {
-            
-            
-            if(lstUsuarios.isSelectionEmpty()){
-                    JOptionPane.showMessageDialog(null, "Seleccione un usuario para modificar", "Error", JOptionPane.WARNING_MESSAGE);
-
-            }else{
-                if(txtNombre.getText().isEmpty()){
-                                JOptionPane.showMessageDialog(null, "El campo nombre no puede quedar vacío", "Error", JOptionPane.WARNING_MESSAGE);
-
-            }else{
-                if(txtApellido.getText().isEmpty()){
-                                JOptionPane.showMessageDialog(null, "El campo apellido no puede quedar vacío", "Error", JOptionPane.WARNING_MESSAGE);
-
-            }else{
-                    if(txtNombreCanal.getText().isEmpty()){
-                                JOptionPane.showMessageDialog(null, "El campo nombre de canal no puede quedar vacío", "Error", JOptionPane.WARNING_MESSAGE);
-
-            }else{
-                
-                
-            String pass = user.getContrasenia();
-            if (chkCambiarContra.isSelected()) {
-                        
-                if (!(txtContraNueva.getText().equals("") && txtContraNueva1.getText().equals(""))) {
-
-                    if (txtContraNueva.getText().equals(txtContraNueva1.getText())) {
-                        pass = txtContraNueva.getText();
-                    } else {
-                        JOptionPane.showMessageDialog(null, "Las contraseñas no coinciden, no se pudo efectuar el cambio de contraseña. Inténtelo de nuevo", "OK", JOptionPane.WARNING_MESSAGE);
-                        return;
-                    }
 
+            if (lstUsuarios.isSelectionEmpty()) {
+                JOptionPane.showMessageDialog(null, "Seleccione un usuario para modificar", "Error", JOptionPane.WARNING_MESSAGE);
+            } else {
+                if (txtNombre.getText().isEmpty()) {
+                    JOptionPane.showMessageDialog(null, "El campo nombre no puede quedar vacío", "Error", JOptionPane.WARNING_MESSAGE);
                 } else {
-                    JOptionPane.showMessageDialog(null, "Ingrese la contraseña nueva", "OK", JOptionPane.WARNING_MESSAGE);
-                    return;
-                }
-            }
-                java.sql.Date fecha = null; //casteo fecha
-                            if (dcFecha.getDate() != null) {
-                                java.util.Date utilDate = dcFecha.getDate();
-                                fecha = new java.sql.Date(utilDate.getTime());
+                    txtNombre.setText(txtNombre.getText().trim());
+                    if (!validarNombres(txtNombre.getText())) {
+                        JOptionPane.showMessageDialog(null, "El nombre tiene caracteres no válidos", "Error", JOptionPane.WARNING_MESSAGE);
+                    } else {
+                        if (txtApellido.getText().isEmpty()) {
+                            JOptionPane.showMessageDialog(null, "El campo apellido no puede quedar vacío", "Error", JOptionPane.WARNING_MESSAGE);
+                        } else {
+                            txtApellido.setText(txtNombre.getText().trim());
+                            if (!validarNombres(txtApellido.getText())) {
+                                JOptionPane.showMessageDialog(null, "El apellido tiene caracteres no válidos", "Error", JOptionPane.WARNING_MESSAGE);
+                            } else {
+                                if (txtNombreCanal.getText().isEmpty()) {
+                                    JOptionPane.showMessageDialog(null, "El campo nombre de canal no puede quedar vacío", "Error", JOptionPane.WARNING_MESSAGE);
+                                } else {
+                                    txtNombreCanal.setText(txtNombre.getText().trim());
+                                    String pass = user.getContrasenia();
+                                    if (chkCambiarContra.isSelected()) {
+
+                                        if (!(txtContraNueva1.getText().equals("") && txtContraNueva2.getText().equals(""))) {
+
+                                            if (txtContraNueva1.getText().equals(txtContraNueva2.getText())) {
+                                                pass = txtContraNueva1.getText();
+                                            } else {
+                                                JOptionPane.showMessageDialog(null, "Las contraseñas no coinciden, no se pudo efectuar el cambio de contraseña. Inténtelo de nuevo", "OK", JOptionPane.WARNING_MESSAGE);
+                                                txtContraNueva1.setText("");
+                                                txtContraNueva2.setText("");
+                                                return;
+                                            }
+
+                                        } else {
+                                            JOptionPane.showMessageDialog(null, "Ingrese la contraseña nueva", "OK", JOptionPane.WARNING_MESSAGE);
+                                            return;
+                                        }
+                                    }
+                                    java.sql.Date fecha = null; //casteo fecha
+                                    if (dcFecha.getDate() != null) {
+                                        java.util.Date utilDate = dcFecha.getDate();
+                                        fecha = new java.sql.Date(utilDate.getTime());
+                                    }else{
+                                        JOptionPane.showMessageDialog(null, "Debe seleccionar la fecha de nacimiento", "OK", JOptionPane.WARNING_MESSAGE);
+                                        return;
+                                    }
+                                    DtUsuario u = new DtUsuario(user.getNickname(), pass, txtNombre.getText(), txtApellido.getText(), user.getCorreo(), fecha, ruta, PROPERTIES);
+                                    Privacidad priv;
+                                    if (rbPrivado.isSelected()) {
+                                        priv = Privacidad.PRIVADO;
+                                    } else {
+                                        priv = Privacidad.PUBLICO;
+                                    }
+                                    DtCanal c = new DtCanal(0, txtNombreCanal.getText(), txtDescrpcion.getText(), priv);
+                                    sys.modificarUsuarioYCanal(u, c);
+
+                                    JOptionPane.showMessageDialog(null, "Datos modificados correctamente", "OK", JOptionPane.INFORMATION_MESSAGE);
+                                    dispose();
+
+                                }
                             }
-                DtUsuario u = new DtUsuario(user.getNickname(), pass, txtNombre.getText(), txtApellido.getText(), user.getCorreo(), fecha, ruta, PROPERTIES);
-                Privacidad priv;
-                if(rbPrivado.isSelected()){
-                    priv = Privacidad.PRIVADO;
-                }else{
-                    priv = Privacidad.PUBLICO;
+                        }
+                    }
                 }
-                DtCanal c = new DtCanal(0, txtNombreCanal.getText(), txtDescrpcion.getText(), priv);
-                sys.modificarUsuarioYCanal(u, c);
-
-                JOptionPane.showMessageDialog(null, "Datos modificados correctamente", "OK", JOptionPane.INFORMATION_MESSAGE);
-                dispose();
-             
-            }}}}
+            }
         } catch (Exception e) {
             JOptionPane.showMessageDialog(null, "Ha ocurrido un error\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
         }
@@ -468,13 +489,16 @@ public class frmModificarUsuario extends javax.swing.JDialog {
 
     private void btnSeleccionarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSeleccionarActionPerformed
         //cargarImagen(lbImagen);
+        String rutaAnterior = ruta;
         ruta = seleccionarImagen();
-                cargarImagenEnJlabel(lbImg, ruta);
-
+        if (ruta.isEmpty()) {
+            ruta = rutaAnterior;
+        }
+        cargarImagenEnJlabel(lbImg, ruta);
     }//GEN-LAST:event_btnSeleccionarActionPerformed
 
     private void btnListaReprodiccionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnListaReprodiccionActionPerformed
-        new frmModificarListaDeReproduccion(this,true,lstUsuarios.getSelectedValue()).setVisible(true);
+        new frmModificarListaDeReproduccion(this, true, lstUsuarios.getSelectedValue()).setVisible(true);
     }//GEN-LAST:event_btnListaReprodiccionActionPerformed
 
     private void btnVideoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnVideoActionPerformed
@@ -485,46 +509,42 @@ public class frmModificarUsuario extends javax.swing.JDialog {
         sys.liberarMemoriaUsuario();
         dispose();
     }//GEN-LAST:event_btnCancelarActionPerformed
- private void cargarDatosDelUsuario(DtUsuario u){
+    private void cargarDatosDelUsuario(DtUsuario u) {
         txtNombre.setText(u.getNombre());
         txtApellido.setText(u.getApellido());
-        txtCorreo.setText(u.getCorreo());   
+        txtCorreo.setText(u.getCorreo());
         dcFecha.setDate(u.getFechaNacimiento());
         cargarImagenEnJlabel(lbImg, u.getImagen());
-        
+
     }
-    private void cargarDatosDelCanal(DtCanal c){
+
+    private void cargarDatosDelCanal(DtCanal c) {
         txtNombreCanal.setText(c.getNombre());
         txtDescrpcion.setText(c.getDescripcion());
-        if (c.getPrivacidad() == Privacidad.PUBLICO){
+        if (c.getPrivacidad() == Privacidad.PUBLICO) {
             rbPublico.setSelected(true);
-        }else{
-          rbPrivado.setSelected(true);
+        } else {
+            rbPrivado.setSelected(true);
         }
     }
-    
-    
-    
-    
-    
+
+
     private void lstUsuariosValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_lstUsuariosValueChanged
-         try {
-             if(! lstUsuarios.isSelectionEmpty()){
-                 activarCampos();
-             }
-             btnVideo.setEnabled(true);
-             btnListaReprodiccion.setEnabled(true);
+        try {
+            if (!lstUsuarios.isSelectionEmpty()) {
+                activarCampos();
+            }
+            btnVideo.setEnabled(true);
+            btnListaReprodiccion.setEnabled(true);
             String nick = lstUsuarios.getSelectedValue();
             user = sys.seleccionarUsuario(nick);
             cargarDatosDelUsuario(user);
             DtCanal dtc = sys.obtenerCanalDeUsuario();
             cargarDatosDelCanal(dtc);
-            ruta=user.getImagen();
-            txtContraNueva.setText("");
+            ruta = user.getImagen();
             txtContraNueva1.setText("");
-            
-            
-            
+            txtContraNueva2.setText("");
+
         } catch (Exception e) {
             JOptionPane.showMessageDialog(null, "Ha ocurrido un error", "Error", JOptionPane.ERROR_MESSAGE);
 
@@ -532,35 +552,32 @@ public class frmModificarUsuario extends javax.swing.JDialog {
     }//GEN-LAST:event_lstUsuariosValueChanged
 
     private void chkCambiarContraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkCambiarContraActionPerformed
-        if(chkCambiarContra.isSelected()){
-            txtContraNueva.setEnabled(true);
+        if (chkCambiarContra.isSelected()) {
             txtContraNueva1.setEnabled(true);
+            txtContraNueva2.setEnabled(true);
             lbCN.setEnabled(true);
             lbRCN.setEnabled(true);
-            
-        }else{
-             txtContraNueva.setEnabled(false);
+
+        } else {
             txtContraNueva1.setEnabled(false);
+            txtContraNueva2.setEnabled(false);
             lbCN.setEnabled(false);
             lbRCN.setEnabled(false);
         }        // TODO add your handling code here:
     }//GEN-LAST:event_chkCambiarContraActionPerformed
 
-    private void txtContraNuevaKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtContraNuevaKeyTyped
-        // TODO add your handling code here:
-    }//GEN-LAST:event_txtContraNuevaKeyTyped
-
-  
-    
-    
-    
-    
-    
-    
+    private void btnQuitarImagenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnQuitarImagenActionPerformed
+        // Quitar imagen
+        ruta = "";
+        cargarImagenEnJlabel(lbImg, ruta);
+    }//GEN-LAST:event_btnQuitarImagenActionPerformed
+
+
     // Variables declaration - do not modify//GEN-BEGIN:variables
     private javax.swing.JButton btnCancelar;
     private javax.swing.JButton btnListaReprodiccion;
     private javax.swing.JButton btnModificar;
+    private javax.swing.JButton btnQuitarImagen;
     private javax.swing.JButton btnSeleccionar;
     private javax.swing.JButton btnVideo;
     private javax.swing.JCheckBox chkCambiarContra;
@@ -580,20 +597,18 @@ public class frmModificarUsuario extends javax.swing.JDialog {
     private javax.swing.JLabel lbCorreo;
     private javax.swing.JLabel lbDescripcion;
     private javax.swing.JLabel lbFecha;
-    private javax.swing.JLabel lbImagen;
     private javax.swing.JLabel lbImagen1;
     private javax.swing.JLabel lbImg;
     private javax.swing.JPanel lbMes;
     private javax.swing.JLabel lbNombre;
     private javax.swing.JLabel lbNombreC;
-    private javax.swing.JLabel lbOpcional;
     private javax.swing.JLabel lbRCN;
     private javax.swing.JList<String> lstUsuarios;
     private javax.swing.JRadioButton rbPrivado;
     private javax.swing.JRadioButton rbPublico;
     private javax.swing.JTextField txtApellido;
-    private javax.swing.JTextField txtContraNueva;
-    private javax.swing.JTextField txtContraNueva1;
+    private javax.swing.JPasswordField txtContraNueva1;
+    private javax.swing.JPasswordField txtContraNueva2;
     private javax.swing.JTextField txtCorreo;
     private javax.swing.JTextArea txtDescrpcion;
     private javax.swing.JTextField txtNombre;
diff --git a/UyTube_aplicacion/src/Presentacion/Video/frmAltaVideo.form b/UyTube_aplicacion/src/Presentacion/Video/frmAltaVideo.form
index e7b19bb519654413bf1adc0306e23ad5fb8ab7da..ce1cef5a5b5fdf134f123d0f60094c2981b41d9d 100644
--- a/UyTube_aplicacion/src/Presentacion/Video/frmAltaVideo.form
+++ b/UyTube_aplicacion/src/Presentacion/Video/frmAltaVideo.form
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
   <Properties>
     <Property name="defaultCloseOperation" type="int" value="2"/>
     <Property name="title" type="java.lang.String" value="Alta video"/>
@@ -12,7 +12,6 @@
   <Events>
     <EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosing"/>
     <EventHandler event="windowActivated" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowActivated"/>
-    <EventHandler event="windowDeactivated" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowDeactivated"/>
   </Events>
   <AuxValues>
     <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
@@ -29,26 +28,15 @@
   <Layout>
     <DimensionLayout dim="0">
       <Group type="103" groupAlignment="0" attributes="0">
-          <EmptySpace min="0" pref="980" max="32767" attributes="0"/>
-          <Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
-              <Group type="102" attributes="0">
-                  <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
-                  <Component id="jPanel14" min="-2" pref="980" max="-2" attributes="0"/>
-                  <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
-              </Group>
+          <Group type="102" alignment="1" attributes="0">
+              <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+              <Component id="jPanel14" min="-2" pref="980" max="-2" attributes="0"/>
           </Group>
       </Group>
     </DimensionLayout>
     <DimensionLayout dim="1">
       <Group type="103" groupAlignment="0" attributes="0">
-          <EmptySpace min="0" pref="550" max="32767" attributes="0"/>
-          <Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
-              <Group type="102" attributes="0">
-                  <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
-                  <Component id="jPanel14" min="-2" pref="550" max="-2" attributes="0"/>
-                  <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
-              </Group>
-          </Group>
+          <Component id="jPanel14" alignment="0" pref="535" max="32767" attributes="0"/>
       </Group>
     </DimensionLayout>
   </Layout>
@@ -78,7 +66,7 @@
           </AuxValues>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="30" y="50" width="290" height="370"/>
+              <AbsoluteConstraints x="30" y="50" width="290" height="360"/>
             </Constraint>
           </Constraints>
 
@@ -91,7 +79,7 @@
                 </Property>
               </Properties>
               <Events>
-                <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="lstDuenioVideoMouseClicked"/>
+                <EventHandler event="valueChanged" listener="javax.swing.event.ListSelectionListener" parameters="javax.swing.event.ListSelectionEvent" handler="lstDuenioVideoValueChanged"/>
               </Events>
               <AuxValues>
                 <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
@@ -125,7 +113,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="340" y="150" width="-1" height="-1"/>
+              <AbsoluteConstraints x="340" y="160" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -135,7 +123,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="340" y="210" width="-1" height="-1"/>
+              <AbsoluteConstraints x="340" y="220" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -145,7 +133,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="340" y="400" width="-1" height="-1"/>
+              <AbsoluteConstraints x="340" y="380" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -181,7 +169,7 @@
                 </Property>
               </Properties>
               <Events>
-                <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="lstAsignarCategoriaMouseClicked"/>
+                <EventHandler event="valueChanged" listener="javax.swing.event.ListSelectionListener" parameters="javax.swing.event.ListSelectionEvent" handler="lstAsignarCategoriaValueChanged"/>
               </Events>
               <AuxValues>
                 <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
@@ -189,20 +177,10 @@
             </Component>
           </SubComponents>
         </Container>
-        <Component class="javax.swing.JLabel" name="jLabel78">
-          <Properties>
-            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-              <Font name="Dialog" size="12" style="0"/>
-            </Property>
-            <Property name="text" type="java.lang.String" value="(Opcional)"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="840" y="20" width="-1" height="-1"/>
-            </Constraint>
-          </Constraints>
-        </Component>
         <Component class="javax.swing.JTextField" name="txtNombre">
+          <Events>
+            <EventHandler event="focusGained" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="txtNombreFocusGained"/>
+          </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
               <AbsoluteConstraints x="340" y="50" width="330" height="-1"/>
@@ -210,9 +188,12 @@
           </Constraints>
         </Component>
         <Component class="javax.swing.JTextField" name="txtUrl">
+          <Events>
+            <EventHandler event="focusGained" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="txtUrlFocusGained"/>
+          </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="340" y="170" width="330" height="-1"/>
+              <AbsoluteConstraints x="340" y="180" width="330" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -222,7 +203,7 @@
           </AuxValues>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="340" y="230" width="330" height="140"/>
+              <AbsoluteConstraints x="340" y="240" width="330" height="120"/>
             </Constraint>
           </Constraints>
 
@@ -248,7 +229,7 @@
           </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="690" y="460" width="260" height="70"/>
+              <AbsoluteConstraints x="690" y="440" width="260" height="70"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -264,25 +245,49 @@
           </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="30" y="463" width="290" height="70"/>
+              <AbsoluteConstraints x="30" y="440" width="290" height="70"/>
             </Constraint>
           </Constraints>
         </Component>
         <Component class="javax.swing.JSpinner" name="spSegundos">
+          <Properties>
+            <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
+              <SpinnerModel initial="0" maximum="59" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="spSegundosStateChanged"/>
+          </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
               <AbsoluteConstraints x="560" y="120" width="60" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
-        <Component class="javax.swing.JSpinner" name="spHora">
+        <Component class="javax.swing.JSpinner" name="spHoras">
+          <Properties>
+            <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
+              <SpinnerModel initial="0" maximum="15" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="spHorasStateChanged"/>
+          </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
               <AbsoluteConstraints x="420" y="120" width="60" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
-        <Component class="javax.swing.JSpinner" name="spMinuto">
+        <Component class="javax.swing.JSpinner" name="spMinutos">
+          <Properties>
+            <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
+              <SpinnerModel initial="0" maximum="59" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="spMinutosStateChanged"/>
+          </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
               <AbsoluteConstraints x="490" y="120" width="60" height="-1"/>
@@ -320,13 +325,21 @@
           </Constraints>
         </Component>
         <Component class="com.toedter.calendar.JDateChooser" name="jDateChooser1">
+          <Properties>
+            <Property name="maxSelectableDate" type="java.util.Date" editor="org.netbeans.beaninfo.editors.DateEditor">
+              <SerializedValue value="-84,-19,0,5,115,114,0,14,106,97,118,97,46,117,116,105,108,46,68,97,116,101,104,106,-127,1,75,89,116,25,3,0,0,120,112,119,8,0,0,2,75,-49,58,60,88,120"/>
+            </Property>
+            <Property name="minSelectableDate" type="java.util.Date" editor="org.netbeans.beaninfo.editors.DateEditor">
+              <SerializedValue value="-84,-19,0,5,115,114,0,14,106,97,118,97,46,117,116,105,108,46,68,97,116,101,104,106,-127,1,75,89,116,25,3,0,0,120,112,119,8,-1,-1,-3,-3,-81,8,28,-72,120"/>
+            </Property>
+          </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="480" y="400" width="110" height="-1"/>
+              <AbsoluteConstraints x="450" y="380" width="220" height="20"/>
             </Constraint>
           </Constraints>
         </Component>
-        <Component class="javax.swing.JLabel" name="lbMensajeNombre">
+        <Component class="javax.swing.JLabel" name="lbMsjNombre">
           <Properties>
             <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
               <Dimension value="[0, 15]"/>
@@ -337,14 +350,35 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="410" y="70" width="260" height="15"/>
+              <AbsoluteConstraints x="340" y="70" width="330" height="15"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="lbMsjUrl">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="340" y="200" width="330" height="15"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="lbMsjFecha">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="340" y="430" width="250" height="15"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="lbMsjDescripcion">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="340" y="370" width="330" height="15"/>
             </Constraint>
           </Constraints>
         </Component>
-        <Component class="javax.swing.JLabel" name="lbMensajeUrl">
+        <Component class="javax.swing.JLabel" name="lbMsjDuracion">
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="340" y="190" width="330" height="15"/>
+              <AbsoluteConstraints x="340" y="140" width="330" height="15"/>
             </Constraint>
           </Constraints>
         </Component>
diff --git a/UyTube_aplicacion/src/Presentacion/Video/frmAltaVideo.java b/UyTube_aplicacion/src/Presentacion/Video/frmAltaVideo.java
index 379f69e73b8c3284771c7ddd006f84e49fe10910..3ae65c2d47d8dd6f27fed70cbe7752faa7d058b4 100644
--- a/UyTube_aplicacion/src/Presentacion/Video/frmAltaVideo.java
+++ b/UyTube_aplicacion/src/Presentacion/Video/frmAltaVideo.java
@@ -3,57 +3,89 @@ package Presentacion.Video;
 
 import Logica.Fabrica;
 import Logica.Clases.Video;
-import Logica.DataType.DtUsuario;
 import Logica.DataType.DtVideo;
 import Logica.Enumerados.Privacidad;
 import Logica.Interfaces.IAdmin;
 import java.awt.Color;
 import java.sql.Time;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import javax.swing.BorderFactory;
 import javax.swing.DefaultListModel;
+import javax.swing.JLabel;
 import javax.swing.JOptionPane;
+import javax.swing.JTextField;
 import javax.swing.border.Border;
 import javax.swing.plaf.ColorUIResource;
 
 public class frmAltaVideo extends javax.swing.JDialog {
     
-    public DefaultListModel listModelUsuario = new DefaultListModel();
-    public DefaultListModel listModelCategoria = new DefaultListModel();
-    Fabrica fabrica = Fabrica.getInstancia();
-    IAdmin sys = fabrica.getIAdmin();    
+    private ArrayList<String> indexDuenioVideo = new ArrayList();
+    private ArrayList<String> indexCategorias = new ArrayList(); 
+    private IAdmin sys;  
     private String categoria = "";
-    private String usrSeleccionado = "";
-    Border bordeDefault;
-    Color colorOK = new ColorUIResource(40,167,69);
-    Color colorError = new ColorUIResource(220,53,69);
+    private String usrSeleccionado = "";   
+    private Border bordeDefault;
+    private Color colorOK = new ColorUIResource(40,167,69);
+    private Color colorError = new ColorUIResource(220,53,69);
+    private String nombre = new String();
+    private String url = new String();
+    private String descripcion = new String();
+    int anioActual,diaActual,mesActual;
+    
     // Patrón para validar el email
-    Pattern patronURL = Pattern.compile("\"(http://|https://)(www.)?([a-zA-Z0-9]+).[a-zA-Z0-9]*.[a-z]{3}.?([a-z]+)?\"");
+    Pattern patronURL = Pattern.compile("^((((https?|ftps?|gopher|telnet|nntp)://)|(mailto:|news:))(%[0-9A-Fa-f]{2}|[-()_.!~*’;/?:@&=+$, A-Za-z0-9])+)([).!’;/?:, ][[:blank:]])?$");
     
+    Pattern patronNombre= Pattern.compile("^([A-Za-zÑñÁáÉéÍíÓóÚú0-9]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú0-9]+)\\s*"
+            + "([A-Za-zÑñÁáÉéÍíÓóÚú0-9]+)$");
     public frmAltaVideo(java.awt.Frame parent, boolean modal) {
         super(parent, modal);
         initComponents();
         this.setLocationRelativeTo(null);
+        sys = Fabrica.getInstancia().getIAdmin();
+        bordeDefault = txtNombre.getBorder();
+        nombre = "";
+        url = "";
+        descripcion = "";
+    }
+    
+    private boolean validarDuracion(int s, int m, int h){
+        if ( s > 0 || m > 0 || h > 0) {             
+            return true;
+        }
+        lbMsjDuracion.setOpaque(true);
+        lbMsjDuracion.setForeground(Color.WHITE);
+        lbMsjDuracion.setBackground(colorError);
+        lbMsjDuracion.setText(" El campo duración es obligatorio");
+        return false;                   
     }
     
     private void limpiarCampos(){
         txtNombre.setText("");
         txtDescripcion.setText("");
         txtUrl.setText("");
-        spHora.setValue(0);
-        spMinuto.setValue(0);
+        spHoras.setValue(0);
+        spMinutos.setValue(0);
         spSegundos.setValue(0);
         usrSeleccionado="";
         categoria = "";
         jDateChooser1.setDate(null);
     }
     
-    private void limpiarListas(){
-        listModelUsuario.clear();//Limpia la listaModeloUsuario
-        lstDuenioVideo.setModel(listModelUsuario); //Borra todos los datos del JList DuenioVideo
-        listModelCategoria.clear();//Limpia el modeo de Categorias
-        lstAsignarCategoria.setModel(listModelCategoria);
+    private void limpiarLstDuenios(){
+        DefaultListModel modelo = new DefaultListModel();
+        lstDuenioVideo.setModel(modelo);
+        indexDuenioVideo.clear();        
+    }
+    
+    private void limpiarLstCategorias(){
+        DefaultListModel modelo = new DefaultListModel();
+        lstAsignarCategoria.setModel(modelo);
+        indexCategorias.clear();   
     }
     
     private boolean validarFormatoURL(String _url){
@@ -64,6 +96,61 @@ public class frmAltaVideo extends javax.swing.JDialog {
         return false;        
     }
     
+    private boolean validarNombres(String _nombre){
+        Matcher mather = patronNombre.matcher(_nombre); 
+        if (mather.find() == true) {
+            return true;
+        } 
+        return false;        
+    }
+    
+    private boolean validarTxt(JTextField txt, int max,JLabel lb,String nombreCampo){
+        try{
+            if(txt.getText().length() > max ){
+                lb.setText(" El campo supera los "+max+" caracteres");
+                cambiarColoresError(txt, lb);
+                return false;
+            }
+            else if(txt.getText().equals("")){
+                lb.setText(" El campo "+nombreCampo+" es obligatorio");
+                cambiarColoresError(txt, lb);
+                return false;
+            }            
+            else if(nombreCampo.equals("Nombre") ){                
+                for (DtVideo video : sys.listarVideosDeUsuario()) {
+                    if(video.getNombre().equals(nombre)){
+                        lb.setText(" El nombre del video ya existe");
+                        cambiarColoresError(txt, lb);
+                        return false;
+                    }
+                }
+            }            
+            else if(nombreCampo.equals("URL")){
+                if(!validarFormatoURL(url)){
+                    lb.setText(" El formato de la URI no es válido");
+                    cambiarColoresError(txt, lb);
+                    return false;                                        
+                }
+            }            
+            else{                
+                txt.setBorder(bordeDefault);
+                lb.setText("");
+                lb.setOpaque(false);
+            }
+                   
+        } catch (Exception e) {
+            JOptionPane.showMessageDialog(null, "Ha ocurrido un error \n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
+        }
+        return true;
+    }
+    
+    private void cambiarColoresError(JTextField txt, JLabel lb){
+        lb.setOpaque(true);
+        lb.setForeground(Color.WHITE);
+        lb.setBackground(colorError);  
+        txt.setBorder(BorderFactory.createLineBorder(colorError, 1));
+    }
+    
     @SuppressWarnings("unchecked")
     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
     private void initComponents() {
@@ -80,7 +167,6 @@ public class frmAltaVideo extends javax.swing.JDialog {
         jLabel77 = new javax.swing.JLabel();
         jScrollPane17 = new javax.swing.JScrollPane();
         lstAsignarCategoria = new javax.swing.JList<>();
-        jLabel78 = new javax.swing.JLabel();
         txtNombre = new javax.swing.JTextField();
         txtUrl = new javax.swing.JTextField();
         jScrollPane18 = new javax.swing.JScrollPane();
@@ -88,14 +174,17 @@ public class frmAltaVideo extends javax.swing.JDialog {
         btnAceptar = new javax.swing.JButton();
         btnCancelar = new javax.swing.JButton();
         spSegundos = new javax.swing.JSpinner();
-        spHora = new javax.swing.JSpinner();
-        spMinuto = new javax.swing.JSpinner();
+        spHoras = new javax.swing.JSpinner();
+        spMinutos = new javax.swing.JSpinner();
         jLabel135 = new javax.swing.JLabel();
         jLabel136 = new javax.swing.JLabel();
         jLabel137 = new javax.swing.JLabel();
         jDateChooser1 = new com.toedter.calendar.JDateChooser();
-        lbMensajeNombre = new javax.swing.JLabel();
-        lbMensajeUrl = new javax.swing.JLabel();
+        lbMsjNombre = new javax.swing.JLabel();
+        lbMsjUrl = new javax.swing.JLabel();
+        lbMsjFecha = new javax.swing.JLabel();
+        lbMsjDescripcion = new javax.swing.JLabel();
+        lbMsjDuracion = new javax.swing.JLabel();
 
         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
         setTitle("Alta video");
@@ -106,9 +195,6 @@ public class frmAltaVideo extends javax.swing.JDialog {
             public void windowActivated(java.awt.event.WindowEvent evt) {
                 formWindowActivated(evt);
             }
-            public void windowDeactivated(java.awt.event.WindowEvent evt) {
-                formWindowDeactivated(evt);
-            }
         });
 
         jPanel14.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
@@ -117,14 +203,14 @@ public class frmAltaVideo extends javax.swing.JDialog {
         jLabel71.setText("Dueño del video:");
         jPanel14.add(jLabel71, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 20, -1, -1));
 
-        lstDuenioVideo.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                lstDuenioVideoMouseClicked(evt);
+        lstDuenioVideo.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
+                lstDuenioVideoValueChanged(evt);
             }
         });
         jScrollPane16.setViewportView(lstDuenioVideo);
 
-        jPanel14.add(jScrollPane16, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 50, 290, 370));
+        jPanel14.add(jScrollPane16, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 50, 290, 360));
 
         jLabel72.setText("Nombre:");
         jPanel14.add(jLabel72, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 30, -1, -1));
@@ -133,38 +219,46 @@ public class frmAltaVideo extends javax.swing.JDialog {
         jPanel14.add(jLabel73, new org.netbeans.lib.awtextra.AbsoluteConstraints(560, 100, -1, -1));
 
         jLabel74.setText("URL:");
-        jPanel14.add(jLabel74, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 150, -1, -1));
+        jPanel14.add(jLabel74, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 160, -1, -1));
 
         jLabel75.setText("Descripción:");
-        jPanel14.add(jLabel75, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 210, -1, -1));
+        jPanel14.add(jLabel75, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 220, -1, -1));
 
         jLabel76.setText("Fecha publicación:");
-        jPanel14.add(jLabel76, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 400, -1, -1));
+        jPanel14.add(jLabel76, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 380, -1, -1));
 
         jLabel77.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
         jLabel77.setText("Asignar categoría:");
         jPanel14.add(jLabel77, new org.netbeans.lib.awtextra.AbsoluteConstraints(690, 20, -1, -1));
 
-        lstAsignarCategoria.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
-                lstAsignarCategoriaMouseClicked(evt);
+        lstAsignarCategoria.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
+                lstAsignarCategoriaValueChanged(evt);
             }
         });
         jScrollPane17.setViewportView(lstAsignarCategoria);
 
         jPanel14.add(jScrollPane17, new org.netbeans.lib.awtextra.AbsoluteConstraints(690, 50, 260, 360));
 
-        jLabel78.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N
-        jLabel78.setText("(Opcional)");
-        jPanel14.add(jLabel78, new org.netbeans.lib.awtextra.AbsoluteConstraints(840, 20, -1, -1));
+        txtNombre.addFocusListener(new java.awt.event.FocusAdapter() {
+            public void focusGained(java.awt.event.FocusEvent evt) {
+                txtNombreFocusGained(evt);
+            }
+        });
         jPanel14.add(txtNombre, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 50, 330, -1));
-        jPanel14.add(txtUrl, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 170, 330, -1));
+
+        txtUrl.addFocusListener(new java.awt.event.FocusAdapter() {
+            public void focusGained(java.awt.event.FocusEvent evt) {
+                txtUrlFocusGained(evt);
+            }
+        });
+        jPanel14.add(txtUrl, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 180, 330, -1));
 
         txtDescripcion.setColumns(20);
         txtDescripcion.setRows(5);
         jScrollPane18.setViewportView(txtDescripcion);
 
-        jPanel14.add(jScrollPane18, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 230, 330, 140));
+        jPanel14.add(jScrollPane18, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 240, 330, 120));
 
         btnAceptar.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
         btnAceptar.setText("Aceptar");
@@ -173,7 +267,7 @@ public class frmAltaVideo extends javax.swing.JDialog {
                 btnAceptarActionPerformed(evt);
             }
         });
-        jPanel14.add(btnAceptar, new org.netbeans.lib.awtextra.AbsoluteConstraints(690, 460, 260, 70));
+        jPanel14.add(btnAceptar, new org.netbeans.lib.awtextra.AbsoluteConstraints(690, 440, 260, 70));
 
         btnCancelar.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
         btnCancelar.setText("Cancelar");
@@ -182,10 +276,31 @@ public class frmAltaVideo extends javax.swing.JDialog {
                 btnCancelarActionPerformed(evt);
             }
         });
-        jPanel14.add(btnCancelar, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 463, 290, 70));
+        jPanel14.add(btnCancelar, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 440, 290, 70));
+
+        spSegundos.setModel(new javax.swing.SpinnerNumberModel(0, 0, 59, 1));
+        spSegundos.addChangeListener(new javax.swing.event.ChangeListener() {
+            public void stateChanged(javax.swing.event.ChangeEvent evt) {
+                spSegundosStateChanged(evt);
+            }
+        });
         jPanel14.add(spSegundos, new org.netbeans.lib.awtextra.AbsoluteConstraints(560, 120, 60, -1));
-        jPanel14.add(spHora, new org.netbeans.lib.awtextra.AbsoluteConstraints(420, 120, 60, -1));
-        jPanel14.add(spMinuto, new org.netbeans.lib.awtextra.AbsoluteConstraints(490, 120, 60, -1));
+
+        spHoras.setModel(new javax.swing.SpinnerNumberModel(0, 0, 15, 1));
+        spHoras.addChangeListener(new javax.swing.event.ChangeListener() {
+            public void stateChanged(javax.swing.event.ChangeEvent evt) {
+                spHorasStateChanged(evt);
+            }
+        });
+        jPanel14.add(spHoras, new org.netbeans.lib.awtextra.AbsoluteConstraints(420, 120, 60, -1));
+
+        spMinutos.setModel(new javax.swing.SpinnerNumberModel(0, 0, 59, 1));
+        spMinutos.addChangeListener(new javax.swing.event.ChangeListener() {
+            public void stateChanged(javax.swing.event.ChangeEvent evt) {
+                spMinutosStateChanged(evt);
+            }
+        });
+        jPanel14.add(spMinutos, new org.netbeans.lib.awtextra.AbsoluteConstraints(490, 120, 60, -1));
 
         jLabel135.setText("Duración:");
         jPanel14.add(jLabel135, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 100, -1, -1));
@@ -195,43 +310,44 @@ public class frmAltaVideo extends javax.swing.JDialog {
 
         jLabel137.setText("Minutos");
         jPanel14.add(jLabel137, new org.netbeans.lib.awtextra.AbsoluteConstraints(490, 100, -1, -1));
-        jPanel14.add(jDateChooser1, new org.netbeans.lib.awtextra.AbsoluteConstraints(480, 400, 110, -1));
 
-        lbMensajeNombre.setMaximumSize(new java.awt.Dimension(0, 15));
-        lbMensajeNombre.setMinimumSize(new java.awt.Dimension(0, 15));
-        jPanel14.add(lbMensajeNombre, new org.netbeans.lib.awtextra.AbsoluteConstraints(410, 70, 260, 15));
-        jPanel14.add(lbMensajeUrl, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 190, 330, 15));
+        jDateChooser1.setMaxSelectableDate(new java.util.Date(2524622503000L));
+        jDateChooser1.setMinSelectableDate(new java.util.Date(-2208971613000L));
+        jPanel14.add(jDateChooser1, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 380, 220, 20));
+
+        lbMsjNombre.setMaximumSize(new java.awt.Dimension(0, 15));
+        lbMsjNombre.setMinimumSize(new java.awt.Dimension(0, 15));
+        jPanel14.add(lbMsjNombre, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 70, 330, 15));
+        jPanel14.add(lbMsjUrl, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 200, 330, 15));
+        jPanel14.add(lbMsjFecha, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 430, 250, 15));
+        jPanel14.add(lbMsjDescripcion, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 370, 330, 15));
+        jPanel14.add(lbMsjDuracion, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 140, 330, 15));
 
         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
         getContentPane().setLayout(layout);
         layout.setHorizontalGroup(
             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-            .addGap(0, 980, Short.MAX_VALUE)
-            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                .addGroup(layout.createSequentialGroup()
-                    .addGap(0, 0, Short.MAX_VALUE)
-                    .addComponent(jPanel14, javax.swing.GroupLayout.PREFERRED_SIZE, 980, javax.swing.GroupLayout.PREFERRED_SIZE)
-                    .addGap(0, 0, Short.MAX_VALUE)))
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+                .addGap(0, 0, Short.MAX_VALUE)
+                .addComponent(jPanel14, javax.swing.GroupLayout.PREFERRED_SIZE, 980, javax.swing.GroupLayout.PREFERRED_SIZE))
         );
         layout.setVerticalGroup(
             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-            .addGap(0, 550, Short.MAX_VALUE)
-            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                .addGroup(layout.createSequentialGroup()
-                    .addGap(0, 0, Short.MAX_VALUE)
-                    .addComponent(jPanel14, javax.swing.GroupLayout.PREFERRED_SIZE, 550, javax.swing.GroupLayout.PREFERRED_SIZE)
-                    .addGap(0, 0, Short.MAX_VALUE)))
+            .addComponent(jPanel14, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE)
         );
 
         pack();
     }// </editor-fold>//GEN-END:initComponents
 
     private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAceptarActionPerformed
-        String nombre = txtNombre.getText().trim();//Obtiene el nombre y quita los espacios de los extremos
-        String descripcion = txtDescripcion.getText().trim();//Obtiene la descripcion y quita los espacios de los extremos
-        String url = txtUrl.getText().trim();//Obtiene la url y quita los espacios de los extremos
-        int horas = (Integer)spHora.getValue();
-        int minutos = (Integer)spMinuto.getValue();
+        jDateChooser1.setBorder(bordeDefault);
+        lbMsjFecha.setText("");
+        lbMsjFecha.setOpaque(false); 
+        nombre = txtNombre.getText().trim();//Obtiene el nombre y quita los espacios de los extremos
+        descripcion = txtDescripcion.getText().trim();//Obtiene la descripcion y quita los espacios de los extremos
+        url = txtUrl.getText().trim();//Obtiene la url y quita los espacios de los extremos
+        int horas = (Integer)spHoras.getValue();
+        int minutos = (Integer)spMinutos.getValue();
         int segundos = (Integer)spSegundos.getValue();
         Time duracion = new Time(horas, minutos, segundos);
         java.sql.Date fecha = null;
@@ -240,73 +356,159 @@ public class frmAltaVideo extends javax.swing.JDialog {
             java.util.Date utilDate = jDateChooser1.getDate();//Obtiene la fecha del JDateChooser en formato Date        
             fecha = new java.sql.Date(utilDate.getTime());//Lo combierte al tipo Date sql
         }        
+        //Arrays para validaciones campos de texto   
+        JTextField v1[] = {txtNombre,txtUrl}; //campos a validar
+        int[] v2= {100,2083}; //Largos maximos de los campos Nombre y URL
+        JLabel[] v3= { lbMsjNombre, lbMsjUrl}; //labels para mostrar mensajes       
+        String[] v4 ={"Nombre","URL","Descricion"};//Nombre del campo
+        boolean[] v5 ={false,false,false};//Estado inicial de las validaciones, cada elemento es una validacion de un campo especifico
+        for (int i = 0; i < v5.length-1; i++) {
+            if (validarTxt(v1[i], v2[i], v3[i], v4[i])) {
+                v5[i] = true;
+            }
+        }         
+        if(validarDuracion(segundos, minutos, horas)){
+           v5[2] = true;
+        }        
+        if (fecha == null) {
+            jDateChooser1.setBorder(BorderFactory.createLineBorder(colorError, 1));
+            lbMsjFecha.setText(" La fecha es obligatoria");
+            lbMsjFecha.setOpaque(true);
+            lbMsjFecha.setForeground(Color.WHITE);
+            lbMsjFecha.setBackground(colorError);
+        }
+        if(v5[0]==false|| v5[1]==false || v5[2]==false){
+            return;            
+        }        
         try {
             DtVideo dtVideo = new DtVideo(Video.getNuevoId(), nombre, descripcion, duracion, fecha, url, Privacidad.PRIVADO, categoria, 0, 0);
             int opcion=JOptionPane.showConfirmDialog(null, 
-                        "Desea guardar el video con los siguientes datos?\n"+
-                            "Usuario: "+usrSeleccionado+"\n"+
-                            "Nombre: "+nombre+"\n"+
-                            "Descripción: "+descripcion+"\n"+
-                            "Duración: "+duracion+"\n"+
-                            "fecha de publicacón: "+fecha
-                        , "Confirmar alt de Video", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
-            if(opcion==0)
+                        "¿Desea guardar el video \""+nombre+"\"?"
+                        , "Confirmar alta de Video", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
+            if(opcion==0){
                 sys.altaVideo(dtVideo);
                 limpiarCampos();
+            }
                 
         } catch (Exception e) {
-            JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE);
+            JOptionPane.showMessageDialog(null, "Ha ocurrido un error \n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
         }
     }//GEN-LAST:event_btnAceptarActionPerformed
 
     private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
-        limpiarListas();
+        limpiarLstDuenios();
+        limpiarLstCategorias();
         limpiarCampos();
         this.setVisible(false);//Oculta el formulario AltaVideo
     }//GEN-LAST:event_btnCancelarActionPerformed
 
     private void formWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowActivated
-        // Obtengo todos los nickname y los cargo en el listDuenioVideo(Lista de dueños de videos)
-        limpiarListas();
-        if(!sys.listarUsuarios().isEmpty()){
-            for (int i = 0; i < sys.listarUsuarios().size(); i++) {
-                listModelUsuario.add(i,sys.listarUsuarios().get(i).getNickname());
+        DefaultListModel modeloDuenio = new DefaultListModel();
+        DefaultListModel modeloCategoria = new DefaultListModel();
+        Calendar c = new GregorianCalendar();//Objeto de tipo calendario con la fecha actual
+        java.util.Date fechaActual = new Date(c.get(Calendar.YEAR)-1900,c.get(Calendar.MONTH),c.get(Calendar.DATE));//Obtiene la fecha actual del calendario     
+        jDateChooser1.setDate(fechaActual);//Setea el JDateChooser con la fecha actual
+        try {
+            // Obtengo todos los nickname y los cargo en el listDuenioVideo(Lista de dueños de videos)
+            limpiarLstCategorias();
+            limpiarLstDuenios();
+            if (!sys.listarUsuarios().isEmpty()) {
+                for (int i = 0; i < sys.listarUsuarios().size(); i++) {
+                    modeloDuenio.add(i, sys.listarUsuarios().get(i).getNickname());
+                }
+                lstDuenioVideo.setModel(modeloDuenio);
+                lstDuenioVideo.setSelectedIndex(0);//Setea la lista en el primer usuario
+                usrSeleccionado = lstDuenioVideo.getSelectedValue();
+                sys.seleccionarUsuario(usrSeleccionado);
             }
-            lstDuenioVideo.setModel(listModelUsuario);                  
-        }         
-        // Obtengo todas las categorias de video y las muestro en la lista
-        if(!sys.listarCategorias().isEmpty()){
-            for(int i = 0; i < sys.listarCategorias().size(); i++){
-                listModelCategoria.add(i, sys.listarCategorias().get(i));
+            // Obtengo todas las categorias de video y las muestro en la lista
+            if (!sys.listarCategorias().isEmpty()) {
+                for (int i = 0; i < sys.listarCategorias().size(); i++) {
+                    modeloCategoria.add(i, sys.listarCategorias().get(i));
+                    indexCategorias.add(i, sys.listarCategorias().get(i));//Alamacena cada categoria obtenida en el mismo orde
+                }
+                lstAsignarCategoria.setModel(modeloCategoria);
+                //Setea la lista Categoria en el elemento UNDEFINE
+                for (int i = 0; i < indexCategorias.size(); i++) {
+                    if( indexCategorias.get(i).equals("UNDEFINED") ){
+                        lstAsignarCategoria.setSelectedIndex(i);
+                        categoria = lstAsignarCategoria.getSelectedValue();
+                        break;
+                    }                    
+                }
             }
-            lstAsignarCategoria.setModel(listModelCategoria);
-        }               
+        } catch (Exception e) {
+            JOptionPane.showMessageDialog(null, "Ha ocurrido un error \n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
+        }
     }//GEN-LAST:event_formWindowActivated
 
-    private void lstDuenioVideoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lstDuenioVideoMouseClicked
-        // El sistema selecciona al usuario actual con el nickname seleccionado de la lista 
-        usrSeleccionado = lstDuenioVideo.getSelectedValue();
-        sys.seleccionarUsuario(usrSeleccionado);
-    }//GEN-LAST:event_lstDuenioVideoMouseClicked
-
     private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
         // Al cerrar el formulario se borran todos los datos
         limpiarCampos();
-        limpiarListas();
+        limpiarLstCategorias();
+        limpiarLstDuenios();
     }//GEN-LAST:event_formWindowClosing
 
-    private void lstAsignarCategoriaMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lstAsignarCategoriaMouseClicked
-        // Selecciona una categoria de la lista de categorias
-        categoria = lstAsignarCategoria.getSelectedValue();
-    }//GEN-LAST:event_lstAsignarCategoriaMouseClicked
-
-    private void formWindowDeactivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowDeactivated
-        // Al abrise el cuadro de dialogo se desactiva el formulario se limpian los datos de las listas
-//        listModelUsuario.clear();//Limpia la listaModeloUsuario
-//        lstDuenioVideo.setModel(listModelUsuario); //Borra todos los datos del JList DuenioVideo
-//        listModelCategoria.clear();//Limpia el modeo de Categorias
-//        lstAsignarCategoria.setModel(listModelCategoria);
-    }//GEN-LAST:event_formWindowDeactivated
+    private void lstDuenioVideoValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_lstDuenioVideoValueChanged
+        if (evt.getValueIsAdjusting()) return;
+        if (lstDuenioVideo.getSelectedIndex()<0) return;
+        try {
+            // El sistema selecciona al usuario actual con el nickname seleccionado de la lista 
+            usrSeleccionado = lstDuenioVideo.getSelectedValue();
+            sys.seleccionarUsuario(usrSeleccionado);
+        } catch (Exception e) {
+            JOptionPane.showMessageDialog(null, "Ha ocurrido un error \n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
+        }
+    }//GEN-LAST:event_lstDuenioVideoValueChanged
+
+    private void lstAsignarCategoriaValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_lstAsignarCategoriaValueChanged
+        if (evt.getValueIsAdjusting()) return;
+        if (lstAsignarCategoria.getSelectedIndex()<0) return;
+        try {
+            // Selecciona una categoria de la lista de categorias
+            categoria = lstAsignarCategoria.getSelectedValue();
+        } catch (Exception e) {
+            JOptionPane.showMessageDialog(null, "Ha ocurrido un error \n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
+        }
+    }//GEN-LAST:event_lstAsignarCategoriaValueChanged
+
+    private void txtNombreFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtNombreFocusGained
+        //Al recibir el foco restaura los valores
+        txtNombre.setBorder(bordeDefault);
+        lbMsjNombre.setText("");
+        lbMsjNombre.setOpaque(false);         
+    }//GEN-LAST:event_txtNombreFocusGained
+
+    private void txtUrlFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtUrlFocusGained
+        //Al recibir el foco restaura los valores
+        txtUrl.setBorder(bordeDefault);
+        lbMsjUrl.setText("");
+        lbMsjUrl.setOpaque(false); 
+    }//GEN-LAST:event_txtUrlFocusGained
+
+    private void spSegundosStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spSegundosStateChanged
+        // Al cambiar el valor verifica y restaura los valores
+        if(validarDuracion((Integer)spSegundos.getValue(),(Integer)spMinutos.getValue(),(Integer)spHoras.getValue())){
+            lbMsjDuracion.setText("");
+            lbMsjDuracion.setOpaque(false);
+        }
+    }//GEN-LAST:event_spSegundosStateChanged
+
+    private void spMinutosStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spMinutosStateChanged
+        // Al cambiar el valor verifica y restaura los valores
+        if(validarDuracion((Integer)spSegundos.getValue(),(Integer)spMinutos.getValue(),(Integer)spHoras.getValue())){
+            lbMsjDuracion.setText("");
+            lbMsjDuracion.setOpaque(false);
+        }
+    }//GEN-LAST:event_spMinutosStateChanged
+
+    private void spHorasStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spHorasStateChanged
+        // Al cambiar el valor verifica y restaura los valores
+        if(validarDuracion((Integer)spSegundos.getValue(),(Integer)spMinutos.getValue(),(Integer)spHoras.getValue())){
+            lbMsjDuracion.setText("");
+            lbMsjDuracion.setOpaque(false);
+        }
+    }//GEN-LAST:event_spHorasStateChanged
     
     
     // Variables declaration - do not modify//GEN-BEGIN:variables
@@ -323,17 +525,19 @@ public class frmAltaVideo extends javax.swing.JDialog {
     private javax.swing.JLabel jLabel75;
     private javax.swing.JLabel jLabel76;
     private javax.swing.JLabel jLabel77;
-    private javax.swing.JLabel jLabel78;
     private javax.swing.JPanel jPanel14;
     private javax.swing.JScrollPane jScrollPane16;
     private javax.swing.JScrollPane jScrollPane17;
     private javax.swing.JScrollPane jScrollPane18;
-    private javax.swing.JLabel lbMensajeNombre;
-    private javax.swing.JLabel lbMensajeUrl;
+    private javax.swing.JLabel lbMsjDescripcion;
+    private javax.swing.JLabel lbMsjDuracion;
+    private javax.swing.JLabel lbMsjFecha;
+    private javax.swing.JLabel lbMsjNombre;
+    private javax.swing.JLabel lbMsjUrl;
     private javax.swing.JList<String> lstAsignarCategoria;
     private javax.swing.JList<String> lstDuenioVideo;
-    private javax.swing.JSpinner spHora;
-    private javax.swing.JSpinner spMinuto;
+    private javax.swing.JSpinner spHoras;
+    private javax.swing.JSpinner spMinutos;
     private javax.swing.JSpinner spSegundos;
     private javax.swing.JTextArea txtDescripcion;
     private javax.swing.JTextField txtNombre;
diff --git a/UyTube_aplicacion/src/Presentacion/Video/frmConsultaVideo.form b/UyTube_aplicacion/src/Presentacion/Video/frmConsultaVideo.form
index 4dc5c422797f34a00e9b126344674aea292ac0ba..94db1599051aed90989b7979a00f4b6949eba662 100644
--- a/UyTube_aplicacion/src/Presentacion/Video/frmConsultaVideo.form
+++ b/UyTube_aplicacion/src/Presentacion/Video/frmConsultaVideo.form
@@ -32,9 +32,9 @@
     </DimensionLayout>
     <DimensionLayout dim="1">
       <Group type="103" groupAlignment="0" attributes="0">
-          <EmptySpace min="0" pref="574" max="32767" attributes="0"/>
+          <EmptySpace min="0" pref="592" max="32767" attributes="0"/>
           <Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
-              <Component id="jPanel15" alignment="0" pref="574" max="32767" attributes="0"/>
+              <Component id="jPanel15" alignment="0" pref="592" max="32767" attributes="0"/>
           </Group>
       </Group>
     </DimensionLayout>
@@ -95,7 +95,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="670" y="190" width="-1" height="-1"/>
+              <AbsoluteConstraints x="670" y="220" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -162,7 +162,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="380" y="200" width="-1" height="-1"/>
+              <AbsoluteConstraints x="380" y="230" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -172,7 +172,7 @@
           </AuxValues>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="380" y="220" width="270" height="130"/>
+              <AbsoluteConstraints x="380" y="250" width="270" height="130"/>
             </Constraint>
           </Constraints>
 
@@ -194,7 +194,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="380" y="140" width="-1" height="-1"/>
+              <AbsoluteConstraints x="380" y="170" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -204,7 +204,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="380" y="170" width="-1" height="-1"/>
+              <AbsoluteConstraints x="380" y="200" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -247,7 +247,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="460" y="140" width="580" height="-1"/>
+              <AbsoluteConstraints x="460" y="170" width="580" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -257,7 +257,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="460" y="170" width="580" height="-1"/>
+              <AbsoluteConstraints x="460" y="200" width="580" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -273,7 +273,7 @@
           </Events>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="670" y="480" width="380" height="60"/>
+              <AbsoluteConstraints x="670" y="510" width="380" height="60"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -286,7 +286,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="30" y="370" width="-1" height="-1"/>
+              <AbsoluteConstraints x="30" y="400" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -299,7 +299,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="350" y="370" width="-1" height="-1"/>
+              <AbsoluteConstraints x="350" y="400" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -309,7 +309,7 @@
           </AuxValues>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="30" y="400" width="290" height="140"/>
+              <AbsoluteConstraints x="30" y="430" width="290" height="140"/>
             </Constraint>
           </Constraints>
 
@@ -333,7 +333,7 @@
           </AuxValues>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="350" y="400" width="300" height="140"/>
+              <AbsoluteConstraints x="350" y="430" width="300" height="140"/>
             </Constraint>
           </Constraints>
 
@@ -357,7 +357,7 @@
           </AuxValues>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="670" y="220" width="380" height="250"/>
+              <AbsoluteConstraints x="670" y="250" width="380" height="230"/>
             </Constraint>
           </Constraints>
 
@@ -391,7 +391,7 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="450" y="370" width="200" height="20"/>
+              <AbsoluteConstraints x="450" y="400" width="200" height="20"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -401,7 +401,27 @@
           </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="110" y="370" width="200" height="20"/>
+              <AbsoluteConstraints x="110" y="400" width="200" height="20"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel89">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Publicaci&#xf3;n:"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="380" y="140" width="-1" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="lbFechaPublicacion">
+          <Properties>
+            <Property name="text" type="java.lang.String" value=" "/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="460" y="140" width="580" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
diff --git a/UyTube_aplicacion/src/Presentacion/Video/frmConsultaVideo.java b/UyTube_aplicacion/src/Presentacion/Video/frmConsultaVideo.java
index c834c7a36b1ea4b65cc7f50ba1469d8d34256504..a7dc3e2d7452cc5ab41acf7647f71e7514707ba8 100644
--- a/UyTube_aplicacion/src/Presentacion/Video/frmConsultaVideo.java
+++ b/UyTube_aplicacion/src/Presentacion/Video/frmConsultaVideo.java
@@ -121,6 +121,8 @@ public class frmConsultaVideo extends javax.swing.JDialog {
         jLabel99 = new javax.swing.JLabel();
         lbCantDisLikes = new javax.swing.JLabel();
         lbCantLikes = new javax.swing.JLabel();
+        jLabel89 = new javax.swing.JLabel();
+        lbFechaPublicacion = new javax.swing.JLabel();
 
         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
         setTitle("Consultar video");
@@ -142,7 +144,7 @@ public class frmConsultaVideo extends javax.swing.JDialog {
 
         jLabel82.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
         jLabel82.setText("Comentarios:");
-        jPanel15.add(jLabel82, new org.netbeans.lib.awtextra.AbsoluteConstraints(670, 190, -1, -1));
+        jPanel15.add(jLabel82, new org.netbeans.lib.awtextra.AbsoluteConstraints(670, 220, -1, -1));
 
         lstVideoUsuario.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
             public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
@@ -163,7 +165,7 @@ public class frmConsultaVideo extends javax.swing.JDialog {
         jPanel15.add(jLabel85, new org.netbeans.lib.awtextra.AbsoluteConstraints(380, 110, -1, -1));
 
         jLabel86.setText("Descripción:");
-        jPanel15.add(jLabel86, new org.netbeans.lib.awtextra.AbsoluteConstraints(380, 200, -1, -1));
+        jPanel15.add(jLabel86, new org.netbeans.lib.awtextra.AbsoluteConstraints(380, 230, -1, -1));
 
         txtDescripcion.setEditable(false);
         txtDescripcion.setColumns(20);
@@ -171,13 +173,13 @@ public class frmConsultaVideo extends javax.swing.JDialog {
         txtDescripcion.setRows(5);
         jScrollPane24.setViewportView(txtDescripcion);
 
-        jPanel15.add(jScrollPane24, new org.netbeans.lib.awtextra.AbsoluteConstraints(380, 220, 270, 130));
+        jPanel15.add(jScrollPane24, new org.netbeans.lib.awtextra.AbsoluteConstraints(380, 250, 270, 130));
 
         jLabel87.setText("Privacidad:");
-        jPanel15.add(jLabel87, new org.netbeans.lib.awtextra.AbsoluteConstraints(380, 140, -1, -1));
+        jPanel15.add(jLabel87, new org.netbeans.lib.awtextra.AbsoluteConstraints(380, 170, -1, -1));
 
         jLabel88.setText("Categoria:");
-        jPanel15.add(jLabel88, new org.netbeans.lib.awtextra.AbsoluteConstraints(380, 170, -1, -1));
+        jPanel15.add(jLabel88, new org.netbeans.lib.awtextra.AbsoluteConstraints(380, 200, -1, -1));
 
         lbNombre.setText(" ");
         jPanel15.add(lbNombre, new org.netbeans.lib.awtextra.AbsoluteConstraints(460, 50, 580, -1));
@@ -194,10 +196,10 @@ public class frmConsultaVideo extends javax.swing.JDialog {
         jPanel15.add(lbUrl, new org.netbeans.lib.awtextra.AbsoluteConstraints(460, 110, 580, -1));
 
         lbPrivacidad.setText(" ");
-        jPanel15.add(lbPrivacidad, new org.netbeans.lib.awtextra.AbsoluteConstraints(460, 140, 580, -1));
+        jPanel15.add(lbPrivacidad, new org.netbeans.lib.awtextra.AbsoluteConstraints(460, 170, 580, -1));
 
         lbCategoria.setText(" ");
-        jPanel15.add(lbCategoria, new org.netbeans.lib.awtextra.AbsoluteConstraints(460, 170, 580, -1));
+        jPanel15.add(lbCategoria, new org.netbeans.lib.awtextra.AbsoluteConstraints(460, 200, 580, -1));
 
         btnAceptar.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
         btnAceptar.setText("Aceptar");
@@ -206,39 +208,45 @@ public class frmConsultaVideo extends javax.swing.JDialog {
                 btnAceptarActionPerformed(evt);
             }
         });
-        jPanel15.add(btnAceptar, new org.netbeans.lib.awtextra.AbsoluteConstraints(670, 480, 380, 60));
+        jPanel15.add(btnAceptar, new org.netbeans.lib.awtextra.AbsoluteConstraints(670, 510, 380, 60));
 
         jLabel94.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
         jLabel94.setText("Les gusto:");
-        jPanel15.add(jLabel94, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 370, -1, -1));
+        jPanel15.add(jLabel94, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 400, -1, -1));
 
         jLabel95.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
         jLabel95.setText("No les gusto:");
-        jPanel15.add(jLabel95, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 370, -1, -1));
+        jPanel15.add(jLabel95, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 400, -1, -1));
 
         jScrollPane25.setViewportView(lstLike);
 
-        jPanel15.add(jScrollPane25, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 400, 290, 140));
+        jPanel15.add(jScrollPane25, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 430, 290, 140));
 
         jScrollPane26.setViewportView(lstDislike);
 
-        jPanel15.add(jScrollPane26, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 400, 300, 140));
+        jPanel15.add(jScrollPane26, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 430, 300, 140));
 
         javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("root");
         treeComentarios.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
         jScrollPane27.setViewportView(treeComentarios);
 
-        jPanel15.add(jScrollPane27, new org.netbeans.lib.awtextra.AbsoluteConstraints(670, 220, 380, 250));
+        jPanel15.add(jScrollPane27, new org.netbeans.lib.awtextra.AbsoluteConstraints(670, 250, 380, 230));
 
         jLabel99.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
         jLabel99.setText("Video del Usuario:");
         jPanel15.add(jLabel99, new org.netbeans.lib.awtextra.AbsoluteConstraints(190, 20, -1, -1));
 
         lbCantDisLikes.setText(" ");
-        jPanel15.add(lbCantDisLikes, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 370, 200, 20));
+        jPanel15.add(lbCantDisLikes, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 400, 200, 20));
 
         lbCantLikes.setText(" ");
-        jPanel15.add(lbCantLikes, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 370, 200, 20));
+        jPanel15.add(lbCantLikes, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 400, 200, 20));
+
+        jLabel89.setText("Publicación:");
+        jPanel15.add(jLabel89, new org.netbeans.lib.awtextra.AbsoluteConstraints(380, 140, -1, -1));
+
+        lbFechaPublicacion.setText(" ");
+        jPanel15.add(lbFechaPublicacion, new org.netbeans.lib.awtextra.AbsoluteConstraints(460, 140, 580, -1));
 
         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
         getContentPane().setLayout(layout);
@@ -250,9 +258,9 @@ public class frmConsultaVideo extends javax.swing.JDialog {
         );
         layout.setVerticalGroup(
             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-            .addGap(0, 574, Short.MAX_VALUE)
+            .addGap(0, 592, Short.MAX_VALUE)
             .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                .addComponent(jPanel15, javax.swing.GroupLayout.DEFAULT_SIZE, 574, Short.MAX_VALUE))
+                .addComponent(jPanel15, javax.swing.GroupLayout.DEFAULT_SIZE, 592, Short.MAX_VALUE))
         );
 
         pack();
@@ -349,6 +357,7 @@ public class frmConsultaVideo extends javax.swing.JDialog {
         txtDescripcion.setText(v.getDescripcion());
         lbCantLikes.setText(String.valueOf(v.getCantLikes()));
         lbCantDisLikes.setText(String.valueOf(v.getCantDisLikes()));
+        lbFechaPublicacion.setText(v.getFechaPublicacion().toString());
     }
     private void mostrarListasDrValoraciones(ArrayList<DtValoracion> lVal){
         DefaultListModel modeloLikes = new DefaultListModel();
@@ -444,6 +453,7 @@ public class frmConsultaVideo extends javax.swing.JDialog {
         txtDescripcion.setText("");
         lbCantLikes.setText("");
         lbCantDisLikes.setText("");
+        lbFechaPublicacion.setText("");
         // limpieza de listas
         lstLike.setModel(new DefaultListModel());
         lstDislike.setModel(new DefaultListModel());
@@ -467,6 +477,7 @@ public class frmConsultaVideo extends javax.swing.JDialog {
     private javax.swing.JLabel jLabel86;
     private javax.swing.JLabel jLabel87;
     private javax.swing.JLabel jLabel88;
+    private javax.swing.JLabel jLabel89;
     private javax.swing.JLabel jLabel94;
     private javax.swing.JLabel jLabel95;
     private javax.swing.JLabel jLabel99;
@@ -481,6 +492,7 @@ public class frmConsultaVideo extends javax.swing.JDialog {
     private javax.swing.JLabel lbCantLikes;
     private javax.swing.JLabel lbCategoria;
     private javax.swing.JLabel lbDuracion;
+    private javax.swing.JLabel lbFechaPublicacion;
     private javax.swing.JLabel lbNombre;
     private javax.swing.JLabel lbPrivacidad;
     private javax.swing.JLabel lbUrl;
diff --git a/UyTube_aplicacion/src/Presentacion/Video/frmModificarVideo.form b/UyTube_aplicacion/src/Presentacion/Video/frmModificarVideo.form
index 7830ebf17e269c9fd5bc760759c9735326941763..e65d606562c6d6a61542e46ff422e80febfbf2d9 100644
--- a/UyTube_aplicacion/src/Presentacion/Video/frmModificarVideo.form
+++ b/UyTube_aplicacion/src/Presentacion/Video/frmModificarVideo.form
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
   <NonVisualComponents>
     <Component class="javax.swing.ButtonGroup" name="buttonGroup1">
     </Component>
@@ -289,9 +289,6 @@
             </Property>
             <Property name="text" type="java.lang.String" value="Privado"/>
           </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="rbPrivadoActionPerformed"/>
-          </Events>
           <AuxValues>
             <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="9"/>
           </AuxValues>
@@ -302,6 +299,11 @@
           </Constraints>
         </Component>
         <Component class="javax.swing.JSpinner" name="spHora">
+          <Properties>
+            <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
+              <SpinnerModel initial="0" maximum="15" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
+            </Property>
+          </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
               <AbsoluteConstraints x="530" y="100" width="60" height="-1"/>
@@ -319,6 +321,11 @@
           </Constraints>
         </Component>
         <Component class="javax.swing.JSpinner" name="spMinuto">
+          <Properties>
+            <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
+              <SpinnerModel initial="0" maximum="59" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
+            </Property>
+          </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
               <AbsoluteConstraints x="600" y="100" width="50" height="-1"/>
@@ -336,6 +343,11 @@
           </Constraints>
         </Component>
         <Component class="javax.swing.JSpinner" name="spSegundos">
+          <Properties>
+            <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
+              <SpinnerModel initial="0" maximum="59" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
+            </Property>
+          </Properties>
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
               <AbsoluteConstraints x="660" y="100" width="50" height="-1"/>
@@ -376,10 +388,10 @@
             </Component>
           </SubComponents>
         </Container>
-        <Component class="com.toedter.calendar.JDateChooser" name="jDateChooser1">
+        <Component class="com.toedter.calendar.JDateChooser" name="dcFechaPublicacion">
           <Constraints>
             <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-              <AbsoluteConstraints x="620" y="340" width="-1" height="-1"/>
+              <AbsoluteConstraints x="564" y="340" width="180" height="30"/>
             </Constraint>
           </Constraints>
         </Component>
diff --git a/UyTube_aplicacion/src/Presentacion/Video/frmModificarVideo.java b/UyTube_aplicacion/src/Presentacion/Video/frmModificarVideo.java
index 6e57e4f37462cf11fa5423225b02c89bb0a46228..0bd789a7cdcdf8ec560947d727aa5f46a4b2c9f9 100644
--- a/UyTube_aplicacion/src/Presentacion/Video/frmModificarVideo.java
+++ b/UyTube_aplicacion/src/Presentacion/Video/frmModificarVideo.java
@@ -1,4 +1,3 @@
-
 package Presentacion.Video;
 
 import Logica.DataType.DtCanal;
@@ -12,32 +11,33 @@ import Presentacion.DatosDePrueba;
 import java.sql.Date;
 import java.sql.Time;
 import java.util.ArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import javax.swing.DefaultListModel;
 import javax.swing.JFileChooser;
 import javax.swing.JOptionPane;
 import javax.swing.ListModel;
 
 public class frmModificarVideo extends javax.swing.JDialog {
+
     IAdmin sys;
     DefaultListModel s = new DefaultListModel();
     boolean liberarMemoria;
     String validarNombre;
+
     public frmModificarVideo(java.awt.Frame parent, boolean modal) {
         super(parent, modal);
         initComponents();
         this.setLocationRelativeTo(null);
         liberarMemoria = true;
-        
-     
-        
-        
+
         try {
             // obtiene la instancia de sistema
             sys = Fabrica.getInstancia().getIAdmin();
 
             // lista usuarios en el JList
             listarUsuarios(sys.listarUsuarios());
-            
+
         } catch (Exception e) {
             JOptionPane.showMessageDialog(null, "Ha ocurrido un error", "Error", JOptionPane.ERROR_MESSAGE);
         }
@@ -77,7 +77,7 @@ public class frmModificarVideo extends javax.swing.JDialog {
         jLabel146 = new javax.swing.JLabel();
         jScrollPane19 = new javax.swing.JScrollPane();
         lstCategorias = new javax.swing.JList<>();
-        jDateChooser1 = new com.toedter.calendar.JDateChooser();
+        dcFechaPublicacion = new com.toedter.calendar.JDateChooser();
 
         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
         setTitle("Modificar video");
@@ -164,20 +164,21 @@ public class frmModificarVideo extends javax.swing.JDialog {
         buttonGroup1.add(rbPrivado);
         rbPrivado.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
         rbPrivado.setText("Privado");
-        rbPrivado.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                rbPrivadoActionPerformed(evt);
-            }
-        });
         jPanel14.add(rbPrivado, new org.netbeans.lib.awtextra.AbsoluteConstraints(640, 390, -1, -1));
+
+        spHora.setModel(new javax.swing.SpinnerNumberModel(0, 0, 15, 1));
         jPanel14.add(spHora, new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 100, 60, -1));
 
         jLabel144.setText("Horas");
         jPanel14.add(jLabel144, new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 80, -1, -1));
+
+        spMinuto.setModel(new javax.swing.SpinnerNumberModel(0, 0, 59, 1));
         jPanel14.add(spMinuto, new org.netbeans.lib.awtextra.AbsoluteConstraints(600, 100, 50, -1));
 
         jLabel145.setText("Minutos");
         jPanel14.add(jLabel145, new org.netbeans.lib.awtextra.AbsoluteConstraints(600, 80, -1, -1));
+
+        spSegundos.setModel(new javax.swing.SpinnerNumberModel(0, 0, 59, 1));
         jPanel14.add(spSegundos, new org.netbeans.lib.awtextra.AbsoluteConstraints(660, 100, 50, -1));
 
         jLabel146.setText("Segundos");
@@ -186,7 +187,7 @@ public class frmModificarVideo extends javax.swing.JDialog {
         jScrollPane19.setViewportView(lstCategorias);
 
         jPanel14.add(jScrollPane19, new org.netbeans.lib.awtextra.AbsoluteConstraints(770, 50, 180, 400));
-        jPanel14.add(jDateChooser1, new org.netbeans.lib.awtextra.AbsoluteConstraints(620, 340, -1, -1));
+        jPanel14.add(dcFechaPublicacion, new org.netbeans.lib.awtextra.AbsoluteConstraints(564, 340, 180, 30));
 
         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
         getContentPane().setLayout(layout);
@@ -213,15 +214,14 @@ public frmModificarVideo(javax.swing.JDialog parent, boolean modal, String nickn
         try {
             // obtiene la instancia de sistema
             sys = Fabrica.getInstancia().getIAdmin();
-            
+
             // Limpio la ventana
-           // limpiarElementosDeVentana();
-            
+            // limpiarElementosDeVentana();
             // lista usuarios y categorias en JList
             listarUsuarios(sys.listarUsuarios());
             lstDuenioVideo.setSelectedValue(nickname, true);
             lstDuenioVideo.setEnabled(false);
-            
+
             // Selecciono el usuario en la lista de usuarios
             // deshabilito la lista de usuarios para que no lo cambien
         } catch (Exception e) {
@@ -230,8 +230,7 @@ public frmModificarVideo(javax.swing.JDialog parent, boolean modal, String nickn
         }
     }
 
-    
- private void habilitarModificar() {
+    private void habilitarModificar() {
         if (!lstVideoUsuario.isSelectionEmpty()) {
             btnModificar.setEnabled(true);
         } else {
@@ -239,7 +238,7 @@ public frmModificarVideo(javax.swing.JDialog parent, boolean modal, String nickn
         }
     }
 
- private boolean existeVideo(String nombre) {
+    private boolean existeVideo(String nombre) {
         ListModel<String> lst = lstVideoUsuario.getModel();
         for (int i = 0; i < lst.getSize(); i++) {
             if (lst.getElementAt(i).equals(nombre)) {
@@ -250,142 +249,147 @@ public frmModificarVideo(javax.swing.JDialog parent, boolean modal, String nickn
         return false;
 
     }
-    private void listarUsuarios(ArrayList<DtUsuario> ListaUsuarios){
+
+    private void listarUsuarios(ArrayList<DtUsuario> ListaUsuarios) {
         DefaultListModel modelo = new DefaultListModel();
         for (DtUsuario it : ListaUsuarios) {
             modelo.addElement(it.getNickname());
         }
         lstDuenioVideo.setModel(modelo);
-        
+
     }
-private void listarCategorias(ArrayList<String> ListaCategorias){
+
+    private void listarCategorias(ArrayList<String> ListaCategorias) {
         DefaultListModel modelo2 = new DefaultListModel();
-        for(int i = 0; i<sys.listarCategorias().size(); i++){
+        for (int i = 0; i < sys.listarCategorias().size(); i++) {
             modelo2.add(i, sys.listarCategorias().get(i));
         }
-            lstCategorias.setModel(modelo2);
+        lstCategorias.setModel(modelo2);
     }
-        
-    
-private void listarVideos(ArrayList<DtVideo> ListaVideos){
+
+    private void listarVideos(ArrayList<DtVideo> ListaVideos) {
         DefaultListModel modelo1 = new DefaultListModel();
         for (DtVideo it : ListaVideos) {
             modelo1.addElement(it.getNombre());
         }
         lstVideoUsuario.setModel(modelo1);
-        
+
     }
-private void cargarDatosDeVideo(DtVideo v){
-        int hora,minuto,segundo;
+
+    private void cargarDatosDeVideo(DtVideo v) {
+        int hora, minuto, segundo;
         txtNombre.setText(v.getNombre());
         txtDescripcion.setText(v.getDescripcion());
         txtURL.setText(v.getUrlVideoOriginal());
-        jDateChooser1.setDate(v.getFechaPublicacion());
-        
+        dcFechaPublicacion.setDate(v.getFechaPublicacion());
+
         spHora.setValue(v.getDuracion().getHours());
         spMinuto.setValue(v.getDuracion().getMinutes());
         spSegundos.setValue(v.getDuracion().getSeconds());
-        
-        if (v.getPrivacidad() == Privacidad.PUBLICO){
+
+        if (v.getPrivacidad() == Privacidad.PUBLICO) {
             rbPublico.setSelected(true);
-        }else{
+        } else {
             rbPrivado.setSelected(true);
         }
-        
-        lstCategorias.setSelectedValue(v.getCategoria(), true);
 
-}
+        lstCategorias.setSelectedValue(v.getCategoria(), true);
 
+    }
 
 
     private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnModificarActionPerformed
         try {
             if (lstVideoUsuario.isSelectionEmpty()) {
-                JOptionPane.showMessageDialog(null, "Seleccione un video para modificar", "Error", JOptionPane.ERROR_MESSAGE);
+                JOptionPane.showMessageDialog(null, "Seleccione un video para modificar", "Error", JOptionPane.WARNING_MESSAGE);
             } else {
                 if (txtNombre.getText().isEmpty()) {
-                    JOptionPane.showMessageDialog(null, "El nombre de video no puede ser vacío", "Error", JOptionPane.ERROR_MESSAGE);
+                    JOptionPane.showMessageDialog(null, "El nombre del video no puede ser vacío", "Error", JOptionPane.WARNING_MESSAGE);
                 } else {
-                    if (lstCategorias.isSelectionEmpty()) {
-                        JOptionPane.showMessageDialog(null, "Seleccione una categoría", "Error", JOptionPane.ERROR_MESSAGE);
+                    if (txtNombre.getText().length() > 100) {
+                        JOptionPane.showMessageDialog(null, "El nombre del video no puede tener mas de 100 caracteres", "Error", JOptionPane.WARNING_MESSAGE);
                     } else {
-                        if (txtURL.getText().isEmpty()) {
-                            JOptionPane.showMessageDialog(null, "La URL del video no puede ser vacía", "Error", JOptionPane.ERROR_MESSAGE);
+                        if (lstCategorias.isSelectionEmpty()) {
+                            JOptionPane.showMessageDialog(null, "Seleccione una categoría", "Error", JOptionPane.WARNING_MESSAGE);
                         } else {
-                            if (!txtNombre.getText().equals(validarNombre)) {
-                                if (existeVideo(txtNombre.getText())) {
-                                    JOptionPane.showMessageDialog(null, "Ya existe este video en la lista seleccionada", "Error", JOptionPane.ERROR_MESSAGE);
-                                    return;
-                                }
-                            }
-                            
-                            if (spHora.getValue().toString().equals("0") && spMinuto.getValue().toString().equals("0") && spSegundos.getValue().toString().equals("0")) {
-                            JOptionPane.showMessageDialog(null, "La duración del video no puede ser 0", "Error", JOptionPane.ERROR_MESSAGE);
-                        } else {
-                            
-
-                            int hora = (Integer) spHora.getValue();
-                            int minuto = (Integer) spMinuto.getValue();
-                            int segundo = (Integer) spSegundos.getValue();
-                            Privacidad priv = Privacidad.PRIVADO;
-                            if (rbPrivado.isSelected() && !(rbPublico.isSelected())) {
-                                priv = Privacidad.PRIVADO;
-                            } else if (rbPublico.isSelected() && !(rbPrivado.isSelected())) {
-                                priv = Privacidad.PUBLICO;
+                            if (txtURL.getText().isEmpty()) {
+                                JOptionPane.showMessageDialog(null, "La URL del video no puede ser vacía", "Error", JOptionPane.WARNING_MESSAGE);
                             } else {
-                                JOptionPane.showMessageDialog(null, "Seleccione privacidad del video", "Error", JOptionPane.ERROR_MESSAGE);
-                            }
-                            java.sql.Date fecha = null;
-                            if (jDateChooser1.getDate() != null) {
-                                java.util.Date utilDate = jDateChooser1.getDate();
-                                fecha = new java.sql.Date(utilDate.getTime());
-                            }
-                            DtVideo video = new DtVideo(WIDTH, txtNombre.getText(), txtDescripcion.getText(), new Time(hora, minuto, segundo), fecha, txtURL.getText(), priv, lstCategorias.getSelectedValue(), ALLBITS, PROPERTIES);
-                            if (sys.obtenerCanalDeUsuario().getPrivacidad() == Privacidad.PRIVADO && rbPublico.isSelected()) {
-                                JOptionPane.showMessageDialog(null, "No es posible hacer público un video si su canal es privado", "Error", JOptionPane.ERROR_MESSAGE);
-                                return;
-                            }
-                            sys.modificarVideo(video);
-
-                            if (liberarMemoria) {
-                                sys.liberarMemoriaUsuario();
+                                if (! validarFormatoURL(txtURL.getText())){
+                                    JOptionPane.showMessageDialog(null, "La URL del video no es válida", "Error", JOptionPane.WARNING_MESSAGE);
+                                } else {
+                                    if (dcFechaPublicacion.getDate() == null) {
+                                        JOptionPane.showMessageDialog(null, "Seleccione una fecha de publicacion", "Error", JOptionPane.WARNING_MESSAGE);
+                                    } else {
+                                        if (!txtNombre.getText().equals(validarNombre)) {
+                                            if (existeVideo(txtNombre.getText())) {
+                                                JOptionPane.showMessageDialog(null, "Ya existe este video en la lista seleccionada", "Error", JOptionPane.WARNING_MESSAGE);
+                                                return;
+                                            }
+                                        }
+
+                                        int hora = (Integer) spHora.getValue();
+                                        int minuto = (Integer) spMinuto.getValue();
+                                        int segundo = (Integer) spSegundos.getValue();
+                                        Privacidad priv = Privacidad.PRIVADO;
+                                        if (rbPrivado.isSelected() && !(rbPublico.isSelected())) {
+                                            priv = Privacidad.PRIVADO;
+                                        } else if (rbPublico.isSelected() && !(rbPrivado.isSelected())) {
+                                            priv = Privacidad.PUBLICO;
+                                        } else {
+                                            JOptionPane.showMessageDialog(null, "Seleccione privacidad del video", "Error", JOptionPane.WARNING_MESSAGE);
+                                        }
+                                        java.sql.Date fecha = null;
+                                        if (dcFechaPublicacion.getDate() != null) {
+                                            java.util.Date utilDate = dcFechaPublicacion.getDate();
+                                            fecha = new java.sql.Date(utilDate.getTime());
+                                        }
+                                        DtVideo video = new DtVideo(WIDTH, txtNombre.getText(), txtDescripcion.getText(), new Time(hora, minuto, segundo), fecha, txtURL.getText(), priv, lstCategorias.getSelectedValue(), ALLBITS, PROPERTIES);
+                                        if (sys.obtenerCanalDeUsuario().getPrivacidad() == Privacidad.PRIVADO && rbPublico.isSelected()) {
+                                            JOptionPane.showMessageDialog(null, "No es posible hacer público un video si su canal es privado", "Error", JOptionPane.WARNING_MESSAGE);
+                                        }
+                                        sys.modificarVideo(video);
+
+                                        if (liberarMemoria) {
+                                            sys.liberarMemoriaUsuario();
+                                        }
+                                        sys.liberarMemoriaVideo();
+
+                                        JOptionPane.showMessageDialog(null, "Se han efectuado los cambios", "OK", JOptionPane.INFORMATION_MESSAGE);
+                                        dispose();
+                                    }
+                                }
                             }
-                            sys.liberarMemoriaVideo();
-
-                            JOptionPane.showMessageDialog(null, "Se han efectuado los cambios", "OK", JOptionPane.INFORMATION_MESSAGE);
-                            dispose();
                         }
                     }
                 }
             }
-        }}
-                
-                
-    
-
-catch (Exception e) {
+        } catch (Exception e) {
             JOptionPane.showMessageDialog(null, "Ha ocurrido un error\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
 
         }
     }//GEN-LAST:event_btnModificarActionPerformed
 
     private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
-            try{
-                if(liberarMemoria){
-                    sys.liberarMemoriaUsuario();
-                }
-                    sys.liberarMemoriaVideo();
-                    dispose();
-                } catch (Exception e) {
+        try {
+            if (liberarMemoria) {
+                sys.liberarMemoriaUsuario();
+            }
+            sys.liberarMemoriaVideo();
+            dispose();
+        } catch (Exception e) {
             JOptionPane.showMessageDialog(null, "Ha ocurrido un error\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
 
-        
-            }
+        }
     }//GEN-LAST:event_btnCancelarActionPerformed
 
     private void lstDuenioVideoValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_lstDuenioVideoValueChanged
-        if (evt.getValueIsAdjusting()) return;
-        if (lstDuenioVideo.getSelectedIndex()<0) return;
+        if (evt.getValueIsAdjusting()) {
+            return;
+        }
+        if (lstDuenioVideo.getSelectedIndex() < 0) {
+            return;
+        }
         txtDescripcion.setText("");
         txtNombre.setText("");
         txtURL.setText("");
@@ -396,39 +400,49 @@ catch (Exception e) {
         String nick = lstDuenioVideo.getSelectedValue();
         sys.seleccionarUsuario(nick);
         listarVideos(sys.listarVideosDeUsuario());
-                    habilitarModificar();
-
+        habilitarModificar();
+        buttonGroup1.clearSelection();
+        dcFechaPublicacion.setDate(null);
     }//GEN-LAST:event_lstDuenioVideoValueChanged
 
     private void lstVideoUsuarioValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_lstVideoUsuarioValueChanged
-        if (evt.getValueIsAdjusting()) return;
-        if (lstVideoUsuario.getSelectedIndex()<0) return;
+        if (evt.getValueIsAdjusting()) {
+            return;
+        }
+        if (lstVideoUsuario.getSelectedIndex() < 0) {
+            return;
+        }
 
         try {
-                        habilitarModificar();
+            habilitarModificar();
             String nombre = lstVideoUsuario.getSelectedValue();
             ArrayList<DtVideo> arr = sys.listarVideosDeUsuario();
             int idVideo = arr.get(lstVideoUsuario.getSelectedIndex()).getId();
             DtVideo dtv = sys.seleccionarVideo(idVideo);
-            validarNombre=dtv.getNombre();
-            
+            validarNombre = dtv.getNombre();
+
             listarCategorias(sys.listarCategorias());
             cargarDatosDeVideo(dtv);
-        }catch (Exception e) {
+        } catch (Exception e) {
             JOptionPane.showMessageDialog(null, "Ha ocurrido un error", "Error", JOptionPane.ERROR_MESSAGE);
 
         }
     }//GEN-LAST:event_lstVideoUsuarioValueChanged
 
-    private void rbPrivadoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbPrivadoActionPerformed
-        // TODO add your handling code heres:
-    }//GEN-LAST:event_rbPrivadoActionPerformed
-
+    private boolean validarFormatoURL(String _url){
+       Pattern patronURL = Pattern.compile("^((((https?|ftps?|gopher|telnet|nntp)://)|(mailto:|news:))(%[0-9A-Fa-f]{2}|[-()_.!~*’;/?:@&=+$, A-Za-z0-9])+)([).!’;/?:, ][[:blank:]])?$");
+        Matcher mather = patronURL.matcher(_url); 
+        if (mather.find() == true) {
+            return true;
+        } 
+        return false;        
+    }
+    
     // Variables declaration - do not modify//GEN-BEGIN:variables
     private javax.swing.JButton btnCancelar;
     private javax.swing.JButton btnModificar;
     private javax.swing.ButtonGroup buttonGroup1;
-    private com.toedter.calendar.JDateChooser jDateChooser1;
+    private com.toedter.calendar.JDateChooser dcFechaPublicacion;
     private javax.swing.JLabel jLabel144;
     private javax.swing.JLabel jLabel145;
     private javax.swing.JLabel jLabel146;
diff --git a/UyTube_aplicacion/src/Presentacion/Video/frmValorarVideo.java b/UyTube_aplicacion/src/Presentacion/Video/frmValorarVideo.java
index 4dba7aede62e2a7e96a85795e8f19ece7aa65a70..98b5ea4a625ec69408b99e834f66dd4d3f5a76f8 100644
--- a/UyTube_aplicacion/src/Presentacion/Video/frmValorarVideo.java
+++ b/UyTube_aplicacion/src/Presentacion/Video/frmValorarVideo.java
@@ -7,7 +7,6 @@ import Logica.DataType.DtVideo;
 import Logica.Enumerados.TipoValoracion;
 import Logica.Fabrica;
 import Logica.Interfaces.IAdmin;
-import java.util.List;
 import javax.swing.DefaultListModel;
 import javax.swing.JOptionPane;
 
@@ -214,6 +213,7 @@ public class frmValorarVideo extends javax.swing.JDialog {
             return;
         }
         if (lstVideoAValorar.getSelectedIndex() < 0) {
+            mostrarValoracionEnRadioButtons();
             return;
         }
 
@@ -250,6 +250,25 @@ public class frmValorarVideo extends javax.swing.JDialog {
 
     private void btnValorarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnValorarActionPerformed
         // Clic en boton Valorar
+        
+        // validaciones
+        if (lstUsuarioValorado.getSelectedIndex() < 0) {
+            JOptionPane.showMessageDialog(null, "Debe seleccionar un usuario propietario del video", "¡Atención!", JOptionPane.WARNING_MESSAGE);
+            return;
+        }
+        if (lstVideoAValorar.getSelectedIndex() < 0) {
+            JOptionPane.showMessageDialog(null, "Debe seleccionar un video", "¡Atención!", JOptionPane.WARNING_MESSAGE);
+            return;
+        }
+        if (lstUsuarioValoradoR.getSelectedIndex() < 0) {
+            JOptionPane.showMessageDialog(null, "Debe seleccionar el usuario que realizará la valoración", "¡Atención!", JOptionPane.WARNING_MESSAGE);
+            return;
+        }
+        if ( ! (rbMeGusta.isSelected() || rbNoMeGusta.isSelected())) {
+            JOptionPane.showMessageDialog(null, "Debe seleccionar la opcion de valoración", "¡Atención!", JOptionPane.WARNING_MESSAGE);
+            return;
+        }
+        
         try {
             String nick;
             int indiceSeleccionado;
@@ -277,7 +296,7 @@ public class frmValorarVideo extends javax.swing.JDialog {
             sys.liberarMemoriaVideo();
             sys.liberarMemoriaUsuarioActual();
             sys.liberarMemoriaUsuario();
-            JOptionPane.showMessageDialog(null, "Usuario valorado exitosamente\n", "Informacion", JOptionPane.INFORMATION_MESSAGE);
+            JOptionPane.showMessageDialog(null, "Video valorado exitosamente\n", "Informacion", JOptionPane.INFORMATION_MESSAGE);
             dispose();
         } catch (Exception e) {
             JOptionPane.showMessageDialog(null, "Ha ocurrido un error\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
@@ -321,6 +340,7 @@ public class frmValorarVideo extends javax.swing.JDialog {
                 buttonGroup1.clearSelection();
                 rbMeGusta.setEnabled(false);
                 rbNoMeGusta.setEnabled(false);
+                btnValorar.setEnabled(false);
                 return;
             }
             rbMeGusta.setEnabled(true);
@@ -330,6 +350,7 @@ public class frmValorarVideo extends javax.swing.JDialog {
 
             if (dtv == null) {
                 buttonGroup1.clearSelection();
+                btnValorar.setEnabled(false);
                 //rbMeGusta.setSelected(false);
                 //rbNoMeGusta.setSelected(false);
             } else {