Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!
  • Guest, before posting your code please take these rules into consideration:
    • It is required to use our BBCode feature to display your code. While within the editor click < / > or >_ and place your code within the BB Code prompt. This helps others with finding a solution by making it easier to read and easier to copy.
    • You can also use markdown to share your code. When using markdown your code will be automatically converted to BBCode. For help with markdown check out the markdown guide.
    • Don't share a wall of code. All we want is the problem area, the code related to your issue.


    To learn more about how to use our BBCode feature, please click here.

    Thank you, Code Forum.

Playing Audio Using Keystrokes: Is It Possible?

Annabelle5893

Gold Coder
I'm wondering, how would I make an app that plays audio files using the keys on the number pad? Specifically, I want to make an app that triggers "Rotary Pulse 1" by pressing 1 on the numeric keypad, all the way up to "Rotary Pulse 0" on the 0 key. A dial tone will be toggled on by pressing the spacebar, which will begin with a "receiver pickup" noise. The dial tone turns off when digits are dialed via the numeric keypad. If you press the spacebar either when the dial tone is on, or after dialing a number, a "Receiver Hang Up" noise will be triggered. With the rotary dial sounds, the dial turning to the fingerhole is triggered at key down, and the release of the dial returning to the resting position will be triggered by releasing of the number corresponding to the fingerhole (1, 2, 3, 4, 5, 6, 7, 8, 9, 0). This will be accompanied by the internal sound of the dial pulses as heard in a telephone. What is the code I would use to make this audio app using HTML?
 
That is because it really is not defined. You see how you have
JavaScript:
var hookSwitch = ...
right above your call to hookStatus? There you are defining and assigning a value to hookSwitch. There's another instance where you do this
JavaScript:
var thisVar;
At that point, you are just defining the variable, but you don't assign it a value until much later in your code. You never do either one for hookStatus.
So looking back, you actually do have it defined, however, you are using it before you define it.
 
You are setting up the event listener for hookStatus, and inside of that event listener you define hookStatus. Do you see why that would cause an issue?
 
Definitions should be outside, yes, however, the only time you should be defining variables inside of the event listener, or any other function, is if you are only using them inside of that function
So I'm guessing I should put it like this?
Code:
    var hookStatus = document.querySelector('span.hookStatus');
    if ( hookStatus.classlist.contains('off') ){
        //remove 'off' class
        hookStatus.classlist.remove('off');  
        //add 'on' class
        hookStatus.classlist.add('on');
        //change span text
        hookStatus.textContent = "Off Hook";  
    }
    else {
        if ( hookStatus.classlist.contains('on') ){
            //remove 'on' class
            hookStatus.classlist.remove('on');  
            //add 'off' class
            hookStatus.classlist.add('off');
            //change span text
            hookStatus.textContent = "Off Hook";
        }
    }
})
var dialTone=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Dial%20Tone/USA%20Dial%20Tone.ogg');
var isOffHook=false;
var callIncoming=false;
var allowDial = true;
hookStatus.addEventListener("click", function(){
        dialTone.play();
    }
}
I'm still a bit confused with this one.
 
So I'm guessing I should put it like this?
Code:
    var hookStatus = document.querySelector('span.hookStatus');
    if ( hookStatus.classlist.contains('off') ){
        //remove 'off' class
        hookStatus.classlist.remove('off'); 
        //add 'on' class
        hookStatus.classlist.add('on');
        //change span text
        hookStatus.textContent = "Off Hook"; 
    }
    else {
        if ( hookStatus.classlist.contains('on') ){
            //remove 'on' class
            hookStatus.classlist.remove('on'); 
            //add 'off' class
            hookStatus.classlist.add('off');
            //change span text
            hookStatus.textContent = "Off Hook";
        }
    }
})
var dialTone=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Dial%20Tone/USA%20Dial%20Tone.ogg');
var isOffHook=false;
var callIncoming=false;
var allowDial = true;
hookStatus.addEventListener("click", function(){
        dialTone.play();
    }
}
I'm still a bit confused with this one.
If you place that
JavaScript:
var hookStatus= ...;
line and place it underneath
JavaScript:
var hookSwitch = ...;
you should be fine
 
If you place that
JavaScript:
var hookStatus= ...;
line and place it underneath
JavaScript:
var hookSwitch = ...;
you should be fine
How's this look to you?
Code:
<script>
var hookSwitch = document.querySelector('button.hookSwitch');
hookStatus.addEventListener("click", function(){
    var hookStatus = document.querySelector('span.hookStatus');
    if ( hookStatus.classlist.contains('off') ){
        //remove 'off' class
        hookStatus.classlist.remove('off');  
        //add 'on' class
        hookStatus.classlist.add('on');
        //change span text
        hookStatus.textContent = "Off Hook";  
    }
    else {
        if ( hookStatus.classlist.contains('on') ){
            //remove 'on' class
            hookStatus.classlist.remove('on');  
            //add 'off' class
            hookStatus.classlist.add('off');
            //change span text
            hookStatus.textContent = "Off Hook";
        }
    }
})
var dialTone=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Dial%20Tone/USA%20Dial%20Tone.ogg');
var isOffHook=false;
var callIncoming=false;
var allowDial = true;
var ringingTone=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
var timesRung=0;
var availableNumbers=["0","611","711","811","911","*67 + 1 (847) 765-1008","1 (847) 765-1008","867-5309",
                        "1 (212) 456-1414","555-1212","555-5555","748-0900","650-0050","650-8950",
                        "970-3920","1 (714) 733-9969","*57","*69"];


function reload(){
    location.reload(true);
}

document.getElementById('toggleLineStatus').onclick=function(){
    toggleLineStatus()
};

function toggleLineStatus() {
    var number="";
    var pin="";
    var checkForPin=false;
    document.getElementById('numberbeingdialed').innerHTML=number;
    var wasOnHook=false;

    if(!offHook){
        offHook=true;
        document.getElementById('hookstatus').innerHTML="Off";
        wasOnHook=true;
    } else {
        offHook=false;
        document.getElementById('hookstatus').innerHTML="On";
        clunk.pause();
        ringback.pause();
        clunk.currentTime=0;
        ringback.currentTime=0;
    }
 
    if(ringbackDialed){
        startRingback();
    } else {
        if(wasOnHook){
            ring.pause();
            ring.currentTime=0;
            playDialTone();
            dialingAllowed=true;
            nextDigitDialable=true;
            ringbackDialed=false;
            keepPlaying=true;
        }
        else {
            stopDialTone();
            setOpacity(100);
            allCircuitsBusy=false;
            keepPlaying=false;
        }
    }
}

function numberSuggestion(){
    var randomNumber=Math.floor(Math.random()*(availableNumbers.length));
    var suggestedNumber=availableNumbers[randomNumber];
    document.getElementById("suggestion").innerHTML="How about dialing <strong id='suggestedTelephoneNumber'>"+
                                                    suggestedNumber+
                                                    "</strong>? Don't like this number? Click the button above again!";
}

function receiverRaised(){
    if(allowDial == false) {
        telephoneAnswered()
    }
 
    if(allowDial == true) {
        dialTone.play();
    } else {
        offHook ();
        timeoutHowler.play();
    }
}

setCallTimeout();

function setCallTimeout(){
    var delay=5000;
    var delayCaller=Math.floor((Math.random()*8000)+1);
    delay=delay+delayCaller;
    setTimeout(incomingCall,delay);
}

function offHook(){
    isOffHook=true;
    document.getElementById("WE2500").style.display="none";
    document.getElementById("dialPad").style.display="block";
}

function dialToneTimedOut() {
    allowDial=false;
    timeoutHowler();
    if(DialToneTimedOut == true) {
        timeoutHowler.play();
        timeoutHowler.currentTime=0;
    }
}

function incomingCall(){
    var ringRing=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
    var hasTelephoneBeenAnswered=false;
    ringTelephone();
}

