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..d33965edcf7f816f7274a2602d97323f18aaeb86 100644
--- a/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.form
+++ b/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.form
@@ -93,7 +93,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;"/>
@@ -154,6 +154,7 @@
               </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;"/>
@@ -197,6 +198,7 @@
               </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;"/>
diff --git a/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.java b/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.java
index 424d32bb0e9fbda67c1fa31765d99699969a39b5..97a012978d136a52e935ff666c9a90b3a150686e 100644
--- a/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.java
+++ b/UyTube_aplicacion/src/Presentacion/ListaDeReproduccion/frmQuitarVideoDeListaDeReproduccion.java
@@ -71,7 +71,6 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
             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);                 
         }
@@ -121,9 +120,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);
@@ -150,6 +149,11 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
                 lstListasRepMouseClicked(evt);
             }
         });
+        lstListasRep.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
+                lstListasRepValueChanged(evt);
+            }
+        });
         jScrollPane44.setViewportView(lstListasRep);
 
         jPanel22.add(jScrollPane44, new org.netbeans.lib.awtextra.AbsoluteConstraints(220, 30, 200, 300));
@@ -164,6 +168,11 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
                 lstVideosMouseClicked(evt);
             }
         });
+        lstVideos.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
+                lstVideosValueChanged(evt);
+            }
+        });
         jScrollPane45.setViewportView(lstVideos);
 
         jPanel22.add(jScrollPane45, new org.netbeans.lib.awtextra.AbsoluteConstraints(440, 30, 320, 300));
@@ -224,8 +233,18 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
         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 lstVideosMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lstVideosMouseClicked
+        
+    }//GEN-LAST:event_lstVideosMouseClicked
+
+    private void formWindowDeactivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowDeactivated
+        
+    }//GEN-LAST:event_formWindowDeactivated
+
+    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
@@ -235,10 +254,11 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
         } catch (Exception e) {
             JOptionPane.showMessageDialog(null, (String) 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        
@@ -246,17 +266,18 @@ public class frmQuitarVideoDeListaDeReproduccion extends javax.swing.JDialog {
         } catch (Exception e) {
             JOptionPane.showMessageDialog(null, (String) 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
+    }//GEN-LAST:event_lstVideosValueChanged
 
-    private void formWindowDeactivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowDeactivated
-        
-    }//GEN-LAST:event_formWindowDeactivated
+    private void lstListasRepMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lstListasRepMouseClicked
+
+    }//GEN-LAST:event_lstListasRepMouseClicked
 
     // 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/Video/frmAltaVideo.form b/UyTube_aplicacion/src/Presentacion/Video/frmAltaVideo.form
index e7b19bb519654413bf1adc0306e23ad5fb8ab7da..355438b05dc129bf4c3baf473e68b940be663725 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"/>
@@ -91,7 +90,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 +124,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 +134,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="230" width="-1" height="-1"/>
             </Constraint>
           </Constraints>
         </Component>
@@ -181,7 +180,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;"/>
@@ -203,6 +202,9 @@
           </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 +212,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 +227,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="250" width="330" height="120"/>
             </Constraint>
           </Constraints>
 
@@ -269,6 +274,14 @@
           </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="60" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="focusGained" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="spSegundosFocusGained"/>
+          </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"/>
@@ -276,6 +289,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="5" 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="420" y="120" width="60" height="-1"/>
@@ -283,6 +301,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="60" 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="490" y="120" width="60" height="-1"/>
@@ -320,13 +343,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"/>
             </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 +368,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="420" y="140" width="200" 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..06bd8c2d6d83a6c2f736e478cfd6dc172b255d16 100644
--- a/UyTube_aplicacion/src/Presentacion/Video/frmAltaVideo.java
+++ b/UyTube_aplicacion/src/Presentacion/Video/frmAltaVideo.java
@@ -3,38 +3,70 @@ package Presentacion.Video;
 
 import Logica.Fabrica;
 import Logica.Clases.Video;
+import Logica.DataType.DtCategoria;
 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.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Iterator;
 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 _segundos){
+        if (_segundos <= 0) {
+            lbMsjDescripcion.setText(" La duración no puede ser cero");
+            lbMsjDuracion.setOpaque(true);
+            lbMsjDuracion.setForeground(Color.WHITE);
+            lbMsjDuracion.setBackground(colorError);              
+            return false;
+        }
+        return true;
     }
     
     private void limpiarCampos(){
@@ -49,11 +81,16 @@ public class frmAltaVideo extends javax.swing.JDialog {
         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 +101,66 @@ 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 largo,JLabel lb,String nombreCampo){
+        try{
+            if(txt.getText().length() > largo ){
+                lb.setText(" El campo supera los "+largo+" 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") ){
+//                if(!validarNombres(nombre)){
+//                    lb.setText(" El nombre \"" + nombre + "\" no es válido");
+//                    cambiarColoresError(txt, lb);
+//                    return false;
+//                }
+                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, (String) 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() {
@@ -94,8 +191,11 @@ public class frmAltaVideo extends javax.swing.JDialog {
         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 +206,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,9 +214,9 @@ 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);
@@ -133,10 +230,10 @@ 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, 230, -1, -1));
 
         jLabel76.setText("Fecha publicación:");
         jPanel14.add(jLabel76, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 400, -1, -1));
@@ -145,9 +242,9 @@ public class frmAltaVideo extends javax.swing.JDialog {
         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);
@@ -157,14 +254,26 @@ public class frmAltaVideo extends javax.swing.JDialog {
         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, 250, 330, 120));
 
         btnAceptar.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
         btnAceptar.setText("Aceptar");
@@ -183,8 +292,19 @@ public class frmAltaVideo extends javax.swing.JDialog {
             }
         });
         jPanel14.add(btnCancelar, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 463, 290, 70));
