//Valida si la fecha introducida tiene el formato correcto.
function validateDate(oInput){ 
	return new RegExp("^\\d{2}\\/\\d{2}\\/\\d{4}$").test(oInput); 
} 

//comprueba que la fecha sea correcta, bisiestos, etc.
function ValidDate(y, m, d) { // m = 0..11
  with (new Date(y, m, d))
     return ((getFullYear()==y) && (getMonth()==m)) 
}
//comprobacion para los dos formatos con yyyy/mm/dd y yyyy-mm-dd
function validarFecha(fechaIn) { 
  var T // adaptable for other layouts
  var fechaOut = fechaIn.substring(6,10)+"/"+fechaIn.substring(3,5)+"/"+fechaIn.substring(0,2);
  if ((T = /^(\d+)([-\/])(\d\d)(\2)(\d\d)$/.exec(fechaOut)) == null)
    { return false } // bad format
  if (!ValidDate(T[1], T[3]-1, T[5])) { return false } // bad value
  return true 
}

function checkEmail (strng) 
{
	if (strng == "") 
	{
	   return false;
	}
	
    var emailFilter=/^.+@.+\..{2,3}$/;
    if (!(emailFilter.test(strng))) 
    { 
    	return false;
    }
    else 
    {
       //test email for illegal characters
       var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/
         if (strng.match(illegalChars)) 
         {
        	 return false;
         }
    }
	return true;    
}


// phone number - strip out delimiters and check for 10 digits

function checkPhone (strng) 
{
	var fallo = "";
	if (strng == "") 
	{
	   return false;
	}
	
	var stripped = strng.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters
	    if (isNaN(parseInt(stripped))) 
	    {
	    	return false;
	    }
	    /*
	    No tebnemos es cuenta la longitud del numero de telefono, dado la gran cantidad de casos validos posibles  
	    if (!(stripped.length == 10)) {
		fallo = "The phone number is the wrong length. Make sure you included an area code.\n";
	    }
	    */ 
	return true;
}


// password - entre un numero "minimo" y otro "maximo", uppercase, lowercase, and numeral

function checkPassword (strng) 
{
minimo =6;
maximo =8;
var fallo = "";
if (strng == "") {
   fallo = "No has introducido ninguna password.\n";
}

    var illegalChars = /[\W_]/; // allow only letters and numbers
    
    if ((strng.length < minimo) || (strng.length > maximo)) {
       fallo = "La password tiene menos de "+minimo+" caracteres o más de "+maximo+" caracteres.\n";
    }
    else if (illegalChars.test(strng)) {
      fallo = "La password introducida contiene caracteres no validos.\n";
    }
    /* 
    No obligamos a que la password contenga una mayuscula, una minuscula y un numero
    else if (!((strng.search(/(a-z)+/)) && (strng.search(/(A-Z)+/)) && (strng.search(/(0-9)+/)))) {
       fallo = "The password must contain at least one uppercase letter, one lowercase letter, and one numeral.\n";
    }  
    */
return fallo;    
}    


// username - "minimo"-"maximo" chars, uc, lc, and underscore only.

function checkUsername (strng) 
{
minimo=4;
maximo=10;
var fallo = "";
if (strng == "") {
   fallo = "No has introducido nombre de usuario.\n";
}


    var illegalChars = /\W/; // allow letters, numbers, and underscores
    if ((strng.length < minimo) || (strng.length > maximo)) {
       fallo = "El nombre de usuario introducido es menor de "+minimo+" caracteres o mayor de "+maximo+" caracteres.\n";
    }
    else if (illegalChars.test(strng)) {
    fallo = "El nombre de usuario contiene caracteres no validos.\n";
    } 
return fallo;
}       

function isEmpty(strng) 
{
	var fallo = "";
	  if (strng.length == 0) 
	  {
	     return false;
	  }
	return true;	  
}