function ringTelephone(){
    if(!hasTelephoneBeenAnswered) {
        ringRing.play();
        ringRing.currentTime=0;
    }
     else {
    if(isOffHook == false) {
        ringRing.play();
    }
    if(allowDial == false) {
        callIncoming=true;
        setInterval(ringTelephone,5500);
    }
}

var number="";
var timeout="";

function numberDial() {
    if(dialTone){
        dialTone.pause();
        dialTone.currentTime=0
    }
}

function dial1() {
    if(allowDial == true) {
        numberDial();
        number=number+"1";
        var DTMFToneDial1=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF%20Tone%20Dial%201.ogg');
        DTMFToneDial1.play();
    }
}

function dial2() {
    if(allowDial == true); {
        numberDial();
        number=number+"2";
        var DTMFToneDial2=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF%20Tone%20Dial%202.ogg');
        DTMFToneDial2.play();
    }
}

function dial3() {
    if(allowDial == true); {
        numberDial();
        number=number+"3";
        var DTMFToneDial3=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 3.ogg');
        DTMFToneDial3.play();
    }
}

function dial4() {
    if(allowDial == true) {
        numberDial();
        number=number+"4";
        var DTMFToneDial4=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 4.ogg');
        DTMFToneDial4.play();
    }
}

function dial5() {
    if(allowDial == true) {
        numberDial();
        number=number+"5";
        var DTMFToneDial5=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 5.ogg');
        DTMFToneDial5.play();
    }
}

function dial6() {
    if(allowDial == true) {
        numberDial();
        number=number+"6";
        var DTMFToneDial6=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 6.ogg');
        DTMFToneDial6.play();
    }
}

function dial7() {
    if(allowDial == true) {
        numberDial();
        number=number+"7";
        var DTMFToneDial7=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 7.ogg');
        DTMFToneDial7.play();
    }
}

function dial8() {
    if(allowDial == true) {
        numberDial();
        number=number+"8";
        var DTMFToneDial8=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 8.ogg');
        DTMFToneDial8.play();
    }
}

function dial9() {
    if(allowDial == true) {
        numberDial();
        number=number+"9";
        var DTMFToneDial9=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 9.ogg');
        DTMFToneDial9.play();
    }
}

function dialStar() {
    if(allowDial == true) {
        numberDial();
        number=number+"*";
        var DTMFToneDialStar=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Star.ogg');
        DTMFToneDialStar.play();
    }
}

function dial0() {
    if(allowDial == true) {
        numberDial();
        number=number+"0";
        var DTMFToneDial0=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 0.ogg');
        DTMFToneDial0.play();
    }
}

function dialPound(){
    if(allowDial == true) {
        numberDial();
        number=number+"#";
        var DTMFToneDialPound=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Pound.ogg');
        DTMFToneDialPound.play();
    }
}

//this is missing a closing bracket for the function itself at the end
document.onkeydown = function (event) {
    switch (event.keycode) {
        case 32:
            button.addEventListener('click', function() {
                        toggleLineStatus();
            })
            break;
        case 49,97:
            button.addEventListener('click', function() {
                        dial1();
            })
            break;
        case 50,98:
            button.addEventListener('click', function() {
                        dial2();
            })
            break;
        case 51,99:
            button.addEventListener('click', function() {
                        dial3();
            })
            break;
        case 52,100:
            button.addEventListener('click', function() {
                        dial4();
            })
            break;
        case 53,101:
            button.addEventListener('click', function() {
                        dial5();
            })
            break;
        case 54,102:
            button.addEventListener('click', function() {
                        dial6();
            })
            break;
        case 55,103:
            button.addEventListener('click', function() {
                        dial7();
            })
            break;
        case 56,104:
            button.addEventListener('click', function() {
                        dial8();
            })
            break;
        case 57,105:
            button.addEventListener('click', function() {
                        dial9();
            })
            break;
        case 106:
            button.addEventListener('click', function() {
                        dialStar();
            })
            break;
        case 48,96:
            button.addEventListener('click', function() {
                        dial0();
            })
            break;
        case 109:
            button.addEventListener('click', function() {
                        dialPound();
            })
            break;
}
}

//this function is missing a closing bracket for the function itself at the end
function ring() {
    ringingTone.play();
    timesRung++;
    if(timesRung>1) {
        setTimeout(response,700);
    }
    }

function dial(){
    allowDial=false;
    ring();
    setTimeout(ring,4000);
}


function busy() {
    busyTone();
    }

function busyTone() {
    var pickupBusy=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Busy%20Tone/USA%20Busy%20Tone.ogg');
    pickupBusy.play();
    pickupBusy.currentTime=0;
    setInterval(busyTone,4000);
    }
    
function operatorPutCallThrough() {
    operatorPickup.play(true);
}

function response(){
    switch(number) {
        case "0":
            var operatorPickup=new Audio('callResponses/OperatorAnswer.wav');
            operatorPickup.addEventListener("click", function() {
                number=prompt("Operator, your number please? (Numbers only; enter 'police' for police and emergency)");
                if(number==null){
                    number="0";
                }
})
            break;
        case "611":
            var pickup611=new Audio('callResponses/611.wav');
            pickup611.addEventListener("click", function(){
                timeoutHowler();
                pickup611.play();
            })
            break;
        case "711":
            var pickup711=new Audio('callResponses/tdd-1.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup711.addEventListener("click", function() {
                timeoutHowler();
                pickup711.play();
            })
            break;
        case "811":
            var pickup811=new Audio('callResponses/811.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup811.addEventListener("click", function() {
                timeoutHowler();
                pickup811.play();
            })
            break;
        case "911":
            var pickup911=new Audio('callResponses/911-xxx-fleet.mp3');
            pickup911.addEventListener("click", function() {
                timeoutHowler();
                pickup911.play();
            })
            break;
        case "18477651008":
            var pickupMCI=new Audio('callResponses/MCI.wav');
            pickupMCI.addEventListener("click", function() {
                timeoutHowler();
                pickupMCI.play();
            })
            break;
        case "8675309":
            var pickup8675309=new Audio('callResponses/discoornis-bell-f1.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup8675309.addEventListener("click", function () {
                timeoutHowler();
                pickup8675309.play();
            })
            break;
        case "12124561414":
            var pickup12124561414=new Audio('callResponses/discoornis-bell-f1.mp3');
            pickup12124561414.addEventListener("click", function() {
                busy();
                pickup12124561414.play();
            })
            break;
        case "5551212":
            var pickup5551212=new Audio('callResponses/Dirassist-bell-f1.mp3');
            pickup5551212.addEventListener("click", function() {
                busy();
                pickup5551212.play();
            })
            break;
        case "5555555":
            var pickup5555555=new Audio('callResponses/timeout-xxx-fleet.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup5555555.addEventListener("click", function() {
                timeoutHowler();
                pickup5555555.play();
            })
            break;
        case "7480900":
            var pickupSelf=new Audio('callResponses/partyline-xxx-fleet.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupSelf.addEventListener("click", function() {
                busy();
                pickupSelf.play();
            })
            break;
        case "18005820655":
            var pickup18005820655=new Audio('callResponses/discoornis-bell-f1.mp3');
            pickup18005820655.addEventListener("click", function() {
                busy();
                pickup18005820655.play();
            })
            break;
        case "6508950":
            var pickupAM=new Audio('callResponses/answering-machine-1.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupAM.addEventListener("click", function() {
                pickupAM.play();
            })
            break;
        case "6500050":
            var pickupModem=new Audio('modem.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupModem.addEventListener("click", function() {
                pickupModem.play();
            })
            break;
        case "9703920":
            var pickupFax=new Audio('fax-1.mp3');
            pickupFax.addEventListener("click", function() {
                pickupFax.play();
            })
            break;
        case "17147339969":
            var pickup714=new Audio('device-conference.mp3');
            pickup714.addEventListener("click", function() {
                pickup714.play();
            })
            break;
        case "8217147339969":
            var pickup8217147339969=new Audio('device-conference.mp3');
            pickup8217147339969.addEventListener("click", function() {
            pickup8217147339969.play(); //remove the space before the asterisk
            })
            break;
        case "*6717147339969":
            var pickup6717147339969=new Audio('callResponses/reject2-xxx-fleet.mp3');
            pickup6717147339969.addEventListener("click", function() {
                timeoutHowler();
                pickup714block.play();
            })
            break;
        case "*57":
            var randNum57=Math.random()>=0.5;
            if(randNum57) {
                var pickupCallTrace=new Audio('callResponses/trace3-xxx-fleet.mp3');
            }
            else {
                var pickupCallTrace=new Audio('callResponses/trace-xxx-fleet.mp3');
                pickupCallTrace.addEventListener("click", function() {
                    timeoutHowler();
                    pickupCallTrace.play();
                })
}
            break;
        case "*69":
            var pickupStar69=new Audio('callResponses/return-xxx-fleet.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupStar69.addEventListener("click", function() {
                timeoutHowler();
                pickupStar69.play();
            })
            break;
        case "police":
            var pickupPolice=new Audio('callResponses/policePickup.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupPolice.addEventListener("click", function() {
                timeoutHowler();
                pickupPolice.play();
                var policeComplaint=prompt("Police Department, Sergeant Duffy Speaking.");
                confirm("Really? You say that "+policeComplaint);
})  
          var policeHangup=new Audio('callResponses/policeHangup.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            policeHangup.addEventListener("click", function() {
                timeoutHowler();
            })
            break;
        default:
            var pickupDefault;
            if(number.length>7){
                pickupDefault=new Audio('callResponses/ldcircuits-bell-f1.mp3');
            }
            else {
                pickupDefault=new Audio('callResponses/completeordc-xxx-fleet.mp3');
                pickupDefault.addEventListener("click", function() {
                    timeoutHowler();
                    pickupDefault.play();
                })
                }
            break;
    }
}
}
</script>
 
