spacer

Webref WebRef   Sitemap · Experts · Tools · Services · Newsletters · About i.com

home / experts / javascript / column58


The Doc Dialer, Part 2: A Browser Independent Version

Developer News
News Flash: Adobe Has iPhone Workaround
Adobe's Flash 10.1 Goes Mobile (Minus iPhone)
A Salute to Visionary CEOs

The Global Area

The global variables include five arrays: empList, keyMap, empPhone, tree, and printList. The size of the data-dependent arrays is determined by EMPMAX which is initialized to 10,000. The empList array holds the Doc Dialer's entries. When the application loads, it includes just eight names. Any new entry is added to this array. The names stored in empList preserve the case entered by the user. Since the phone's keypad includes only upper case characters, all matching functions are case-insensitive. The variable lastEmp points to the last name entered to empList. Here are the corresponding lines in the script:

var EMPMAX = 10000;
var empList = new Array(EMPMAX);
empList[1] = "Ronald Reagan"; 
empList[2] = "Jimmy Carter";  
empList[3] = "Richard Nixon";
empList[4] = "Bill Clinton"; 
empList[5] = "Gerald Ford"; 
empList[6] = "George Bush";  
empList[7] = "Lyndon Johnson"; 
empList[8] = "John Kennedy";  
var lastEmp = 8;

The empPhone array holds an extension for every entry in empList. When you enter an extension for a new entry, the Doc Dialer expects a 4-digit entry only. Here are the corresponding lines in the script:

var empPhone = new Array(EMPMAX);
empPhone[1] = 5808;
empPhone[2] = 5919;
empPhone[3] = 5303;
empPhone[4] = 5606;
empPhone[5] = 5707;
empPhone[6] = 5313;
empPhone[7] = 5838;
empPhone[8] = 5006;

The keyMap array is an associative array. Instead of the regular array's numeric indices, the associative array's indices are strings. We have here a classic usage for an associative array: translate each character of the alphabet to the corresponding numeric key on the phone keypad. Here are the corresponding lines:

var keyMap = new Array(24);
keyMap["A"] = "2";
keyMap["B"] = "2";
keyMap["C"] = "2";
keyMap["D"] = "3";
keyMap["E"] = "3";
keyMap["F"] = "3";
keyMap["G"] = "4";
keyMap["H"] = "4";
keyMap["I"] = "4";
keyMap["J"] = "5";
keyMap["K"] = "5";
keyMap["L"] = "5";
keyMap["M"] = "6";
keyMap["N"] = "6";
keyMap["O"] = "6";
keyMap["P"] = "7";
keyMap["R"] = "7";
keyMap["S"] = "7";
keyMap["T"] = "8";
keyMap["U"] = "8";
keyMap["V"] = "8";
keyMap["W"] = "9";
keyMap["X"] = "9";
keyMap["Y"] = "9";

Notice again that the phone keypad does not support the Q and Z characters. You have to use similarly-pronounced characters instead (K and X for example).

The trie data structure starts with a 10-element array at the top:

var tree = new Array(10);

The last array is the printList array which we covered in Column 57. Entries that are about to be printed are flagged as true in this array. All other entries are false.

Next: How to initialize the Doc Dialer

http://www.internet.com

Produced by Yehuda Shiran and Tomer Shiran

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Reprints, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs

webref The latest from WebReference.com Browse >
Building a Banking Application Home Page with OOP · Mixing Scripting Languages · Review: phpFox, a Social Networking CMS with all the Bells and Whistles
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
Enterprise 2.0: Social Networking in the Cloud · BroadSoft Marketplace Hastens Pace of Telephony Innovation · Review: HTC Hero for Sprint


Created: February 28, 2000
Revised: April 26, 2000

URL: http://www.webreference.com/js/column58/2.html