﻿//Container to group similar methods and prevent naming collisions...
function Phone() {}
    
    //Dynamically loads an external javascript file and sets callback upon load...
    Phone.LoadScript = function(source, callback) {
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = source;
        
        if (callback != null)
        {
            script.onreadystatechange = callback;
            script.onload = callback;
        }

        var head = document.getElementsByTagName("HEAD");
        if (head[0] != null) head[0].appendChild(script);
    }

    //Container to group similar methods and prevent naming collisions...
    Phone.SetSource = function() {}

        //Sends a source phone number to the server, checking for required Prototype.Ajax along the way...
        Phone.SetSource.Invoke = function(url, phone) {
        if (typeof (Ajax) == 'undefined') 
            {                
                Phone.LoadScript("//scripts.saveology.com/prototype.js", 
                    function() { Phone.SetSource.SendToServer(url, phone); });
            } else {
                Phone.SetSource.SendToServer(url, phone);
            }
        }
        
        //Handles an asynchronous response from Phone.SetSource.SendToServer...
        Phone.SetSource.ServerResponse = function(xmlHttpRequest, responseHeader) {
            var xmlMessage = xmlHttpRequest.responseXML;
            
            //Do nothing with response...
        }
            
        //Sends an updated source phone number to the server using Prototype.Ajax...
        Phone.SetSource.SendToServer = function (url, phone) {
            if (typeof(Ajax) != 'undefined') {
                var params = "phone=" + phone;
                
                //Invoke Prototype.Ajax...
                var ajaxRequest = new Ajax.Request(url, {
                        method:       "get", 
                        parameters:   params, 
                        asynchronous: true,
                        onComplete:   Phone.SetSource.ServerResponse
                    });
            }
        }