How's this look to you?
Code:
<script>
var hookSwitch = document.querySelector('button.hookSwitch');
hookStatus.addEventListener("click", function(){
    var hookStatus = document.querySelector('span.hookStatus');
    if ( hookStatus.classlist.contains('off') ){
        //remove 'off' class
        hookStatus.classlist.remove('off');
        //add 'on' class
        hookStatus.classlist.add('on');
        //change span text
        hookStatus.textContent = "Off Hook";
    }
    else {
        if ( hookStatus.classlist.contains('on') ){
            //remove 'on' class
            hookStatus.classlist.remove('on');
            //add 'off' class
            hookStatus.classlist.add('off');
            //change span text
            hookStatus.textContent = "Off Hook";
        }
    }
})
var dialTone=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Dial%20Tone/USA%20Dial%20Tone.ogg');
var isOffHook=false;
var callIncoming=false;
var allowDial = true;
var ringingTone=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
var timesRung=0;
var availableNumbers=["0","611","711","811","911","*67 + 1 (847) 765-1008","1 (847) 765-1008","867-5309",
                        "1 (212) 456-1414","555-1212","555-5555","748-0900","650-0050","650-8950",
                        "970-3920","1 (714) 733-9969","*57","*69"];


function reload(){
    location.reload(true);
}

document.getElementById('toggleLineStatus').onclick=function(){
    toggleLineStatus()
};

function toggleLineStatus() {
    var number="";
    var pin="";
    var checkForPin=false;
    document.getElementById('numberbeingdialed').innerHTML=number;
    var wasOnHook=false;

    if(!offHook){
        offHook=true;
        document.getElementById('hookstatus').innerHTML="Off";
        wasOnHook=true;
    } else {
        offHook=false;
        document.getElementById('hookstatus').innerHTML="On";
        clunk.pause();
        ringback.pause();
        clunk.currentTime=0;
        ringback.currentTime=0;
    }
 
    if(ringbackDialed){
        startRingback();
    } else {
        if(wasOnHook){
            ring.pause();
            ring.currentTime=0;
            playDialTone();
            dialingAllowed=true;
            nextDigitDialable=true;
            ringbackDialed=false;
            keepPlaying=true;
        }
        else {
            stopDialTone();
            setOpacity(100);
            allCircuitsBusy=false;
            keepPlaying=false;
        }
    }
}

function numberSuggestion(){
    var randomNumber=Math.floor(Math.random()*(availableNumbers.length));
    var suggestedNumber=availableNumbers[randomNumber];
    document.getElementById("suggestion").innerHTML="How about dialing <strong id='suggestedTelephoneNumber'>"+
                                                    suggestedNumber+
                                                    "</strong>? Don't like this number? Click the button above again!";
}

function receiverRaised(){
    if(allowDial == false) {
        telephoneAnswered()
    }
 
    if(allowDial == true) {
        dialTone.play();
    } else {
        offHook ();
        timeoutHowler.play();
    }
}

setCallTimeout();

function setCallTimeout(){
    var delay=5000;
    var delayCaller=Math.floor((Math.random()*8000)+1);
    delay=delay+delayCaller;
    setTimeout(incomingCall,delay);
}

function offHook(){
    isOffHook=true;
    document.getElementById("WE2500").style.display="none";
    document.getElementById("dialPad").style.display="block";
}

function dialToneTimedOut() {
    allowDial=false;
    timeoutHowler();
    if(DialToneTimedOut == true) {
        timeoutHowler.play();
        timeoutHowler.currentTime=0;
    }
}

function incomingCall(){
    var ringRing=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
    var hasTelephoneBeenAnswered=false;
    ringTelephone();
}

