var msisdn_patterns = {};
msisdn_patterns['722'] = /^()(\d+)$/;
msisdn_patterns['505'] = /^(0)?(4)(\d{8,8})$/;
msisdn_patterns['232'] = /^(0)?(6)(\d{9,10})$/;
msisdn_patterns['426'] = /^(0)?(3)(\d{8,8})$/;
msisdn_patterns['206'] = /^(0)?(4)(\d{8,8})$/;

//msisdn_patterns['206'] = /^(?:((?:(?:00|\+)?(?:32(?: \(? 0 \)? )?)|\(?0\)?)|(?:\(0\)|0))?(4))?(\d{8})$/;

msisdn_patterns['724'] = /^()(\d+)$/;
msisdn_patterns['302'] = /^()(\d{10,10})$/;
msisdn_patterns['730'] = /^()(\d+)$/;
msisdn_patterns['460'] = /^()(\d+)$/;
msisdn_patterns['230'] = /^()(\d+)$/;
msisdn_patterns['238'] = /^(0)?([23456789])(\d{7,7})$/;
msisdn_patterns['740'] = /^()(\d+)$/;
msisdn_patterns['244'] = /^(0)?([54])(\d{8,8})$/;
msisdn_patterns['208'] = /^(0)?(6|7)(\d{8,8})$/;
msisdn_patterns['262'] = /^(0)?(1)(\d{9,10})$/;
msisdn_patterns['202'] = /^(0)?(69)(\d{8,8})$/;
msisdn_patterns['454'] = /^(0)?([69])(\d{9,9})$/;
msisdn_patterns['216'] = /^(06)?((20|30|70))(\d{7,7})$/;
msisdn_patterns['404'] = /^()(\d+)$/;
msisdn_patterns['510'] = /^()(\d+)$/;
msisdn_patterns['272'] = /^(0)?(8)(\d{8,8})$/;
msisdn_patterns['222'] = /^()(3)(\d{9,10})$/;
msisdn_patterns['419'] = /^(0)?([679])(\d{7,7})$/;
msisdn_patterns['502'] = /^(0)?(1)(\d{8,8})$/;
msisdn_patterns['334'] = /^()(\d+)$/;
//msisdn_patterns['204'] = /^(0)?(6)(\d{8,8})$/;
msisdn_patterns['204'] = /^(?:((?:(?:00|\+)?(?:31(?: \(? 0 \)? )?)|\(?0\)?)|(?:\(0\)|0))?(6[12]\d{2}|63[0134589]\d|632[012]|636[0-5]|64\d{2}|65[0-5]\d|656[0-1]|657\d|658[89]|659[0-3]|68[12]\d|68[3-5]\d))?(\d{5})$/;
msisdn_patterns['530'] = /^(0)?(2)(\d{7,9})$/;
msisdn_patterns['242'] = /^(0)?([49])(\d{7,7})$/;
msisdn_patterns['422'] = /^(0)?(9)(\d{8,8})$/;
msisdn_patterns['260'] = /^(0)?([5678])(\d{8,8})$/;
msisdn_patterns['268'] = /^()(9)(\d{8,8})$/;
msisdn_patterns['250'] = /^(0)?(\d{3,12})$/;
msisdn_patterns['420'] = /^(0)?(5)(\d{8,8})$/;
msisdn_patterns['525'] = /^(0)?(\d{8,8})$/;
msisdn_patterns['231'] = /^()(\d+)$/;
msisdn_patterns['293'] = /^(0)?(\d{8,8})$/;
msisdn_patterns['655'] = /^(0)?([78])(\d{8,8})$/;
//msisdn_patterns['214'] = /^()?([6])(\d{8,8})$/;
msisdn_patterns['214'] = /^(?:((?:(?:00|\+)?(?:34(?: \(? 0 \)? )?))|(?:\(0\)|0))?(6\d{2}|7\d[0-7]))(\d{6})$/;

msisdn_patterns['240'] = /^(0)?(7)(\d{8,8})$/;
msisdn_patterns['228'] = /^(0)?(7)(\d{8,9})$/;
msisdn_patterns['466'] = /^(0)?(9)(\d{8,8})$/;
msisdn_patterns['520'] = /^()(\d+)$/;
msisdn_patterns['286'] = /^(0)?(\d{10,10})$/;
msisdn_patterns['424'] = /^(0)?([58])(\d{8,8})$/;
msisdn_patterns['234'] = /^(0)?(7)(\d{9,9})$/;
msisdn_patterns['310'] = /^()(\d{10,10})$/;

var phone_patterns = {};

//phone_patterns['204'] = /^(?:((?:(?:00|\+)?(?:31(?: \(? 0 \)? )?)|\(?0\)?)|(?:\(0\)|0))?([1-7]))?(\d{8})$/;

phone_patterns['204'] = /^(0)?(1|2|3|4|5|6|7)(\d{8,8})$/;


phone_patterns['206'] = /^()(\d{9,9})$/;
phone_patterns['214'] = /^()?((8|9))(\d{8,8})$/;
phone_patterns['208'] = /^((01|02|03|04|05))(\d{8,8})$/;
phone_patterns['202'] = /^()?(\d{10,10})$/;
phone_patterns['272'] = /^()(\d{9,10})$/;
phone_patterns['268'] = /^()?(\d{9,9})$/;
phone_patterns['240'] = /^()?(\d{10,10})$/;


function isValidMSISDN(msisdn, mcc) {
    msisdn = RemoveSpecialCharacters(msisdn);
    if (msisdn == null || isNaN(parseInt(msisdn))) {
        return false;
    } else {
        var matches = msisdn_patterns[mcc].exec(msisdn);
        if (matches != null && matches.length) {            
            return true;
        }
        return false;
    }
}

function isValidPhoneNumber(msisdn, mcc) {
    
    msisdn = RemoveSpecialCharacters(msisdn);
    if (msisdn == null || isNaN(parseInt(msisdn))) {
        return false;
    } else {
        var matches = phone_patterns[mcc].exec(msisdn);
        if (matches != null && matches.length) {
            return true;
        }
        return false;
    }
}


function RemoveSpecialCharacters(str) {
    //return str.replace(/[^0-9|\+]+/g,'');
    return str.replace(/\.|-|\/| /gi,'');
}

function trim(value) {

    value = value.replace(/^\-+/,'');
    value = value.replace(/\s+$/,'');
    return value;
}


