var PH_CHECK_EMPTY = (1<<0);


function trim(value){
    value = value.replace(/^[ \t\r\n]+/, '');
    value = value.replace(/[ \t\r\n]+$/, '');
    return value;
}


function check_empty(value, name){
    value = trim(value);
    if (!value){
        PH_ERR_MSG += sprintf(msg('%s is empty.'), name) + "\n";
        return false;
    }
    return true;
}


function check_email_address(value, name, check){
    value = trim(value);

    if ((check & PH_CHECK_EMPTY) && !check_empty(value, name)){
        return false;
    }

    if (!value){
        return true;
    }

    if (!value.match(/^[-a-zA-Z0-9][-_\+a-zA-Z0-9.\?\/]*@[-a-zA-Z0-9.]+$/)){
        PH_ERR_MSG += sprintf(msg('%s is invalid.'), name) + "\n";
        return false;
    }

    return true;
}

function check_mobile_address(value)
{
    var pattern = RegExp(PH_EMAIL_MOBILE_REGEXP);

    if (value.match(pattern, value)) {
        PH_ERR_MSG += sprintf(msg('%s is mobile address'), value) + "\n";
        return false;
    }

    return true;
}

function check_blacklisted(value)
{
    var pattern = RegExp(PH_EMAIL_BLACK_LIST.join('$|')+'$');

    if (value.match(pattern, value)) {
        PH_ERR_MSG += sprintf(msg('%s is blacklisted'), value) + "\n";
        return false;
    }

    return true;
}

function check_password(value1, value2, name1, name2, check){
    if (check & PH_CHECK_EMPTY){
        if (!check_empty(value1, name1)){
            return false;
        }
        if (!check_empty(value2, name2)){
            return false;
        }
    }

    if (value1 != value2){
        PH_ERR_MSG += sprintf(msg("%s doesn't match."), name1) + "\n";
        return false;
    }

    return true;
}


function check_select(value, name){
    if (!value){
        PH_ERR_MSG += sprintf(msg('%s is not selected.'), name) + "\n";
    }
    return true;
}


function check_date(year, month, day, name){

    var err_msg = sprintf(msg('%s is invalid.'), name) + "\n";

    if(isNaN(year) || isNaN(month) || isNaN(day)){
        PH_ERR_MSG += err_msg;
        return false;
    }

    if(year.length != 4){
        PH_ERR_MSG += err_msg;
        return false;
    }

    if((month < 1) || (month > 12)){
        PH_ERR_MSG += err_msg;
        return false;
    }

    var max_day;
    switch (month){
    case  '1':
    case  '3':
    case  '5':
    case  '7':
    case  '8':
    case '10':
    case '12':
        max_day = 31;
        break;
    case  '4':
    case  '6':
    case  '9':
    case '11':
        max_day = 30;
        break;
    case  '2':
        max_day = 28;
        if (((year%4 == 0) && (year%100 != 0)) || (year%400 == 0)){
            max_day = 29;
        }
        break;
    }
    if((day < 1) || (day > max_day)){
        PH_ERR_MSG += err_msg;
        return false;
    }

    return true;
}

function check_url(value, name)
{
    value = trim(value);

    if (!check_empty(value, name)){
        return false;
    }

    if (!value){
        return true;
    }

    if (!value.match(/^(((ht|f)tp(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/)){
        PH_ERR_MSG += sprintf(msg('%s is invalid.'), name) + "\n";
        return false;
    }

    return true;
}

function check_acceptance(id, name) {
  if ($(id).checked == false) {
    PH_ERR_MSG += msg('Please accept use policy and privacy policy') + "\n";
    return false;
  }
  return true;
}