function ringTelephone(){
    if(!hasTelephoneBeenAnswered) {
        ringRing.play();
        ringRing.currentTime=0;
    }
     else {
    if(isOffHook == false) {
        ringRing.play();
    }
    if(allowDial == false) {
        callIncoming=true;
        setInterval(ringTelephone,5500);
    }
}

var number="";
var timeout="";

function numberDial() {
    if(dialTone){
        dialTone.pause();
        dialTone.currentTime=0
    }
}

function dial1() {
    if(allowDial == true) {
        numberDial();
        number=number+"1";
        var DTMFToneDial1=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF%20Tone%20Dial%201.ogg');
        DTMFToneDial1.play();
    }
}

function dial2() {
    if(allowDial == true); {
        numberDial();
        number=number+"2";
        var DTMFToneDial2=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF%20Tone%20Dial%202.ogg');
        DTMFToneDial2.play();
    }
}

function dial3() {
    if(allowDial == true); {
        numberDial();
        number=number+"3";
        var DTMFToneDial3=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 3.ogg');
        DTMFToneDial3.play();
    }
}

function dial4() {
    if(allowDial == true) {
        numberDial();
        number=number+"4";
        var DTMFToneDial4=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 4.ogg');
        DTMFToneDial4.play();
    }
}

function dial5() {
    if(allowDial == true) {
        numberDial();
        number=number+"5";
        var DTMFToneDial5=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 5.ogg');
        DTMFToneDial5.play();
    }
}

function dial6() {
    if(allowDial == true) {
        numberDial();
        number=number+"6";
        var DTMFToneDial6=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 6.ogg');
        DTMFToneDial6.play();
    }
}

function dial7() {
    if(allowDial == true) {
        numberDial();
        number=number+"7";
        var DTMFToneDial7=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 7.ogg');
        DTMFToneDial7.play();
    }
}

function dial8() {
    if(allowDial == true) {
        numberDial();
        number=number+"8";
        var DTMFToneDial8=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 8.ogg');
        DTMFToneDial8.play();
    }
}

function dial9() {
    if(allowDial == true) {
        numberDial();
        number=number+"9";
        var DTMFToneDial9=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 9.ogg');
        DTMFToneDial9.play();
    }
}

function dialStar() {
    if(allowDial == true) {
        numberDial();
        number=number+"*";
        var DTMFToneDialStar=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Star.ogg');
        DTMFToneDialStar.play();
    }
}

function dial0() {
    if(allowDial == true) {
        numberDial();
        number=number+"0";
        var DTMFToneDial0=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 0.ogg');
        DTMFToneDial0.play();
    }
}

function dialPound(){
    if(allowDial == true) {
        numberDial();
        number=number+"#";
        var DTMFToneDialPound=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Pound.ogg');
        DTMFToneDialPound.play();
    }
}

//this is missing a closing bracket for the function itself at the end
document.onkeydown = function (event) {
    switch (event.keycode) {
        case 32:
            button.addEventListener('click', function() {
                        toggleLineStatus();
            })
            break;
        case 49,97:
            button.addEventListener('click', function() {
                        dial1();
            })
            break;
        case 50,98:
            button.addEventListener('click', function() {
                        dial2();
            })
            break;
        case 51,99:
            button.addEventListener('click', function() {
                        dial3();
            })
            break;
        case 52,100:
            button.addEventListener('click', function() {
                        dial4();
            })
            break;
        case 53,101:
            button.addEventListener('click', function() {
                        dial5();
            })
            break;
        case 54,102:
            button.addEventListener('click', function() {
                        dial6();
            })
            break;
        case 55,103:
            button.addEventListener('click', function() {
                        dial7();
            })
            break;
        case 56,104:
            button.addEventListener('click', function() {
                        dial8();
            })
            break;
        case 57,105:
            button.addEventListener('click', function() {
                        dial9();
            })
            break;
        case 106:
            button.addEventListener('click', function() {
                        dialStar();
            })
            break;
        case 48,96:
            button.addEventListener('click', function() {
                        dial0();
            })
            break;
        case 109:
            button.addEventListener('click', function() {
                        dialPound();
            })
            break;
}
}

//this function is missing a closing bracket for the function itself at the end
function ring() {
    ringingTone.play();
    timesRung++;
    if(timesRung>1) {
        setTimeout(response,700);
    }
    }

function dial(){
    allowDial=false;
    ring();
    setTimeout(ring,4000);
}


function busy() {
    busyTone();
    }

function busyTone() {
    var pickupBusy=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Busy%20Tone/USA%20Busy%20Tone.ogg');
    pickupBusy.play();
    pickupBusy.currentTime=0;
    setInterval(busyTone,4000);
    }
 
function operatorPutCallThrough() {
    operatorPickup.play(true);
}

function response(){
    switch(number) {
        case "0":
            var operatorPickup=new Audio('callResponses/OperatorAnswer.wav');
            operatorPickup.addEventListener("click", function() {
                number=prompt("Operator, your number please? (Numbers only; enter 'police' for police and emergency)");
                if(number==null){
                    number="0";
                }
})
            break;
        case "611":
            var pickup611=new Audio('callResponses/611.wav');
            pickup611.addEventListener("click", function(){
                timeoutHowler();
                pickup611.play();
            })
            break;
        case "711":
            var pickup711=new Audio('callResponses/tdd-1.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup711.addEventListener("click", function() {
                timeoutHowler();
                pickup711.play();
            })
            break;
        case "811":
            var pickup811=new Audio('callResponses/811.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup811.addEventListener("click", function() {
                timeoutHowler();
                pickup811.play();
            })
            break;
        case "911":
            var pickup911=new Audio('callResponses/911-xxx-fleet.mp3');
            pickup911.addEventListener("click", function() {
                timeoutHowler();
                pickup911.play();
            })
            break;
        case "18477651008":
            var pickupMCI=new Audio('callResponses/MCI.wav');
            pickupMCI.addEventListener("click", function() {
                timeoutHowler();
                pickupMCI.play();
            })
            break;
        case "8675309":
            var pickup8675309=new Audio('callResponses/discoornis-bell-f1.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup8675309.addEventListener("click", function () {
                timeoutHowler();
                pickup8675309.play();
            })
            break;
        case "12124561414":
            var pickup12124561414=new Audio('callResponses/discoornis-bell-f1.mp3');
            pickup12124561414.addEventListener("click", function() {
                busy();
                pickup12124561414.play();
            })
            break;
        case "5551212":
            var pickup5551212=new Audio('callResponses/Dirassist-bell-f1.mp3');
            pickup5551212.addEventListener("click", function() {
                busy();
                pickup5551212.play();
            })
            break;
        case "5555555":
            var pickup5555555=new Audio('callResponses/timeout-xxx-fleet.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup5555555.addEventListener("click", function() {
                timeoutHowler();
                pickup5555555.play();
            })
            break;
        case "7480900":
            var pickupSelf=new Audio('callResponses/partyline-xxx-fleet.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupSelf.addEventListener("click", function() {
                busy();
                pickupSelf.play();
            })
            break;
        case "18005820655":
            var pickup18005820655=new Audio('callResponses/discoornis-bell-f1.mp3');
            pickup18005820655.addEventListener("click", function() {
                busy();
                pickup18005820655.play();
            })
            break;
        case "6508950":
            var pickupAM=new Audio('callResponses/answering-machine-1.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupAM.addEventListener("click", function() {
                pickupAM.play();
            })
            break;
        case "6500050":
            var pickupModem=new Audio('modem.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupModem.addEventListener("click", function() {
                pickupModem.play();
            })
            break;
        case "9703920":
            var pickupFax=new Audio('fax-1.mp3');
            pickupFax.addEventListener("click", function() {
                pickupFax.play();
            })
            break;
        case "17147339969":
            var pickup714=new Audio('device-conference.mp3');
            pickup714.addEventListener("click", function() {
                pickup714.play();
            })
            break;
        case "8217147339969":
            var pickup8217147339969=new Audio('device-conference.mp3');
            pickup8217147339969.addEventListener("click", function() {
            pickup8217147339969.play(); //remove the space before the asterisk
            })
            break;
        case "*6717147339969":
            var pickup6717147339969=new Audio('callResponses/reject2-xxx-fleet.mp3');
            pickup6717147339969.addEventListener("click", function() {
                timeoutHowler();
                pickup714block.play();
            })
            break;
        case "*57":
            var randNum57=Math.random()>=0.5;
            if(randNum57) {
                var pickupCallTrace=new Audio('callResponses/trace3-xxx-fleet.mp3');
            }
            else {
                var pickupCallTrace=new Audio('callResponses/trace-xxx-fleet.mp3');
                pickupCallTrace.addEventListener("click", function() {
                    timeoutHowler();
                    pickupCallTrace.play();
                })
}
            break;
        case "*69":
            var pickupStar69=new Audio('callResponses/return-xxx-fleet.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupStar69.addEventListener("click", function() {
                timeoutHowler();
                pickupStar69.play();
            })
            break;
        case "police":
            var pickupPolice=new Audio('callResponses/policePickup.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupPolice.addEventListener("click", function() {
                timeoutHowler();
                pickupPolice.play();
                var policeComplaint=prompt("Police Department, Sergeant Duffy Speaking.");
                confirm("Really? You say that "+policeComplaint);
})
          var policeHangup=new Audio('callResponses/policeHangup.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            policeHangup.addEventListener("click", function() {
                timeoutHowler();
            })
            break;
        default:
            var pickupDefault;
            if(number.length>7){
                pickupDefault=new Audio('callResponses/ldcircuits-bell-f1.mp3');
            }
            else {
                pickupDefault=new Audio('callResponses/completeordc-xxx-fleet.mp3');
                pickupDefault.addEventListener("click", function() {
                    timeoutHowler();
                    pickupDefault.play();
                })
                }
            break;
    }
}
}
</script>
not quite.
This line
JavaScript:
var hookStatus = document.querySelector('span.hookStatus');
NEEDS to be BEFORE this one
JavaScript:
hookStatus.addEventListener("click", function(){

Otherwise, when you run the code, you will get the error that you are trying to use a variable that hasn't been defined yet. Variables NEED to be DEFINED before they are used.
 
not quite.
This line
JavaScript:
var hookStatus = document.querySelector('span.hookStatus');
NEEDS to be BEFORE this one
JavaScript:
hookStatus.addEventListener("click", function(){

Otherwise, when you run the code, you will get the error that you are trying to use a variable that hasn't been defined yet. Variables NEED to be DEFINED before they are used.
How's this one?
Code:
<script>
var hookSwitch = document.querySelector('button.hookSwitch');
    var hookStatus = document.querySelector('span.hookStatus');
hookStatus.addEventListener("click", function(){
    if ( hookStatus.classlist.contains('off') ){
        //remove 'off' class
        hookStatus.classlist.remove('off');  
        //add 'on' class
        hookStatus.classlist.add('on');
        //change span text
        hookStatus.textContent = "Off Hook";  
    }
    else {
        if ( hookStatus.classlist.contains('on') ){
            //remove 'on' class
            hookStatus.classlist.remove('on');  
            //add 'off' class
            hookStatus.classlist.add('off');
            //change span text
            hookStatus.textContent = "Off Hook";
        }
    }
})
var dialTone=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Dial%20Tone/USA%20Dial%20Tone.ogg');
var isOffHook=false;
var callIncoming=false;
var allowDial = true;
var ringingTone=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
var timesRung=0;
var availableNumbers=["0","611","711","811","911","*67 + 1 (847) 765-1008","1 (847) 765-1008","867-5309",
                        "1 (212) 456-1414","555-1212","555-5555","748-0900","650-0050","650-8950",
                        "970-3920","1 (714) 733-9969","*57","*69"];


function reload(){
    location.reload(true);
}

document.getElementById('toggleLineStatus').onclick=function(){
    toggleLineStatus()
};

function toggleLineStatus() {
    var number="";
    var pin="";
    var checkForPin=false;
    document.getElementById('numberbeingdialed').innerHTML=number;
    var wasOnHook=false;

    if(!offHook){
        offHook=true;
        document.getElementById('hookstatus').innerHTML="Off";
        wasOnHook=true;
    } else {
        offHook=false;
        document.getElementById('hookstatus').innerHTML="On";
        clunk.pause();
        ringback.pause();
        clunk.currentTime=0;
        ringback.currentTime=0;
    }
 
    if(ringbackDialed){
        startRingback();
    } else {
        if(wasOnHook){
            ring.pause();
            ring.currentTime=0;
            playDialTone();
            dialingAllowed=true;
            nextDigitDialable=true;
            ringbackDialed=false;
            keepPlaying=true;
        }
        else {
            stopDialTone();
            setOpacity(100);
            allCircuitsBusy=false;
            keepPlaying=false;
        }
    }
}

function numberSuggestion(){
    var randomNumber=Math.floor(Math.random()*(availableNumbers.length));
    var suggestedNumber=availableNumbers[randomNumber];
    document.getElementById("suggestion").innerHTML="How about dialing <strong id='suggestedTelephoneNumber'>"+
                                                    suggestedNumber+
                                                    "</strong>? Don't like this number? Click the button above again!";
}

function receiverRaised(){
    if(allowDial == false) {
        telephoneAnswered()
    }
 
    if(allowDial == true) {
        dialTone.play();
    } else {
        offHook ();
        timeoutHowler.play();
    }
}

setCallTimeout();

function setCallTimeout(){
    var delay=5000;
    var delayCaller=Math.floor((Math.random()*8000)+1);
    delay=delay+delayCaller;
    setTimeout(incomingCall,delay);
}

function offHook(){
    isOffHook=true;
    document.getElementById("WE2500").style.display="none";
    document.getElementById("dialPad").style.display="block";
}

function dialToneTimedOut() {
    allowDial=false;
    timeoutHowler();
    if(DialToneTimedOut == true) {
        timeoutHowler.play();
        timeoutHowler.currentTime=0;
    }
}

function incomingCall(){
    var ringRing=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
    var hasTelephoneBeenAnswered=false;
    ringTelephone();
}

function ringTelephone(){
    if(!hasTelephoneBeenAnswered) {
        ringRing.play();
        ringRing.currentTime=0;
    }
     else {
    if(isOffHook == false) {
        ringRing.play();
    }
    if(allowDial == false) {
        callIncoming=true;
        setInterval(ringTelephone,5500);
    }
}

var number="";
var timeout="";

function numberDial() {
    if(dialTone){
        dialTone.pause();
        dialTone.currentTime=0
    }
}

function dial1() {
    if(allowDial == true) {
        numberDial();
        number=number+"1";
        var DTMFToneDial1=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF%20Tone%20Dial%201.ogg');
        DTMFToneDial1.play();
    }
}

function dial2() {
    if(allowDial == true); {
        numberDial();
        number=number+"2";
        var DTMFToneDial2=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF%20Tone%20Dial%202.ogg');
        DTMFToneDial2.play();
    }
}

function dial3() {
    if(allowDial == true); {
        numberDial();
        number=number+"3";
        var DTMFToneDial3=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 3.ogg');
        DTMFToneDial3.play();
    }
}

function dial4() {
    if(allowDial == true) {
        numberDial();
        number=number+"4";
        var DTMFToneDial4=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 4.ogg');
        DTMFToneDial4.play();
    }
}

function dial5() {
    if(allowDial == true) {
        numberDial();
        number=number+"5";
        var DTMFToneDial5=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 5.ogg');
        DTMFToneDial5.play();
    }
}

function dial6() {
    if(allowDial == true) {
        numberDial();
        number=number+"6";
        var DTMFToneDial6=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 6.ogg');
        DTMFToneDial6.play();
    }
}

function dial7() {
    if(allowDial == true) {
        numberDial();
        number=number+"7";
        var DTMFToneDial7=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 7.ogg');
        DTMFToneDial7.play();
    }
}

function dial8() {
    if(allowDial == true) {
        numberDial();
        number=number+"8";
        var DTMFToneDial8=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 8.ogg');
        DTMFToneDial8.play();
    }
}

function dial9() {
    if(allowDial == true) {
        numberDial();
        number=number+"9";
        var DTMFToneDial9=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 9.ogg');
        DTMFToneDial9.play();
    }
}

function dialStar() {
    if(allowDial == true) {
        numberDial();
        number=number+"*";
        var DTMFToneDialStar=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Star.ogg');
        DTMFToneDialStar.play();
    }
}

function dial0() {
    if(allowDial == true) {
        numberDial();
        number=number+"0";
        var DTMFToneDial0=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 0.ogg');
        DTMFToneDial0.play();
    }
}

function dialPound(){
    if(allowDial == true) {
        numberDial();
        number=number+"#";
        var DTMFToneDialPound=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Pound.ogg');
        DTMFToneDialPound.play();
    }
}

//this is missing a closing bracket for the function itself at the end
document.onkeydown = function (event) {
    switch (event.keycode) {
        case 32:
            button.addEventListener('click', function() {
                        toggleLineStatus();
            })
            break;
        case 49,97:
            button.addEventListener('click', function() {
                        dial1();
            })
            break;
        case 50,98:
            button.addEventListener('click', function() {
                        dial2();
            })
            break;
        case 51,99:
            button.addEventListener('click', function() {
                        dial3();
            })
            break;
        case 52,100:
            button.addEventListener('click', function() {
                        dial4();
            })
            break;
        case 53,101:
            button.addEventListener('click', function() {
                        dial5();
            })
            break;
        case 54,102:
            button.addEventListener('click', function() {
                        dial6();
            })
            break;
        case 55,103:
            button.addEventListener('click', function() {
                        dial7();
            })
            break;
        case 56,104:
            button.addEventListener('click', function() {
                        dial8();
            })
            break;
        case 57,105:
            button.addEventListener('click', function() {
                        dial9();
            })
            break;
        case 106:
            button.addEventListener('click', function() {
                        dialStar();
            })
            break;
        case 48,96:
            button.addEventListener('click', function() {
                        dial0();
            })
            break;
        case 109:
            button.addEventListener('click', function() {
                        dialPound();
            })
            break;
}
}

//this function is missing a closing bracket for the function itself at the end
function ring() {
    ringingTone.play();
    timesRung++;
    if(timesRung>1) {
        setTimeout(response,700);
    }
    }

function dial(){
    allowDial=false;
    ring();
    setTimeout(ring,4000);
}


function busy() {
    busyTone();
    }

function busyTone() {
    var pickupBusy=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Busy%20Tone/USA%20Busy%20Tone.ogg');
    pickupBusy.play();
    pickupBusy.currentTime=0;
    setInterval(busyTone,4000);
    }
    
function operatorPutCallThrough() {
    operatorPickup.play(true);
}

function response(){
    switch(number) {
        case "0":
            var operatorPickup=new Audio('callResponses/OperatorAnswer.wav');
            operatorPickup.addEventListener("click", function() {
                number=prompt("Operator, your number please? (Numbers only; enter 'police' for police and emergency)");
                if(number==null){
                    number="0";
                }
})
            break;
        case "611":
            var pickup611=new Audio('callResponses/611.wav');
            pickup611.addEventListener("click", function(){
                timeoutHowler();
                pickup611.play();
            })
            break;
        case "711":
            var pickup711=new Audio('callResponses/tdd-1.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup711.addEventListener("click", function() {
                timeoutHowler();
                pickup711.play();
            })
            break;
        case "811":
            var pickup811=new Audio('callResponses/811.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup811.addEventListener("click", function() {
                timeoutHowler();
                pickup811.play();
            })
            break;
        case "911":
            var pickup911=new Audio('callResponses/911-xxx-fleet.mp3');
            pickup911.addEventListener("click", function() {
                timeoutHowler();
                pickup911.play();
            })
            break;
        case "18477651008":
            var pickupMCI=new Audio('callResponses/MCI.wav');
            pickupMCI.addEventListener("click", function() {
                timeoutHowler();
                pickupMCI.play();
            })
            break;
        case "8675309":
            var pickup8675309=new Audio('callResponses/discoornis-bell-f1.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup8675309.addEventListener("click", function () {
                timeoutHowler();
                pickup8675309.play();
            })
            break;
        case "12124561414":
            var pickup12124561414=new Audio('callResponses/discoornis-bell-f1.mp3');
            pickup12124561414.addEventListener("click", function() {
                busy();
                pickup12124561414.play();
            })
            break;
        case "5551212":
            var pickup5551212=new Audio('callResponses/Dirassist-bell-f1.mp3');
            pickup5551212.addEventListener("click", function() {
                busy();
                pickup5551212.play();
            })
            break;
        case "5555555":
            var pickup5555555=new Audio('callResponses/timeout-xxx-fleet.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup5555555.addEventListener("click", function() {
                timeoutHowler();
                pickup5555555.play();
            })
            break;
        case "7480900":
            var pickupSelf=new Audio('callResponses/partyline-xxx-fleet.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupSelf.addEventListener("click", function() {
                busy();
                pickupSelf.play();
            })
            break;
        case "18005820655":
            var pickup18005820655=new Audio('callResponses/discoornis-bell-f1.mp3');
            pickup18005820655.addEventListener("click", function() {
                busy();
                pickup18005820655.play();
            })
            break;
        case "6508950":
            var pickupAM=new Audio('callResponses/answering-machine-1.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupAM.addEventListener("click", function() {
                pickupAM.play();
            })
            break;
        case "6500050":
            var pickupModem=new Audio('modem.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupModem.addEventListener("click", function() {
                pickupModem.play();
            })
            break;
        case "9703920":
            var pickupFax=new Audio('fax-1.mp3');
            pickupFax.addEventListener("click", function() {
                pickupFax.play();
            })
            break;
        case "17147339969":
            var pickup714=new Audio('device-conference.mp3');
            pickup714.addEventListener("click", function() {
                pickup714.play();
            })
            break;
        case "8217147339969":
            var pickup8217147339969=new Audio('device-conference.mp3');
            pickup8217147339969.addEventListener("click", function() {
            pickup8217147339969.play(); //remove the space before the asterisk
            })
            break;
        case "*6717147339969":
            var pickup6717147339969=new Audio('callResponses/reject2-xxx-fleet.mp3');
            pickup6717147339969.addEventListener("click", function() {
                timeoutHowler();
                pickup714block.play();
            })
            break;
        case "*57":
            var randNum57=Math.random()>=0.5;
            if(randNum57) {
                var pickupCallTrace=new Audio('callResponses/trace3-xxx-fleet.mp3');
            }
            else {
                var pickupCallTrace=new Audio('callResponses/trace-xxx-fleet.mp3');
                pickupCallTrace.addEventListener("click", function() {
                    timeoutHowler();
                    pickupCallTrace.play();
                })
}
            break;
        case "*69":
            var pickupStar69=new Audio('callResponses/return-xxx-fleet.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupStar69.addEventListener("click", function() {
                timeoutHowler();
                pickupStar69.play();
            })
            break;
        case "police":
            var pickupPolice=new Audio('callResponses/policePickup.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupPolice.addEventListener("click", function() {
                timeoutHowler();
                pickupPolice.play();
                var policeComplaint=prompt("Police Department, Sergeant Duffy Speaking.");
                confirm("Really? You say that "+policeComplaint);
})  
          var policeHangup=new Audio('callResponses/policeHangup.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            policeHangup.addEventListener("click", function() {
                timeoutHowler();
            })
            break;
        default:
            var pickupDefault;
            if(number.length>7){
                pickupDefault=new Audio('callResponses/ldcircuits-bell-f1.mp3');
            }
            else {
                pickupDefault=new Audio('callResponses/completeordc-xxx-fleet.mp3');
                pickupDefault.addEventListener("click", function() {
                    timeoutHowler();
                    pickupDefault.play();
                })
                }
            break;
    }
}
}
</script>
 