+
+        spSegundos.setModel(new javax.swing.SpinnerNumberModel(0, 0, 60, 1));
+        spSegundos.addFocusListener(new java.awt.event.FocusAdapter() {
+            public void focusGained(java.awt.event.FocusEvent evt) {
+                spSegundosFocusGained(evt);
+            }
+        });
         jPanel14.add(spSegundos, new org.netbeans.lib.awtextra.AbsoluteConstraints(560, 120, 60, -1));
+
+        spHora.setModel(new javax.swing.SpinnerNumberModel(0, 0, 5, 1));
         jPanel14.add(spHora, new org.netbeans.lib.awtextra.AbsoluteConstraints(420, 120, 60, -1));
+
+        spMinuto.setModel(new javax.swing.SpinnerNumberModel(0, 0, 60, 1));
         jPanel14.add(spMinuto, new org.netbeans.lib.awtextra.AbsoluteConstraints(490, 120, 60, -1));
 
         jLabel135.setText("Duración:");
@@ -195,12 +315,18 @@ public class frmAltaVideo extends javax.swing.JDialog {
 
         jLabel137.setText("Minutos");
         jPanel14.add(jLabel137, new org.netbeans.lib.awtextra.AbsoluteConstraints(490, 100, -1, -1));
+
+        jDateChooser1.setMaxSelectableDate(new java.util.Date(2524622503000L));
+        jDateChooser1.setMinSelectableDate(new java.util.Date(-2208971613000L));
         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));
+        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(420, 140, 200, 15));
 
         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
         getContentPane().setLayout(layout);
@@ -227,9 +353,12 @@ public class frmAltaVideo extends javax.swing.JDialog {
     }// </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
+        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)spHora.getValue();
         int minutos = (Integer)spMinuto.getValue();
         int segundos = (Integer)spSegundos.getValue();
@@ -239,7 +368,34 @@ public class frmAltaVideo extends javax.swing.JDialog {
         if( jDateChooser1.getDate() != null){
             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= {30,2083}; //Largos de los campos
+        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)){
+           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, 
@@ -250,9 +406,11 @@ public class frmAltaVideo extends javax.swing.JDialog {
                             "Duración: "+duracion+"\n"+
                             "fecha de publicacón: "+fecha
                         , "Confirmar alt de Video", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
-            if(opcion==0)
+            if(opcion==0){
+                System.out.println("nomre: "+nombre+" descripcion: "+descripcion+" duracion: "+duracion+" fecha: "+ fecha+" url: "+url+" privacidad: "+Privacidad.PRIVADO+" categoria: "+categoria);
                 sys.altaVideo(dtVideo);
                 limpiarCampos();
+            }
                 
         } catch (Exception e) {
             JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE);
@@ -260,53 +418,112 @@ public class frmAltaVideo extends javax.swing.JDialog {
     }//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
+        //Se obtienen los valores de la fecha actual para su validacion
+//        anioActual = c.get(Calendar.YEAR);
+//        mesActual = c.get(Calendar.MONTH);
+//        diaActual = c.get(Calendar.DATE);
+//        System.out.println("dia actual"+diaActual);
+//        Calendar max = Calendar.getInstance();    
+//        max.set(Calendar.YEAR,anioActual);    
+//        max.set(Calendar.MONTH,mesActual);    
+//        max.set(Calendar.DATE,diaActual);    
+//        jDateChooser1.setMaxSelectableDate(max.getTime()); 
+   //     jDateChooser1.setMaxSelectableDate(fechaActual.getTime());
+        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, (String) 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, (String) 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, (String) 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 spSegundosFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_spSegundosFocusGained
+        // TODO add your handling code here:
+        lbMsjDuracion.setText("");
+        lbMsjDuracion.setOpaque(false);
+    }//GEN-LAST:event_spSegundosFocusGained
     
     
     // Variables declaration - do not modify//GEN-BEGIN:variables
@@ -328,8 +545,11 @@ public class frmAltaVideo extends javax.swing.JDialog {
     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;