function isEmail(pEmail)
{
   var objEmail = /^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
   
   return objEmail.test(pEmail);
}

function isNumber(pValue)
{
   var strNumericDigits = "0123456789";
      
   for (var i = 0; i < pValue.length; i++)
   {
      var bolNumericValue = false;
         
      for (var j = 0; j < strNumericDigits.length; j++)
      {
         if (pValue.substring(i, i + 1) == strNumericDigits.substring(j, j + 1))
         {
            bolNumericValue = true;
            break;
         }
      }
         
      if (bolNumericValue == false)
      {
         return false;
      }
   }
      
   return bolNumericValue;
}
   
function isTime(pTime)
{
   if (pTime.length != 5) 
   {
      if (pTime.length != 8) 
      {
         return false;
      }
   }

   if (pTime.length == 5) 
   {
      if ((pTime.substring(2, 3) != ":"))
      {
         return false;
      }
      
      var intHH = pTime.substring(0, 2);
      var intMM = pTime.substring(3, 5);
      
      if (!isNumber(intHH) || !isNumber(intMM))
      {
         return false;
      }
         
      if (intHH > 23 || intMM > 59)
      {
         return false;
      }
   }
   else
   {
      if ((pTime.substring(2, 3) != ":") || (pTime.substring(5, 6) != ":"))
      {
         return false;
      }
      
      var intHH = pTime.substring(0, 2);
      var intMM = pTime.substring(3, 5);
      var intSS = pTime.substring(6, 8);
      
      if (!isNumber(intHH) || !isNumber(intMM) || !isNumber(intSS))
      {
         return false;
      }
         
      if (intHH > 23 || intMM > 59 || intSS > 59)
      {
         return false;
      }
   }
   
   return true;
}

function timeIntervalIsValid(pTime1, pTime2)
{
   
   if (!isTime(pTime1)) return false;
   if (!isTime(pTime2)) return false;
   
   var intHora1 = pTime1.substring(0, 2) + pTime1.substring(3, 5);
   var intHora2 = pTime2.substring(0, 2) + pTime2.substring(3, 5);
   var intResult = intHora2 - intHora1;
   
   if (intResult < 0) 
      return false
   else
      return true;
      
}

function isDate(pDate)
{
   // Only date format DD/MM/YYYY
   // DD   => Day
   // MM   => Month
   // YYYY => Year 

   if (pDate.length < 10)
   {
      return false;
   }      
   
   var strDD   = pDate.substring(0, 2);
   var strMM   = pDate.substring(3, 5);
   var strYYYY = pDate.substring(6, 10);
   
   if (strDD < "01" || strDD > "31" || strMM < "01" || strMM > "12")
   {
      return false;
   }
   
   if (strDD > "29" && strMM == "02") 
   {
      return false;
   }
   
   if (strDD > "30" && (strMM == "04" || strMM == "06" || strMM == "09" || strMM == "11"))
   {
      return false;
   }
   
   return true;
}

function dateIntervalIsValid(pDate1, pDate2)
{
   if (!isDate(pDate1)) return false;
   if (!isDate(pDate2)) return false;
      
   var intData1 = pDate1.substring(6, 10) + pDate1.substring(3, 5) + pDate1.substring(0, 2);
   var intData2 = pDate2.substring(6, 10) + pDate2.substring(3, 5) + pDate2.substring(0, 2);
      
   if (intData1 > intData2) return false;
   
   return true;
}

function sysDate()
{
   var d = new Date();
   
   var intDay   = d.getDate();
   var intMonth = d.getMonth()+1;
   var intYear  = d.getFullYear();
      
   if (intDay < 10) intDay = "0" + intDay;
   if (intMonth < 10) intMonth = "0" + intMonth;
      
   return intDay + "/" + intMonth + "/" + intYear;
      
}

function addDays(pDate, pDaysToAdd)
{
   var intDay   = parseInt(trimNumber(pDate.substring(0, 2)));
   var intMonth = parseInt(trimNumber(pDate.substring(3, 5)))-1;
   var intYear  = parseInt(trimNumber(pDate.substring(6, 10)));
   
   var d = new Date();

   d.setFullYear(intYear, intMonth, intDay);
      
   // Add days into parameter date
   d.setDate(d.getDate() + pDaysToAdd);
      
   var intDay   = d.getDate();
   var intMonth = d.getMonth()+1;
   var intYear  = d.getFullYear();

   if (intDay < 10) intDay = "0" + intDay;
   if (intMonth < 10) intMonth = "0" + intMonth;
      
   return intDay + "/" + intMonth + "/" + intYear;
}

function sysMMYYYY()
{
   var d = new Date();
   
   var intMonth = d.getMonth()+1;
   var intYear  = d.getFullYear();
      
   if (intMonth < 10) intMonth = "0" + intMonth;
      
   return intMonth + "/" + intYear;
      
}

function leftTrim(pValue)
{
   var strValue = "";
      
   if (pValue.substr(i,1) != " ")
   {
      strValue = pValue.substr(i);
      return strValue;
   }
      
   if (pValue.length == 0) 
   {
      return "";
   }
      
   for (var i = 0; i < pValue.length -1; i++)
   {
      if (pValue.substr(i,1) != " ")
      {
         strValue = pValue.substr(i);
         break;
      }
   }

   return strValue;
}

function trimNumber(pValue)
{
   var strValue = "";

   if (pValue.substr(i,1) != "0")
   {
      strValue = pValue.substr(i);
      return strValue;
   }
      
   if (pValue.length == 0) 
   {
      return "0";
   }
      
   for (var i = 0; i < pValue.length; i++)
   {
      if (pValue.substr(i,1) != "0")
      {
         strValue = pValue.substr(i);
         break;
      }
   }

   return strValue;
}

function calculateAge(pDate)
{
   if (pDate.length < 10) return 0;

   var intDay   = parseInt(pDate.substring(0, 2));
   var intMonth = parseInt(pDate.substring(3, 5));
   var intYear  = parseInt(pDate.substring(6, 10));
   
   var datSystemDate  = new Date();
   var intDaySystem   = datSystemDate.getDate();
   var intMonthSystem = datSystemDate.getMonth()+1;
   var intYearSystem  = datSystemDate.getFullYear();
   
   var intAgeYears = 0;

   if ((intMonthSystem > intMonth) || (intMonthSystem == intMonth & intDaySystem >= intDay))
   {
      intAgeYears = intYearSystem - intYear
   }
   else
   {
      intAgeYears = intYearSystem - (intYear + 1)
   }

   return parseInt(intAgeYears);
}

