function EmailValidate(value)
{
    if(value =="") return true;
    
    var re_mail = /^([a-zA-Z0-9_\.\-\'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/;
    if (!re_mail.test(value))
        return false;
    else
        return true;
}

function EmptyAndEmailValidate(value)
{ 
    var re_mail = /^([a-zA-Z0-9_\.\-\'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/;
    if (!re_mail.test(value))
        return false;
    else
        return true;
}

function DateValidate(value)
{
    if(value == "") return true;
    var RegExPattern = /^(?=\d)(?:(?!(?:(?:0?[5-9]|1[0-4])(?:\.|-|\/)10(?:\.|-|\/)(?:1582))|(?:(?:0?[3-9]|1[0-3])(?:\.|-|\/)0?9(?:\.|-|\/)(?:1752)))(31(?!(?:\.|-|\/)(?:0?[2469]|11))|30(?!(?:\.|-|\/)0?2)|(?:29(?:(?!(?:\.|-|\/)0?2(?:\.|-|\/))|(?=\D0?2\D(?:(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:\d\d)(?:[02468][048]|[13579][26])(?!\x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)\x20BC))))))|2[0-8]|1\d|0?[1-9])([-.\/])(1[012]|(?:0?[1-9]))\2((?=(?:00(?:4[0-5]|[0-3]?\d)\x20BC)|(?:\d{4}(?:$|(?=\x20\d)\x20)))\d{4}(?:\x20BC)?)(?:$|(?=\x20\d)\x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]\d){0,2}(?:\x20[aApP][mM]))|(?:[01]\d|2[0-3])(?::[0-5]\d){1,2})?$/;
    if (!RegExPattern.test(value))
        return false;
    else
        return true;
}

function TextValidate(value)
{
    var re_text = /^\s*[a-zA-Z\u0e01-\u0e4d,\s]+\s*$/;
    if (!re_text.test(value))
        return false;
    else
        return true;
}

function EmptyAndTextValidate(value)
{
    if(value == "") return false;
    var re_text = /^[a-zA-Z]+(([\'\,\.\-\s][a-zA-Z])?[a-zA-Z]*)*$/;
    if (!re_text.test(value))
        return false;
    else
        return true;
}

function TextRequired(value)
{
 if(value=="")
 {
  return false;
 }
 else
 {
  return true;
 }
}

function NumberValidate(value)
{
    if (isNaN(value))
        return false;
    else
        return true;
}

function EmptyAndNumberValidate(value)
{
    if(value =="") return false;
    
    if (isNaN(value))
        return false;
    else
        return true;
}

function CompareValidate(value1,value2)
{
    if(value1 == value2) 
        return true;
    else
        return false;
}

function RequireAndCompareValidate(value1,value2)
{
    if(value1 =="")
        return false;
    else
        return CompareValidate(value1,value2);
} 

function EmptyAndRequireFourCharacter(value)
{
    if(value != "" && value.length < 4)
        return false;
    else
        return true;
} 

function PasswordPattern(value)
{
    if(value == "") return false;
    if(value == "xxxxxxxxx") return true;
    if(value == "password") return true;
    var re_text = /(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9-!+@#$%^&*()]{9,30})$/;
    if (!re_text.test(value))
        return false;
    else
        return true;
}

function CheckRequiredDefault(value, defaultValue) {
    if (value == defaultValue) {
        return false;
    }
    else {
        return true;
    }
}

function CheckSpecifiedValue(value, needValue) {
    if (value.toUpperCase() == needValue.toUpperCase()) {
        return true;
    }
    else {
        return false;
    }
}

/* Validate Future or Past date
parameter: 
value - dd/mm/yyyy format
type - p=past, f=future for checking type
*/
function ValidateDateFuturePast(value, type) {
    var isValid = true;
    var myDates = value.replace("/", "").replace("/", "");
    var d = Number(myDates.substring(0, 2));
    var m = Number(myDates.substring(2, 4));
    var y = Number(myDates.substring(4, 8));
    var d1 = new Date(y, m-1, d);
    var d2 = new Date();
    if (type == 'p') {
        if (d1 >= d2) {
            isValid = false;
        }
    }
    else if (type == 'f') {
        if (d1 < d2) {
            isValid = false;
        }
    }
    return isValid;
}