function isEmpty(strng, nombrecampo) 
{
	var fallo = "";
	  if (strng.length == 0) 
	  {
	     return false;
	  }
	return true;	  
}

function isNumber(inputVal) 
{
      oneDecimal = true;
      inputStr = ""+inputVal
      for (var i=0; i < inputStr.length; i++) 
      {
        var oneChar = inputStr.charAt(i)
        if ( i == 0 && oneChar == "-") {
          continue
        }
        if ( ((oneChar == ".") || (oneChar == ",")) && !oneDecimal) {
          return false;
        }

        if (oneChar < "0" || oneChar > "9")
        {
          return false
        }
      }
      return true
}

function IsNumericAndDecimal(sText,maxNumber,maxDecimal)
{
   sText = trim(sText);	
   var ValidChars = "0123456789.,";
   var IsNumber=true;
   var Char;
   var decimal = false;
   var numDecimales=0;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
   { 
	  numDecimales = numDecimales +1;
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
      {
         IsNumber = false;
      }
      if ((Char=='.') || (Char==','))
      {
    	   numDecimales=0;
    	   decimal = true;
    	   if (i>maxNumber)
    	   {
    		   IsNumber = false;
    	   }
      }
    }
   
   if (!decimal)
   {
	  if (sText.length>maxNumber)
	  {
		  IsNumber = false;
	  }
   }
   
   if (decimal)
   {
	  if ( (numDecimales==0) || (numDecimales>maxDecimal))
	  {
		  IsNumber = false;
	  }
   }
   return IsNumber;
   
   }


function scapar_noticia(str_entrada){
	re=/'/gi; //'
	str=str_entrada.replace(re,"´");
	re=/"/gi; //"
	str=str.replace(re,"`");
	re=/\n/gi; //
	str=str.replace(re,"");
	re=/\r/gi; //
	str=str.replace(re,"");
	return str;
	
	
}
function scapar(str_entrada){
	re=/'/gi; //'
	str=str_entrada.replace(re,"%2%");
	re=/"/gi; //"
	str=str.replace(re,"%1%");
	return str;
}
function unscapar(str_entrada){
	re=/%1%/gi; //"
	str=str_entrada.replace(re,'"');
	re=/%2%/gi; //'
	str=str.replace(re,"'");
	return str;
}

function  fechaCompare(fechaInicio, fechaFin)
{
   var dt1   = parseInt(fechaInicio.substring(0,2),10);
   var mon1  = parseInt(fechaInicio.substring(3,5),10);
   var yr1   = parseInt(fechaInicio.substring(6,10),10);
   var dt2   = parseInt(fechaFin.substring(0,2),10);
   var mon2  = parseInt(fechaFin.substring(3,5),10);
   var yr2   = parseInt(fechaFin.substring(6,10),10);
   var date1 = new Date(yr1, mon1, dt1);
   var date2 = new Date(yr2, mon2, dt2);

   if(date2 < date1)
   {
      return false;
   }
   else
   {
      return true;
   } 
}

function addEvent(obj, evType, fn){
    if (obj.addEventListener) {
        obj.addEventListener(evType, fn, false);
        return true;
    }
    else 
        if (obj.attachEvent) {
            return obj.attachEvent("on" + evType, fn);
        }
        else {
            return false;
        }
}


function myFireEvent(objId,event){
	if( document.fireEvent ) {  // IE
		document.getElementById(objId).fireEvent("on"+event);
	}else if( document.dispatchEvent ) { // estándar
        var evObj = document.createEvent('MouseEvents');                                // creamos el evento de tipo MouseEvents
    	evObj.initMouseEvent( event, true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null );    // le damos características
        document.getElementById(objId).dispatchEvent(evObj); 
    }else alert("No puedo lanzar evento"); 
}


function validateSpecialChars(value) {
	value=value.replace(' ','');
	if (value ==encodeURI(value)) return true;
	else return false;
}

function trim(str)
{
	 str = str.replace(/^\s*|\s*$/g,"");
	 return str;
}