var portSegment = "";var port        = location.port;if (port != ""){    portSegment = ":"+port;}var web_svc_url = "";bDebugWebService= false;var sDomain=location.hostname;var wsPath = "/HrbWebservices/services/PartnerInformation";if (sDomain.indexOf("atomzdev.hr")!= -1){   // VISUAL SCIENCES    web_svc_url=location.protocol+"//hrblock.com"+wsPath;}else if (sDomain.indexOf("block.com")!= -1 || sDomain.indexOf("hrb.com")!= -1 || sDomain.indexOf("hrbtax.com")!= -1){   // HRBLOCK.COM    web_svc_url=location.protocol+"//"+location.hostname+wsPath;}else if (sDomain.indexOf("taxcut.com")!= -1 ){   // TAXCUT.COM    web_svc_url=location.protocol+"//"+location.hostname+wsPath;}else if (sDomain.indexOf("taxnet.com")!= -1 ){   // TAXNET.COM    web_svc_url=location.protocol+"//"+location.hostname+wsPath;}else if ( (sDomain.indexOf("carro")!= -1) || (sDomain.indexOf("4test")!= -1) ){   // QA    web_svc_url=location.protocol+"//"+location.hostname+portSegment+wsPath;}else if (sDomain.indexOf("janu")!= -1){      web_svc_url=location.protocol+"//"+location.hostname+portSegment+wsPath;    }else if (sDomain.indexOf("qa.")!= -1){   // QA    web_svc_url=location.protocol+"//"+location.hostname+portSegment+wsPath;}else if (sDomain.indexOf("msitep")!= -1){   // TS CMS    web_svc_url=location.protocol+"//carroll"+wsPath}else if (sDomain.indexOf("msitede")!= -1){   // TS CMS    web_svc_url=location.protocol+"//"+location.hostname+portSegment+wsPath;}else{   // OTHER    web_svc_url=location.protocol+"//"+location.hostname+wsPath;}//if (bDebugWebService) alert("sDomain=='"+sDomain+"', port=='"+port+"', portSegment=='"+portSegment+"', sDomain.indexOf('4test')=='"+sDomain.indexOf("4test.com")+"', web_svc_url=='"+web_svc_url+"'");/* --------------------------------------------------Function: callProductPricingWebService()Author  : GaganDescription: This Method is used to form the SOAP Message and the message is sent to the Webservice Server----------------------------------------------------*/function callProductPricingWebService(poOtpPartnerID,isPartnerTunneled) {    //if (bDebugWebService) alert('Product Pricing Web Service to be called with otpPartnerID --'+poOtpPartnerID);    g_bHttpRequestFailed   = false;    http_request = false;    if (window.XMLHttpRequest) //Mozilla Safari    {        http_request = new XMLHttpRequest();        if (http_request.overrideMimeType)         {            http_request.overrideMimeType('text/xml');            //http_request.overrideMimeType('text/html');        }    }    else if (window.ActiveXObject)     { // IE        try         {             http_request = new ActiveXObject("Msxml2.XMLHTTP");        }         catch (e)        {            try            {                http_request = new ActiveXObject("Microsoft.XMLHTTP");            }             catch (e)             {                recordExceptionInOmniture("pws","9","Microsoft.XMLHTTP failed");                webServiceCallFailed("");            }        }    }    if (!http_request)    {        //if (bDebugWebService) alert('Cannot create http_request instance');        g_bHttpRequestFailed   = true;        g_product_ws_active    = false;        recordExceptionInOmniture("pws","9","Cannot create http_request instance");        webServiceCallFailed("");        return false;    }    var soapRequestXML='<?xml version="1.0" encoding="ISO-8859-1"?>'+    '<SOAP-ENV:Envelope xmlns:tns1="http://handler.partner.webservices.hrblock.com" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:m="'+web_svc_url+'" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">'+    '    <SOAP-ENV:Body>'+    '        <getPartnerProductsDetails xmlns="'+web_svc_url+'">'+    '            <otpPartnerId xsi:type="xsd:string">'+poOtpPartnerID+'</otpPartnerId>'+    '            <isPartnerTunneled xsi:type="xsd:string">'+isPartnerTunneled+'</isPartnerTunneled>'+    '        </getPartnerProductsDetails>'+    '    </SOAP-ENV:Body>'+    '</SOAP-ENV:Envelope>';    //if (bDebugWebService) alert(soapRequestXML);    http_request.onreadystatechange = function() { alertContents(); };      //if (bDebugWebService) alert('http_request.open("POST", web_svc_url, true);');    try    {         http_request.open('POST', web_svc_url, true)    }    catch (e)    {        recordExceptionInOmniture("pws","9","POST failed-"+web_svc_url);        webServiceCallFailed("");        return false;    }    //if (bDebugWebService) alert('http_request.setRequestHeader("Content-type", "text/xml; charset=utf-8")');    http_request.setRequestHeader("Content-type", "text/xml; charset=utf-8");    //if (bDebugWebService) alert('http_request.setRequestHeader("Content-length", soapRequestXML.length)');    http_request.setRequestHeader("Content-length", soapRequestXML.length);    //if (bDebugWebService) alert('http_request.setRequestHeader("Connection", "close")');    http_request.setRequestHeader("Connection", "close");    //if (bDebugWebService) alert('http_request.setRequestHeader("SOAPAction", "/");');    http_request.setRequestHeader("SOAPAction", "/");    //if (bDebugWebService) alert("sending soap request");    http_request.send(soapRequestXML);    }/* --------------------------------------------------Function: alertContents()Author  : GaganDescription: The alert Java Script is called Every time the http_request.onreadystatechange changes.and populates the global Variables.When the alert value is 4 it means the response has come----------------------------------------------------*/function alertContents(){    //if (bDebugWebService) alert('Ready State Value -- '+http_request.readyState);    if (http_request.readyState == 4)    {        //if (bDebugWebService) alert('Return Code ----'+http_request.status);        if (http_request.status == 200)         {            //if (bDebugWebService) alert('Web Service Successful -- '+http_request.responseText);                             if (http_request.responseText=='')            {                recordExceptionInOmniture("pws","9","alertContents()-W/S no info. "+web_svc_url);                webServiceCallFailed("");             }            else            {                parseAndPopulate(http_request.responseText);            }        }         else          {            recordExceptionInOmniture("pws","9","alertContents()-W/S failed. "+http_request.status+". "+web_svc_url);            webServiceCallFailed("");           }    }} /* --------------------------------------------------Function: parseAndPopulate()Author  : GaganDescription: This Method Parses and Populate the Response Data from XML into Approriate Data Structure             Also it calls the user provided function Name so continue the Processes  ----------------------------------------------------*/function parseAndPopulate(psResponseXML){    var processingNodeName  = "";    var lastElementProcessed   = "";    try    {        if(window.ActiveXObject)        {            var doc = new ActiveXObject("Microsoft.XMLDOM");            doc.async=false;            doc.loadXML(psResponseXML);        }             else        {            var parser = new DOMParser();            var doc = parser.parseFromString(psResponseXML,"text/xml");        }         var docElement = doc.documentElement;        /*----Partner Details Starts-------------*/     // PARTNER OTP ID        otpPartnerIDElement = docElement.getElementsByTagName("otpPartnerID");        ws_otpPartnerID     = otpPartnerIDElement[0].childNodes[0].nodeValue;        lastElementProcessed  = "otpPartnerID="+ws_otpPartnerID;    // PARTNER NAME        var partnerNameElement=docElement.getElementsByTagName("partnerName");                if(partnerNameElement==null)          {          ws_partnerName='';        }        else        {          ws_partnerName=partnerNameElement[0].childNodes[0].nodeValue;        }        lastElementProcessed  = "partnerName="+ws_partnerName;    // PARTNER CID        var partnerCIDElement=docElement.getElementsByTagName("CID");        if(partnerCIDElement==null)        {          ws_partnerCID='';        }        else        {          ws_partnerCID=partnerCIDElement[0].childNodes[0].nodeValue;          if (ws_partnerCID=='no__thanks')          {              ws_partnerCID='';          }        }        lastElementProcessed  = "CID="+ws_partnerCID;    // PARTNER TYPE        var partnerTypeElement=docElement.getElementsByTagName("partnerType");                if(partnerTypeElement==null)        {          ws_partnerType='';        }        else        {            ws_partnerType=partnerTypeElement[0].childNodes[0].nodeValue;            if (ws_partnerType=='no__thanks')            {                ws_partnerType='';            }        }        lastElementProcessed  = "partnerType="+ws_partnerType;    // PARTNER WELCOME TEXT        var partnerWelcomeTextElement=docElement.getElementsByTagName("partnerWelcomeText");        if(partnerWelcomeTextElement==null)        {          ws_partnerWelcomeText='';        }        else        {            ws_partnerWelcomeText=partnerWelcomeTextElement[0].childNodes[0].nodeValue;            if (ws_partnerWelcomeText=='no__thanks')            {                ws_partnerWelcomeText='';            }        }        lastElementProcessed  = "partnerWelcomeText="+ws_partnerWelcomeText;        //alert(' ws_partnerWelcomeText --  '+ws_partnerWelcomeText);        /*----Partner Details Ends-------------*/         var ProdIDArr=                docElement.getElementsByTagName("productId");            lastElementProcessed  = "ProdIDArr="+ProdIDArr.length;        var ProdNameArr=              docElement.getElementsByTagName("productName");            lastElementProcessed  = "ProdNameArr="+ProdNameArr.length;        var ProdBasePriceTextArr=     docElement.getElementsByTagName("basePrice");            lastElementProcessed  = "ProdBasePriceTextArr="+ProdBasePriceTextArr.length;        var ProdPartnerPriceTextArr=  docElement.getElementsByTagName("partnerPrice");            lastElementProcessed  = "ProdPartnerPriceTextArr="+ProdPartnerPriceTextArr.length;        var ProdStartNowArr=          docElement.getElementsByTagName("startNow");            lastElementProcessed  = "ProdStartNowArr="+ProdStartNowArr.length;        var ProdLearnNowArr=          docElement.getElementsByTagName("learnMore");            lastElementProcessed  = "ProdLearnNowArr="+ProdLearnNowArr.length;        var NumberOfProducts=ProdIDArr.length;            lastElementProcessed  = "NumberOfProducts="+NumberOfProducts;        //var wsAlertStr='The following Values were Retrieved From the Response SOAP XML \n';        //wsAlertStr+='The Partner has '+NumberOfProducts+' Products \n';        //wsAlertStr+='---------------------------\n';        //wsAlertStr+='ProductID     ProductPrice \n';        //wsAlertStr+='---------------------------\n';         for(var i=0;i<NumberOfProducts;i++)         {    // PRODUCT BASE PRICE            pBPrice[i][0]=  ProdIDArr[i].childNodes[0].nodeValue;            if(pBPrice[i][0]==null)            {                pBPrice[i][1]='0.00';            }            else            {                pBPrice[i][1]=  ProdBasePriceTextArr[i].childNodes[0].nodeValue;            }            lastElementProcessed  = "pBPrice["+i+"][1]="+pBPrice[i][1];    // PRODUCT PARTNER PRICE            pPPrice[i][0]=  ProdIDArr[i].childNodes[0].nodeValue;            if(pPPrice[i][0]==null)            {                pPPrice[i][1]='0.00';            }            else            {                pPPrice[i][1]=  ProdPartnerPriceTextArr[i].childNodes[0].nodeValue;            }            lastElementProcessed  = "pPPrice["+i+"][1]="+pPPrice[i][1];    // PRODUCT START NOW            pStart[i][0]=   ProdIDArr[i].childNodes[0].nodeValue;            if(pStart[i][0]==null)            {                pStart[i][1]='wsna';            }            else            {                pStart[i][1]=   ProdStartNowArr[i].childNodes[0].nodeValue;            }            lastElementProcessed  = "pStart["+i+"][1]="+pStart[i][1];    // PRODUCT LEARN MORE            pLearn[i][0]=   ProdIDArr[i].childNodes[0].nodeValue;                        if(pLearn[i][0]==null)            {                pLearn[i][1]='wsna';            }            else            {                pLearn[i][1]=   ProdLearnNowArr[i].childNodes[0].nodeValue;            }            lastElementProcessed  = "pLearn["+i+"][1]="+pLearn[i][1];    // PRODUCT NAME            pName[i][0]=    ProdIDArr[i].childNodes[0].nodeValue;                        if(pName[i][0]==null)            {                pName[i][1]='wsna';            }            else            {                pName[i][1]=    ProdNameArr[i].childNodes[0].nodeValue;            }            lastElementProcessed  = "pName["+i+"][1]="+pName[i][1];            //wsAlertStr+=ProdIDArr[i].childNodes[0].nodeValue+''+ProdPriceTextArr[i].childNodes[0].nodeValue+''+ProdStartNowArr[i].childNodes[0].nodeValue+''+ProdLearnNowArr[i].childNodes[0].nodeValue+' \n';            //alert(wsAlertStr);        }           //if (bDebugWebService) alert(wsAlertStr);        webServiceCallComplete();       }    catch (e)    {        recordExceptionInOmniture("pws","9","parsefail:"+e.description+"^"+lastElementProcessed+"^"+web_svc_url);        webServiceCallFailed("");    }    }