function GetXmlHttpObject(handler) { 
    var objXmlHttp = null;
    
    if (!window.XMLHttpRequest) {
        // Microsoft
        objXmlHttp = GetMSXmlHttp();
        if (objXmlHttp != null) objXmlHttp.onreadystatechange = handler;
    } else {
        // Mozilla | Netscape | Safari
        objXmlHttp = new XMLHttpRequest();
        if (objXmlHttp != null) {
            try {
                objXmlHttp.onreadystatechange = handler;
            } catch(e) {
                objXmlHttp.onload = handler;
                objXmlHttp.onerror = handler;
            }
        }
    }
    
    return objXmlHttp; 
} 

function GetMSXmlHttp() {
    var xmlHttp = null;
    var clsids = [ "Msxml2.XMLHTTP.6.0"
                 , "Msxml2.XMLHTTP.5.0"
                 , "Msxml2.XMLHTTP.4.0"
                 , "Msxml2.XMLHTTP.3.0"
                 , "Msxml2.XMLHTTP.2.6"
                 , "Microsoft.XMLHTTP.1.0"
                 , "Microsoft.XMLHTTP.1"
                 , "Microsoft.XMLHTTP"
                 ];
                 
    for (var lup = 0; lup < clsids.length && xmlHttp == null; lup++) xmlHttp = CreateXmlHttp(clsids[lup]);
    
    return xmlHttp;
}

function CreateXmlHttp(clsid) {
    var xmlHttp = null;
    
    try {
        xmlHttp = new ActiveXObject(clsid);
        lastclsid = clsid;
        return xmlHttp;
    } catch(e) {
    }
}

function SendXmlHttpRequest(xmlhttp, url) { 
    xmlhttp.open('GET', url, true); 
    xmlhttp.send(null); 
}

var xmlHttp; 

function ExecuteCall(url, callbackPointer) { 
    try { 
        xmlHttp = GetXmlHttpObject(callbackPointer);
        SendXmlHttpRequest(xmlHttp, url);
    }
    catch(e) {} 
} 

function AddZingerLink(merchantLinkID) {
    var now = new Date(); 
    var url = '/stores/processzingerlist.aspx?merchantLinkID=' + merchantLinkID + '&noCache=' + now.getTime(); 
    ExecuteCall(url, AddZingerLink_Callback); 
} 
function AddZingerLink_Callback() { 
    var success = false;
    try { 
        //readyState of 4 or 'complete' represents that data has been returned  
        if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete') { 
            var response = xmlHttp.responseText; 
            if (response == "ok") alert('The link has been added to your Zinger List');
            else alert('Sorry, we are unable to update your Zinger List at this time.');
        } 
    } catch (e) {}
}    


function ProcessTellAFriendLink(merchantLinkID) {
    var now = new Date(); 
    var url = '/customer/secure/inviteFriends.aspx?merchantLinkID=' + merchantLinkID + '&noCache=' + now.getTime(); 
    ExecuteCall(url, ProcessTellAFriendLink_Callback); 
} 
function ProcessTellAFriendLink_Callback() { 
    var success = false;
    try { 
        //readyState of 4 or 'complete' represents that data has been returned  
        if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete') { 
            var response = xmlHttp.responseText; 
            if (response == "ok") alert('Your Tell A Friend Link/Email has been processed');
            else alert('Sorry, we are unable to process your Tell A Friend Email Request at this time.');
        } 
    } catch (e) {}
}    

