<!-- 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 -->
<!-- Format : "(123) 456-7890" -->

var zChar = new Array(' ', '(', ')', '-', '.');
var maxphonelength = 14;
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
        window.status=cursorposition
        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;
    d4=p.indexOf('(')
    d5=p.indexOf(')')
    if(d4==-1){
      pp="("+pp;
    }
    if(d5==-1){
      pp=pp+")";
    }
    object.value = pp;
  } else if(p.length>3 && p.length < 7){
    p ="(" + p; 
    l30=p.length;
    p30=p.substring(0,4);
    p30=p30+") " 

    p31=p.substring(4,l30);
    pp=p30+p31;

    object.value = pp; 

  } else if(p.length >= 7){
	ppp = p.formatPhoneNumber();
    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 <= 4) {
      cursorposition = cursorposition + 3
    } else if (cursorposition == 5) {
      cursorposition = cursorposition + 3
    } else if (cursorposition == 6) { 
      cursorposition = cursorposition + 3 
    } else if (cursorposition == 7) { 
      cursorposition = cursorposition + 4 
    } else if (cursorposition == 8) { 
      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 == 9) {
      cursorposition = cursorposition + 4
    } else if (cursorposition < 11) {
      cursorposition = cursorposition + 3
    } else if (cursorposition == 11) {
      cursorposition = cursorposition + 1
    } else if (cursorposition == 12) {
      cursorposition = cursorposition + 1
    } else if (cursorposition >= 13) {
      cursorposition = cursorposition
    }

/*  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;
}


String.prototype.formatPhoneNumber = function () {
	p = this;
	if(p.length < 7)
		return "";
		
	p ="(" + p; 
    l30=p.length;
    p30=p.substring(0,4);
    p30=p30+") ";

    p31=p.substring(4,l30);
    pp=p30+p31;

    l40 = pp.length;
    p40 = pp.substring(0,9);
    p40 = p40 + "-"

    p41 = pp.substring(9,l40);
    ppp = p40 + p41;
	return ppp;
}

String.prototype.formatInternationalPhoneNumber = function () {
	var formattedPhone = "";
	if(this == "0" || this.length === 0)
		formattedPhone = "n/a";
	else if(this.length >= 10)
		formattedPhone = "1 "+this.formatPhoneNumber();
	else if(this.length >= 7)
		formattedPhone = this.formatPhoneNumber();

	return formattedPhone;
}


String.prototype.capitalize = function () {
	return this.toLowerCase().replace(/\b[a-z]/g, function (str, n) { return str.toUpperCase(); });
}

// format currency
// Number.prototype.formatCurrency = String.prototype.formatCurrency
Number.prototype.formatCurrency = function(forceDecimal){
	return this.toString().formatCurrency(forceDecimal);
}
//function formatCurrency(amount,forceDecimal)
String.prototype.formatCurrency = function(forceDecimal){
	amount = this;
	var forceDecimal = forceDecimal || false;

	if(!amount)
		return "0.00";
		
	if(amount.indexOf(".")==-1)
		amount += ".00";

	var delimiter = ","; // replace comma if desired
	var a = amount.split('.',2);
	var d = a[1];
	var i = parseInt(a[0]);
	if(isNaN(i)) { return ''; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	var n = new String(i);
	var a = [];
	while(n.length > 3)
	{
		var nn = n.substr(n.length-3);
		a.unshift(nn);
		n = n.substr(0,n.length-3);
	}
	if(n.length > 0) { a.unshift(n); }
	n = a.join(delimiter);
	
	if(d.length < 1)
		amount = n;
	else {
	// there is a decimal here
		
		// d == decimal
		if(d == "0" || d == "00" || d.length === 0) // $ XXXX.0 or $ XXXX.00 or $ XXXX
			amount = n; 
		else if(d.length === 1) // $ XXX.X0
			amount = n + '.' + d + "0"; 
		else if(d.length === 2) // $ XXX.XX
			amount = n + '.' + d; 
		else{ // $ XXX.XXXX
			d = parseFloat("0."+d);
			d = Math.round(d*100); // only allow 2 decimal places
			
			amount = n + '.' + d;
		}
	}
	
	amount = minus + amount;

	if(forceDecimal === true && d == "00")
	    amount = amount + ".00";
		
	return amount;
}


Number.prototype.toMonthName = function(abbrev){
	var months,
		value = this;
	
	if(abbrev)
		months = ['Jan','Feb','Mar','Apri','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
	else
		months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
	
	value--; // jan = 0, not jan = 1 in this array

	return months[value];
}


String.prototype.toNumber = function(){
	//strip out , and $
	return Number(this.replace("$","").replace(/,/g,""));
}

	