// JavaScript Document

<!-- This script is based on the javascript code of Roman Feldblum (web.developer@programmer.net) -->
<!-- Original script : http://javascript.internet.com/forms/format-phone-number.html -->
<!-- Original script is revised by Eralper Yilmaz (http://www.eralper.com) -->
<!-- Revised script : http://www.kodyaz.com -->

var zChar = new Array(' ', '(', ')', '-', '.');
var maxphonelength = 12;
var phonevalue1;
var phonevalue2;
var cursorposition;

function ParseForNumber1(object){
phonevalue1 = ParseChar(object.value, zChar);
}
function ParseForNumber2(object){
phonevalue2 = ParseChar(object.value, zChar);
}

function backspacerUP(object,e) {
if(e){
e = e
} else {
e = window.event
}
if(e.which){
var keycode = e.which
} else {
var keycode = e.keyCode
}

ParseForNumber1(object)

if(keycode >= 48){
ValidatePhone(object)
}
}

function backspacerDOWN(object,e) {
if(e){
e = e
} else {
e = window.event
}
if(e.which){
var keycode = e.which
} else {
var keycode = e.keyCode
}
ParseForNumber2(object)
}

function GetCursorPosition(){

var t1 = phonevalue1;
var t2 = phonevalue2;
var bool = false
for (i=0; i<t1.length; i++)
{
if (t1.substring(i,1) != t2.substring(i,1)) {
if(!bool) {
cursorposition=i
bool=true
}
}
}
}

function ValidatePhone(object)
{

    var p = phonevalue1

    p = p.replace(/[^\d]*/gi,"")

    if (p.length < 3) 
    {
     object.value=p
    } else if(p.length==3){
        pp=p;
        pp=pp+"-";
        object.value = pp;
    } else if(p.length>3 && p.length < 6){
        p =p;
        l30=p.length;
        p30=p.substring(0,3);
        p30=p30+"-"

        p31=p.substring(3,l30);
        pp=p30+p31;

        object.value = pp;

    } 
    else if(p.length >= 6)
    {
        p = p;
        l30=p.length;
        p30=p.substring(0,3);
        p30=p30+"-"

        p31=p.substring(3,l30);
        pp=p30+p31;

        l40 = pp.length;
        p40 = pp.substring(0,7);
        p40 = p40 + "-"

        p41 = pp.substring(7,l40);
        ppp = p40 + p41;

        object.value = ppp.substring(0, maxphonelength);
    }

GetCursorPosition()

if(cursorposition >= 0)
{
    if (cursorposition == 0) 
    {
        cursorposition = 2
    } 
    else if (cursorposition <= 2) 
    {
        cursorposition = cursorposition + 1
    } 
    else if (cursorposition <= 5) 
    {
        cursorposition = cursorposition + 2
    } 
    else if (cursorposition == 6) 
    {
        cursorposition = cursorposition + 2
    } 
    else if (cursorposition == 7) 
    {
        cursorposition = cursorposition + 4
        e1=object.value.indexOf(')')
        e2=object.value.indexOf('-')
        if (e1>-1 && e2>-1)
        {
            if (e2-e1 == 4) 
            {
                cursorposition = cursorposition - 1
            }
         }
    } 
    else if (cursorposition < 11) 
    {
        cursorposition = cursorposition + 3
    } 
    else if (cursorposition == 11) 
    {
        cursorposition = cursorposition + 1
    } 
    else if (cursorposition >= 12) 
    {
        cursorposition = cursorposition
    }

    if(object != null && object != "undefined" && object.value != "")
    {
        var txtRange = object.createTextRange();
        txtRange.moveStart( "character", cursorposition);
        txtRange.moveEnd( "character", cursorposition - object.value.length);
        txtRange.select();
    }
}

}

function ParseChar(sStr, sChar)
{
if (sChar.length == null)
{
zChar = new Array(sChar);
}
else zChar = sChar;

for (i=0; i<zChar.length; i++)
{
sNewStr = "";

var iStart = 0;
var iEnd = sStr.indexOf(sChar[i]);

while (iEnd != -1)
{
sNewStr += sStr.substring(iStart, iEnd);
iStart = iEnd + 1;
iEnd = sStr.indexOf(sChar[i], iStart);
}
sNewStr += sStr.substring(sStr.lastIndexOf(sChar[i]) + 1, sStr.length);

sStr = sNewStr;
}

return sNewStr;
}