How's this one?
Code:
<script>
var hookSwitch = document.querySelector('button.hookSwitch');
    var hookStatus = document.querySelector('span.hookStatus');
hookStatus.addEventListener("click", function(){
    if ( hookStatus.classlist.contains('off') ){
        //remove 'off' class
        hookStatus.classlist.remove('off'); 
        //add 'on' class
        hookStatus.classlist.add('on');
        //change span text
        hookStatus.textContent = "Off Hook"; 
    }
    else {
        if ( hookStatus.classlist.contains('on') ){
            //remove 'on' class
            hookStatus.classlist.remove('on'); 
            //add 'off' class
            hookStatus.classlist.add('off');
            //change span text
            hookStatus.textContent = "Off Hook";
        }
    }
})
var dialTone=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Dial%20Tone/USA%20Dial%20Tone.ogg');
var isOffHook=false;
var callIncoming=false;
var allowDial = true;
var ringingTone=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
var timesRung=0;
var availableNumbers=["0","611","711","811","911","*67 + 1 (847) 765-1008","1 (847) 765-1008","867-5309",
                        "1 (212) 456-1414","555-1212","555-5555","748-0900","650-0050","650-8950",
                        "970-3920","1 (714) 733-9969","*57","*69"];


function reload(){
    location.reload(true);
}

