Mascara simples com js

boa tarde tenho a funcao que cria uma mascara para o telefone com JS


function mascara(t, mask){
 var i = t.value.length;

 var saida = mask.substring(2,1);
 var texto = mask.substring(i);
 if (texto.substring(0,1) != saida){

	 t.value += texto.substring(0,1);
 }
 }

// e a chamada e assim 

<label for="tel1User"> Telefone 1 <input type="tel"  name="tel1User" id="tel1User" required="required" placeholder="Telefone c/ DDD"onkeypress="mascara(this, '(##) ###-#####')" maxlength="14"> </label>

ela esta funcionando mas não como eu gostaria, pois ele mostra o numero assim (xx)xxxx-xxxx ->tudo junto
e eu gostaria que fosse assim (xx) xxxx-xxxx ->com espaço apos o DDD

porem não estou conseguindo criar esse espaço apos o DDD, alguém tem alguma dica de como fazer esse espaço apos o DDD?

desde já grato pelas dicas

Segue .js e um .html …


    function Mascara(o,f){
        v_obj=o
        v_fun=f
        setTimeout(&quot;execmascara()&quot;,1)
    }
    
    /*Função que Executa os objetos*/
    function execmascara(){
        v_obj.value=v_fun(v_obj.value)
    }
    
    function leech(v){
        v=v.replace(/o/gi,&quot;0&quot;)
        v=v.replace(/i/gi,&quot;1&quot;)
        v=v.replace(/z/gi,&quot;2&quot;)
        v=v.replace(/e/gi,&quot;3&quot;)
        v=v.replace(/a/gi,&quot;4&quot;)
        v=v.replace(/s/gi,&quot;5&quot;)
        v=v.replace(/t/gi,&quot;7&quot;)
        return v
    }
    
    function Integer(v){
        return v.replace(/\D/g,&quot;&quot;)
    }
    
    /*Função que padroniza telefone (11) 4184-1241*/
    function Telefone(v){
        v=v.replace(/\D/g,&quot;&quot;)                 
        v=v.replace(/^(\d\d)(\d)/g,&quot;($1) $2&quot;) 
        v=v.replace(/(\d{4})(\d)/,&quot;$1-$2&quot;)    
        return v
    }
    
    /*Função que padroniza telefone (11) 41841241*/
    function TelefoneCall(v){
        v=v.replace(/\D/g,&quot;&quot;)                 
        v=v.replace(/^(\d\d)(\d)/g,&quot;($1) $2&quot;)    
        return v
    }
    
    /*Função que padroniza CPF*/
    function Cpf(v){
        v=v.replace(/\D/g,&quot;&quot;)                    
        v=v.replace(/(\d{3})(\d)/,&quot;$1.$2&quot;)       
        v=v.replace(/(\d{3})(\d)/,&quot;$1.$2&quot;)       
                                                 
        v=v.replace(/(\d{3})(\d{1,2})$/,&quot;$1-$2&quot;) 
        return v
    }
    
    /*Função que padroniza CEP*/
    function Cep(v){
        v=v.replace(/D/g,&quot;&quot;)                
        v=v.replace(/^(\d{5})(\d)/,&quot;$1-$2&quot;) 
        return v
    }
    
    /*Função que padroniza CNPJ*/
    function Cnpj(v){
        v=v.replace(/\D/g,&quot;&quot;)                   
        v=v.replace(/^(\d{2})(\d)/,&quot;$1.$2&quot;)     
        v=v.replace(/^(\d{2})\.(\d{3})(\d)/,&quot;$1.$2.$3&quot;) 
        v=v.replace(/\.(\d{3})(\d)/,&quot;.$1/$2&quot;)           
        v=v.replace(/(\d{4})(\d)/,&quot;$1-$2&quot;)              
        return v
    }
    
    /*Função que permite apenas numeros Romanos*/
    function Romanos(v){
        v=v.toUpperCase()             
        v=v.replace(/[^IVXLCDM]/g,&quot;&quot;) 
        
        while(v.replace(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,&quot;&quot;)!=&quot;&quot;)
            v=v.replace(/.$/,&quot;&quot;)
        return v
    }
    
    /*Função que padroniza o Site*/
    function Site(v){
        v=v.replace(/^http:\/\/?/,&quot;&quot;)
        dominio=v
        caminho=&quot;&quot;
        if(v.indexOf(&quot;/&quot;)&gt;-1)
            dominio=v.split(&quot;/&quot;)[0]
            caminho=v.replace(/[^\/]*/,&quot;&quot;)
            dominio=dominio.replace(/[^\w\.\+-:@]/g,&quot;&quot;)
            caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,&quot;&quot;)
            caminho=caminho.replace(/([\?&])=/,&quot;$1&quot;)
        if(caminho!=&quot;&quot;)dominio=dominio.replace(/\.+$/,&quot;&quot;)
            v=&quot;http://&quot;+dominio+caminho
        return v
    }

    /*Função que padroniza DATA*/
    function Data(v){
        v=v.replace(/\D/g,&quot;&quot;) 
        v=v.replace(/(\d{2})(\d)/,&quot;$1/$2&quot;) 
        v=v.replace(/(\d{2})(\d)/,&quot;$1/$2&quot;) 
        return v
    }
    
    /*Função que padroniza DATA*/
    function Hora(v){
        v=v.replace(/\D/g,&quot;&quot;) 
        v=v.replace(/(\d{2})(\d)/,&quot;$1:$2&quot;)  
        return v
    }
    
    /*Função que padroniza valor monétario*/
    function Valor(v){
        v=v.replace(/\D/g,&quot;&quot;) //Remove tudo o que não é dígito
        v=v.replace(/^([0-9]{3}\.?){3}-[0-9]{2}$/,&quot;$1.$2&quot;);
        //v=v.replace(/(\d{3})(\d)/g,&quot;$1,$2&quot;)
        v=v.replace(/(\d)(\d{2})$/,&quot;$1.$2&quot;) //Coloca ponto antes dos 2 últimos digitos
        return v
    }
    
    /*Função que padroniza Area*/
    function Area(v){
        v=v.replace(/\D/g,&quot;&quot;) 
        v=v.replace(/(\d)(\d{2})$/,&quot;$1.$2&quot;) 
        return v
        
    }
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;/title&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt;
&lt;!-- JS DAS MASCARAS --&gt;
&lt;script src="mascara.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;table width="100%" border="0"&gt;
 
    &lt;tr bgcolor="#e1e1e1"&gt;
        &lt;td width="13%"&gt;[Só numeros]&lt;/td&gt;
        &lt;td width="87%"&gt;&lt;input name="int" type="text" id="int" onKeyDown="Mascara(this,Integer);" onKeyPress="Mascara(this,Integer);" onKeyUp="Mascara(this,Integer);"&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td width="13%"&gt;[Telefone]&lt;/td&gt;
        &lt;td width="87%"&gt;&lt;input name="tel" type="text" id="tel" maxlength="14" onKeyDown="Mascara(this,Telefone);" onKeyPress="Mascara(this,Telefone);" onKeyUp="Mascara(this,Telefone);"&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr bgcolor="#e1e1e1"&gt;
        &lt;td width="13%"&gt;[CPF]&lt;/td&gt;
        &lt;td width="87%"&gt;&lt;input name="cpf" type="text" id="cpf" maxlength="14" onKeyDown="Mascara(this,Cpf);" onKeyPress="Mascara(this,Cpf);" onKeyUp="Mascara(this,Cpf);"&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td width="13%"&gt;[Cep]&lt;/td&gt;
        &lt;td width="87%"&gt;&lt;input name="cep" type="text" id="cep" maxlength="9" onKeyDown="Mascara(this,Cep);" onKeyPress="Mascara(this,Cep);" onKeyUp="Mascara(this,Cep);"&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr bgcolor="#e1e1e1"&gt;
        &lt;td width="13%"&gt;[CNPJ]&lt;/td&gt;
        &lt;td width="87%"&gt;&lt;input name="cnpj" type="text" id="cnpj" maxlength="18" onKeyDown="Mascara(this,Cnpj);" onKeyPress="Mascara(this,Cnpj);" onKeyUp="Mascara(this,Cnpj);"&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td width="13%"&gt;[Romanos]&lt;/td&gt;
        &lt;td width="87%"&gt;&lt;input name="rom" type="text" id="rom"  onKeyDown="Mascara(this,Romanos);" onKeyPress="Mascara(this,Romanos);" onKeyUp="Mascara(this,Romanos);"&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr bgcolor="#e1e1e1"&gt;
        &lt;td width="13%"&gt;[Site]&lt;/td&gt;
        &lt;td width="87%"&gt;&lt;input name="sit" type="text" id="sit"  onKeyDown="Mascara(this,Site);" onKeyPress="Mascara(this,Site);" onKeyUp="Mascara(this,Site);"&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td width="13%"&gt;[Data]&lt;/td&gt;
        &lt;td width="87%"&gt;&lt;input name="date" type="text" id="date" maxlength="10" onKeyDown="Mascara(this,Data);" onKeyPress="Mascara(this,Data);" onKeyUp="Mascara(this,Data);"&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr bgcolor="#e1e1e1"&gt;
        &lt;td width="13%"&gt;[Area Valor]&lt;/td&gt;
        &lt;td width="87%"&gt;&lt;input name="arevalo" type="text" id="arevalo"  onKeyDown="Mascara(this,Area);" onKeyPress="Mascara(this,Area);" onKeyUp="Mascara(this,Area);"&gt;&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;