Javascript téléphone masque pour le champ de texte avec la regex

J'utilise cette fonction pour téléphone masque et fonctionne presque parfaitement.

function mask(o, f) 
{ 
    v_obj = o; 
    v_fun = f; 
    setTimeout("execmask()", 1) 
};

function execmask() 
{ 
    v_obj.value = v_fun(v_obj.value) 
};

function mphone(v){
    v=v.replace(/\D/g,"");           
    v=v.substring(0, 11);
    v=v.replace(/^(\d{2})(\d)/g,"(OXX$1) $2"); 
    v=v.replace(/(\d)(\d{4})$/,"$1-$2"); 
    return v;
}

Ici, je lance le masque dans le champ de texte:

<input type="text" id="phone" name="phone" onkeypress="mask(this, mphone);" onblur="mask(this, mphone);" />

Le problème est que j'ai besoin de changer cette partie du code (OXX$1) pour (0XX$1).

Situation actuelle avec 9 chiffres: (OXX99) 99999-9999.

Situation actuelle avec 8 chiffres: (OXX99) 9999-9999.

La mise en forme correcte que j'ai besoin avec 9 chiffres: (0XX99) 99999-9999

La mise en forme correcte que j'ai besoin avec 8 chiffres: (0XX99) 99999-9999

Le montant de 8 ou 9 chiffres est le choix de l'utilisateur.

Si je change le caractère 'O' pour '0', provoque une erreur dans le masque.

S'il vous plaît, à l'aide!

InformationsquelleAutor Danilo | 2013-04-04