document.getElementById('toggleLineStatus').onclick=function(){
    toggleLineStatus()
};

function toggleLineStatus() {
    var number="";
    var pin="";
    var checkForPin=false;
    document.getElementById('numberbeingdialed').innerHTML=number;
    var wasOnHook=false;

    if(!offHook){
        offHook=true;
        document.getElementById('hookstatus').innerHTML="Off";
        wasOnHook=true;
    } else {
        offHook=false;
        document.getElementById('hookstatus').innerHTML="On";
        clunk.pause();
        ringback.pause();
        clunk.currentTime=0;
        ringback.currentTime=0;
    }
 
    if(ringbackDialed){
        startRingback();
    } else {
        if(wasOnHook){
            ring.pause();
            ring.currentTime=0;
            playDialTone();
            dialingAllowed=true;
            nextDigitDialable=true;
            ringbackDialed=false;
            keepPlaying=true;
        }
        else {
            stopDialTone();
            setOpacity(100);
            allCircuitsBusy=false;
            keepPlaying=false;
        }
    }
}

function numberSuggestion(){
    var randomNumber=Math.floor(Math.random()*(availableNumbers.length));
    var suggestedNumber=availableNumbers[randomNumber];
    document.getElementById("suggestion").innerHTML="How about dialing <strong id='suggestedTelephoneNumber'>"+
                                                    suggestedNumber+
                                                    "</strong>? Don't like this number? Click the button above again!";
}

function receiverRaised(){
    if(allowDial == false) {
        telephoneAnswered()
    }
 
    if(allowDial == true) {
        dialTone.play();
    } else {
        offHook ();
        timeoutHowler.play();
    }
}

setCallTimeout();

function setCallTimeout(){
    var delay=5000;
    var delayCaller=Math.floor((Math.random()*8000)+1);
    delay=delay+delayCaller;
    setTimeout(incomingCall,delay);
}

function offHook(){
    isOffHook=true;
    document.getElementById("WE2500").style.display="none";
    document.getElementById("dialPad").style.display="block";
}

function dialToneTimedOut() {
    allowDial=false;
    timeoutHowler();
    if(DialToneTimedOut == true) {
        timeoutHowler.play();
        timeoutHowler.currentTime=0;
    }
}

function incomingCall(){
    var ringRing=new Audio('Ringing Tone/Princess%20702B%20Bell%20Ring.ogg');
    var hasTelephoneBeenAnswered=false;
    ringTelephone();
}

function ringTelephone(){
    if(!hasTelephoneBeenAnswered) {
        ringRing.play();
        ringRing.currentTime=0;
    }
     else {
    if(isOffHook == false) {
        ringRing.play();
    }
    if(allowDial == false) {
        callIncoming=true;
        setInterval(ringTelephone,5500);
    }
}

var number="";
var timeout="";

function numberDial() {
    if(dialTone){
        dialTone.pause();
        dialTone.currentTime=0
    }
}

function dial1() {
    if(allowDial == true) {
        numberDial();
        number=number+"1";
        var DTMFToneDial1=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF%20Tone%20Dial%201.ogg');
        DTMFToneDial1.play();
    }
}

function dial2() {
    if(allowDial == true); {
        numberDial();
        number=number+"2";
        var DTMFToneDial2=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF%20Tone%20Dial%202.ogg');
        DTMFToneDial2.play();
    }
}

function dial3() {
    if(allowDial == true); {
        numberDial();
        number=number+"3";
        var DTMFToneDial3=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 3.ogg');
        DTMFToneDial3.play();
    }
}

function dial4() {
    if(allowDial == true) {
        numberDial();
        number=number+"4";
        var DTMFToneDial4=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 4.ogg');
        DTMFToneDial4.play();
    }
}

function dial5() {
    if(allowDial == true) {
        numberDial();
        number=number+"5";
        var DTMFToneDial5=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 5.ogg');
        DTMFToneDial5.play();
    }
}

function dial6() {
    if(allowDial == true) {
        numberDial();
        number=number+"6";
        var DTMFToneDial6=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 6.ogg');
        DTMFToneDial6.play();
    }
}

function dial7() {
    if(allowDial == true) {
        numberDial();
        number=number+"7";
        var DTMFToneDial7=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 7.ogg');
        DTMFToneDial7.play();
    }
}

function dial8() {
    if(allowDial == true) {
        numberDial();
        number=number+"8";
        var DTMFToneDial8=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 8.ogg');
        DTMFToneDial8.play();
    }
}

function dial9() {
    if(allowDial == true) {
        numberDial();
        number=number+"9";
        var DTMFToneDial9=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 9.ogg');
        DTMFToneDial9.play();
    }
}

function dialStar() {
    if(allowDial == true) {
        numberDial();
        number=number+"*";
        var DTMFToneDialStar=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Star.ogg');
        DTMFToneDialStar.play();
    }
}

function dial0() {
    if(allowDial == true) {
        numberDial();
        number=number+"0";
        var DTMFToneDial0=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial 0.ogg');
        DTMFToneDial0.play();
    }
}

function dialPound(){
    if(allowDial == true) {
        numberDial();
        number=number+"#";
        var DTMFToneDialPound=new Audio('file:///M:/Documents/Virtual%20Phone/DTMF%20Tone%20Dials/DTMF Tone Dial Pound.ogg');
        DTMFToneDialPound.play();
    }
}

//this is missing a closing bracket for the function itself at the end
document.onkeydown = function (event) {
    switch (event.keycode) {
        case 32:
            button.addEventListener('click', function() {
                        toggleLineStatus();
            })
            break;
        case 49,97:
            button.addEventListener('click', function() {
                        dial1();
            })
            break;
        case 50,98:
            button.addEventListener('click', function() {
                        dial2();
            })
            break;
        case 51,99:
            button.addEventListener('click', function() {
                        dial3();
            })
            break;
        case 52,100:
            button.addEventListener('click', function() {
                        dial4();
            })
            break;
        case 53,101:
            button.addEventListener('click', function() {
                        dial5();
            })
            break;
        case 54,102:
            button.addEventListener('click', function() {
                        dial6();
            })
            break;
        case 55,103:
            button.addEventListener('click', function() {
                        dial7();
            })
            break;
        case 56,104:
            button.addEventListener('click', function() {
                        dial8();
            })
            break;
        case 57,105:
            button.addEventListener('click', function() {
                        dial9();
            })
            break;
        case 106:
            button.addEventListener('click', function() {
                        dialStar();
            })
            break;
        case 48,96:
            button.addEventListener('click', function() {
                        dial0();
            })
            break;
        case 109:
            button.addEventListener('click', function() {
                        dialPound();
            })
            break;
}
}

//this function is missing a closing bracket for the function itself at the end
function ring() {
    ringingTone.play();
    timesRung++;
    if(timesRung>1) {
        setTimeout(response,700);
    }
    }

function dial(){
    allowDial=false;
    ring();
    setTimeout(ring,4000);
}


function busy() {
    busyTone();
    }

function busyTone() {
    var pickupBusy=new Audio('file:///M:/Documents/Virtual%20Phone/Call%20Progress%20Tones/Busy%20Tone/USA%20Busy%20Tone.ogg');
    pickupBusy.play();
    pickupBusy.currentTime=0;
    setInterval(busyTone,4000);
    }
   
function operatorPutCallThrough() {
    operatorPickup.play(true);
}

function response(){
    switch(number) {
        case "0":
            var operatorPickup=new Audio('callResponses/OperatorAnswer.wav');
            operatorPickup.addEventListener("click", function() {
                number=prompt("Operator, your number please? (Numbers only; enter 'police' for police and emergency)");
                if(number==null){
                    number="0";
                }
})
            break;
        case "611":
            var pickup611=new Audio('callResponses/611.wav');
            pickup611.addEventListener("click", function(){
                timeoutHowler();
                pickup611.play();
            })
            break;
        case "711":
            var pickup711=new Audio('callResponses/tdd-1.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup711.addEventListener("click", function() {
                timeoutHowler();
                pickup711.play();
            })
            break;
        case "811":
            var pickup811=new Audio('callResponses/811.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup811.addEventListener("click", function() {
                timeoutHowler();
                pickup811.play();
            })
            break;
        case "911":
            var pickup911=new Audio('callResponses/911-xxx-fleet.mp3');
            pickup911.addEventListener("click", function() {
                timeoutHowler();
                pickup911.play();
            })
            break;
        case "18477651008":
            var pickupMCI=new Audio('callResponses/MCI.wav');
            pickupMCI.addEventListener("click", function() {
                timeoutHowler();
                pickupMCI.play();
            })
            break;
        case "8675309":
            var pickup8675309=new Audio('callResponses/discoornis-bell-f1.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup8675309.addEventListener("click", function () {
                timeoutHowler();
                pickup8675309.play();
            })
            break;
        case "12124561414":
            var pickup12124561414=new Audio('callResponses/discoornis-bell-f1.mp3');
            pickup12124561414.addEventListener("click", function() {
                busy();
                pickup12124561414.play();
            })
            break;
        case "5551212":
            var pickup5551212=new Audio('callResponses/Dirassist-bell-f1.mp3');
            pickup5551212.addEventListener("click", function() {
                busy();
                pickup5551212.play();
            })
            break;
        case "5555555":
            var pickup5555555=new Audio('callResponses/timeout-xxx-fleet.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickup5555555.addEventListener("click", function() {
                timeoutHowler();
                pickup5555555.play();
            })
            break;
        case "7480900":
            var pickupSelf=new Audio('callResponses/partyline-xxx-fleet.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupSelf.addEventListener("click", function() {
                busy();
                pickupSelf.play();
            })
            break;
        case "18005820655":
            var pickup18005820655=new Audio('callResponses/discoornis-bell-f1.mp3');
            pickup18005820655.addEventListener("click", function() {
                busy();
                pickup18005820655.play();
            })
            break;
        case "6508950":
            var pickupAM=new Audio('callResponses/answering-machine-1.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupAM.addEventListener("click", function() {
                pickupAM.play();
            })
            break;
        case "6500050":
            var pickupModem=new Audio('modem.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupModem.addEventListener("click", function() {
                pickupModem.play();
            })
            break;
        case "9703920":
            var pickupFax=new Audio('fax-1.mp3');
            pickupFax.addEventListener("click", function() {
                pickupFax.play();
            })
            break;
        case "17147339969":
            var pickup714=new Audio('device-conference.mp3');
            pickup714.addEventListener("click", function() {
                pickup714.play();
            })
            break;
        case "8217147339969":
            var pickup8217147339969=new Audio('device-conference.mp3');
            pickup8217147339969.addEventListener("click", function() {
            pickup8217147339969.play(); //remove the space before the asterisk
            })
            break;
        case "*6717147339969":
            var pickup6717147339969=new Audio('callResponses/reject2-xxx-fleet.mp3');
            pickup6717147339969.addEventListener("click", function() {
                timeoutHowler();
                pickup714block.play();
            })
            break;
        case "*57":
            var randNum57=Math.random()>=0.5;
            if(randNum57) {
                var pickupCallTrace=new Audio('callResponses/trace3-xxx-fleet.mp3');
            }
            else {
                var pickupCallTrace=new Audio('callResponses/trace-xxx-fleet.mp3');
                pickupCallTrace.addEventListener("click", function() {
                    timeoutHowler();
                    pickupCallTrace.play();
                })
}
            break;
        case "*69":
            var pickupStar69=new Audio('callResponses/return-xxx-fleet.mp3');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupStar69.addEventListener("click", function() {
                timeoutHowler();
                pickupStar69.play();
            })
            break;
        case "police":
            var pickupPolice=new Audio('callResponses/policePickup.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            pickupPolice.addEventListener("click", function() {
                timeoutHowler();
                pickupPolice.play();
                var policeComplaint=prompt("Police Department, Sergeant Duffy Speaking.");
                confirm("Really? You say that "+policeComplaint);
}) 
          var policeHangup=new Audio('callResponses/policeHangup.wav');
            //this function call is missing a closing parenthesis for the function itself at the end, just before the break
            policeHangup.addEventListener("click", function() {
                timeoutHowler();
            })
            break;
        default:
            var pickupDefault;
            if(number.length>7){
                pickupDefault=new Audio('callResponses/ldcircuits-bell-f1.mp3');
            }
            else {
                pickupDefault=new Audio('callResponses/completeordc-xxx-fleet.mp3');
                pickupDefault.addEventListener("click", function() {
                    timeoutHowler();
                    pickupDefault.play();
                })
                }
            break;
    }
}
}
</script>
That looks good
 
Run the project, and see if it works as expected, or if you still get errors. Web/software development is basically a rinse and repeat thing lol.
Here's an error I've never got before. Something about an "Uncaught Type Error". It says, "document.getElementById(...) is null", which is something I'm confused about. It also says something about "<anonymous>". I'm confused!
1702976104594.png
 
Here's an error I've never got before. Something about an "Uncaught Type Error". It says, "document.getElementById(...) is null", which is something I'm confused about. It also says something about "<anonymous>". I'm confused!
View attachment 2436
This means that whatever you are trying to retrieve with that is not being captured. Where are you putting your script?
 
that line of code:
document.getElementById, what is inside of those parentheses?
'toggleLineStatus' is inside the parentheses. Is that the one you were thinking of? There's also another one that says Here's a snippet of code that contains those "document" lines.
Code:
document.getElementById('toggleLineStatus').onclick=function(){
    toggleLineStatus()
};

function toggleLineStatus() {
    var number="";
    var pin="";
    var checkForPin=false;
    document.getElementById('numberbeingdialed').innerHTML=number;
    var wasOnHook=false;

    if(!offHook){
        offHook=true;
        document.getElementById('hookstatus').innerHTML="Off";
        wasOnHook=true;
    } else {
        offHook=false;
        document.getElementById('hookstatus').innerHTML="On";
        clunk.pause();
        ringback.pause();
        clunk.currentTime=0;
        ringback.currentTime=0;
    }
 
    if(ringbackDialed){
        startRingback();
    } else {
        if(wasOnHook){
            ring.pause();
            ring.currentTime=0;
            playDialTone();
            dialingAllowed=true;
            nextDigitDialable=true;
            ringbackDialed=false;
            keepPlaying=true;
        }
        else {
            stopDialTone();
            setOpacity(100);
            allCircuitsBusy=false;
            keepPlaying=false;
        }
    }
}
 
'toggleLineStatus' is inside the parentheses. Is that the one you were thinking of? There's also another one that says Here's a snippet of code that contains those "document" lines.
Code:
document.getElementById('toggleLineStatus').onclick=function(){
    toggleLineStatus()
};

function toggleLineStatus() {
    var number="";
    var pin="";
    var checkForPin=false;
    document.getElementById('numberbeingdialed').innerHTML=number;
    var wasOnHook=false;

    if(!offHook){
        offHook=true;
        document.getElementById('hookstatus').innerHTML="Off";
        wasOnHook=true;
    } else {
        offHook=false;
        document.getElementById('hookstatus').innerHTML="On";
        clunk.pause();
        ringback.pause();
        clunk.currentTime=0;
        ringback.currentTime=0;
    }
 
    if(ringbackDialed){
        startRingback();
    } else {
        if(wasOnHook){
            ring.pause();
            ring.currentTime=0;
            playDialTone();
            dialingAllowed=true;
            nextDigitDialable=true;
            ringbackDialed=false;
            keepPlaying=true;
        }
        else {
            stopDialTone();
            setOpacity(100);
            allCircuitsBusy=false;
            keepPlaying=false;
        }
    }
}
which one is throwing the error?
 

New Threads

Buy us a coffee!

Back
Top Bottom