﻿var intBusyCount = 0;

function subGetDataAndExecute(strScriptId, strURLData, strCallBackCode, blnRemoveScript)
{
    
        subShowBusy();
    
    
    try
    {
        
        
        var objHead = document.getElementsByTagName("head").item(0);
        var objScript = document.getElementById(strScriptId);
        if(objScript)
        {
            if(blnRemoveScript)
            {
                objHead.removeChild(objScript);
            }
            else
            {
                if(strCallBackCode.length > 0)
                {
                    subExecuteCommand(strCallBackCode, 0);
                }
                else
                {
                    subHideBusy();
                }
                return;
            }
        }
        
        objScript = document.createElement("script");
        objScript.setAttribute("src", strURLData);
        objScript.setAttribute("id", strScriptId);
        if(strCallBackCode.length > 0)
        {
            switch(strBrowserType) {
                case "ie":
                    objScript.onreadystatechange = function() {
                        if(this.readyState == "complete" || this.readyState == "loaded")
                        {
                            subExecuteCommand(strCallBackCode, 0);
                        }
                    }
                    break;
                case "ff":
                    objScript.onload = function() {
                        subExecuteCommand(strCallBackCode, 0);
                    }
                    objScript.onerror = function() {
                        subExecuteCommand(strCallBackCode, 0);
                    }
                    break;
                default:
                    alert('ERROR:: Unknown browser detected !!!');
                    break;
            }
        }
        objHead.appendChild(objScript);
        
        if(strCallBackCode.length == 0)
        {
            subHideBusy();
        }

    } catch(e) {
        subDisplayError("AJAXCode.js", "subGetDataAndExecute('" + strScriptId + "', '" + strURLData + "', '" + strCallBackCode + "', '" + blnRemoveScript + "')", e);
    }
}

function subGetDataAndExecuteEx(strAppCode, strVenueCode, lngTransId, strCommand, strParam1, strParam2, strParam3, strParam4, strParam5, strParam6, strParam7, strParam8, strParam9, strParam10, strWebServiceURL, strCallBackCommand, strErrorCommand)
{
    subShowBusy();
    
    if(!strErrorCommand)
    {
        strErrorCommand = "";
    }
    
    var objXML;
    
    strWebServiceURL = "Services/wsTrans.asmx";
    
    var strLocation = window.location.toString();
    if(strLocation.substring(0, 6) == "https:") {
        strWebServiceURL = "Services/wsSecureTrans.asmx";
    }
    
    try
    {
        if(window.XMLHttpRequest)
        {
            objXML = new XMLHttpRequest();
        }
        else if (window.ActiveXObject)
        {
            objXML = new ActiveXObject("Microsoft.XMLHTTP");
        }
        
        if(objXML)
        {
            var strParams = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
            strParams += "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">";
            strParams += "<soap12:Body>";
            strParams += "<objExecute xmlns=\"http://www.bookmyshow.com/\">";
            strParams += "<strAppCode>" + strAppCode + "</strAppCode>";
            strParams += "<strVenueCode>" + strVenueCode + "</strVenueCode>";
            strParams += "<lngTransactionIdentifier>" + lngTransId + "</lngTransactionIdentifier>";
            strParams += "<strCommand>" + strCommand + "</strCommand>";
            strParams += "<strParam1>" + strParam1 + "</strParam1>";
            strParams += "<strParam2>" + strParam2 + "</strParam2>";
            strParams += "<strParam3>" + strParam3 + "</strParam3>";
            strParams += "<strParam4>" + strParam4 + "</strParam4>";
            strParams += "<strParam5>" + strParam5 + "</strParam5>";
            strParams += "<strParam6>" + strParam6 + "</strParam6>";
            strParams += "<strParam7>" + strParam7 + "</strParam7>";
            strParams += "<strParam8>" + strParam8 + "</strParam8>";
            strParams += "<strParam9>" + strParam9 + "</strParam9>";
            strParams += "<strParam10>" + strParam10 + "</strParam10>";
            strParams += "</objExecute>";
            strParams += "</soap12:Body>";
            strParams += "</soap12:Envelope>";
            
            if(strGetCookie("strMode", "") == "RUNIL")
            {
                alert(strParams)
            }
              
            objXML.open("POST", strWebServiceURL);
            objXML.setRequestHeader("Content-Type", "application/soap+xml");            
            objXML.onreadystatechange = function() {                    
                    if(objXML.readyState == 4 && objXML.status == 200)
                    {
                        if(strGetCookie("strMode", "") == "RUNIL")
                        {
                            alert(objXML.responseText)
                        }
                        //alert(objXML.responseText)
                        if (window.ActiveXObject)
                        {
                            var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                            xmlDoc.async = false;
                            xmlDoc.loadXML(objXML.responseText);                                   
                        }
                        else
                        {
                            var xmlParser=new DOMParser();
                            var xmlDoc = xmlParser.parseFromString(objXML.responseText, "text/xml");
                        }
                        
                        if(xmlDoc.getElementsByTagName("blnSuccess")[0].childNodes[0].nodeValue == "true")
                        {
                            if(strCallBackCommand != "")
                            {
				if(strGetCookie("strMode", "") == "DEBUG") 
				{ console.log(xmlDoc.getElementsByTagName("strData")[0].childNodes[0].nodeValue); }
                                if(xmlDoc.getElementsByTagName("strData")[0].childNodes.length != 0)
                                {
				    var strData = "";
				    for(var intLen = 0; intLen < xmlDoc.getElementsByTagName("strData")[0].childNodes.length; intLen++) {
					strData += xmlDoc.getElementsByTagName("strData")[0].childNodes[intLen].nodeValue;
				    }
                                    subExecuteCommand(strCallBackCommand + "('" + strData + "');", 0);
                                }
                                else
                                {
                                    subExecuteCommand(strCallBackCommand + "();", 0)
                                }
                            }
                        }
                        else
                        {
//                            if(strErrorCommand != "")
//                            {
                                var strErrorMessage = "";
                                if(xmlDoc.getElementsByTagName("strException")[0].childNodes.length == 0)
                                {
                                    strErrorMessage = "Technical Problem!!! Please try again";
                                }
                                else
                                {
                                    strErrorMessage = xmlDoc.getElementsByTagName("strException")[0].childNodes[0].nodeValue;
                                }
                                
                                subExecuteCommand("subShowError(" + xmlDoc.getElementsByTagName("intException")[0].childNodes[0].nodeValue + ", '" + strErrorMessage + "');", 0);
                                if(strErrorCommand != "")
                                {
                                    subExecuteCommand(strErrorCommand + "();", 0);
                                }
//                            }
                        }
                    }
                }
            objXML.send(strParams);
        }        
    } catch(e) {
        alert(e)
    }
}


function subExecuteCommand(strCommand, intTimeOut)
{
    try
    {
        if(strBrowserType == "ie") {
            if(document.readyState == "complete") {
                if(intTimeOut == 0) {
                    intTimeOut = 500;
                }
                strCommand = "try{" + strCommand + ";}catch(e){alert('Error: '+e.message);};subHideBusy();";
                window.setTimeout(strCommand, intTimeOut);
            } else {
                var strCode = "subExecuteCommand(\"" + strCommand + "\", 0);";                
                window.setTimeout(strCode, 1000);
            }
        } else {
            strCommand = "try{" + strCommand + ";}catch(e){alert('Error: '+e.message);};subHideBusy();";
            window.setTimeout(strCommand, intTimeOut);
        }
    } catch(e) {
        subDisplayError("AJAXCode.js", "subExecuteCommand('" + strCommand + "', " + intTimeOut + ")", e);
    }
}

function subShowBusy()
{
    try {
        var intX = 0;
        var intY = 0;        
        
        if(document.body.scrollTop > 0)
        {
            intY = document.body.scrollTop;
        }
        else
        {
            intY = document.documentElement.scrollTop;
        }
        
        var objDivStatus = document.getElementById("divStatus");
        var objTblStatus = document.getElementById("tblStatus");
        var objTblLoading = document.getElementById("tblLoading");
        var objTblComingSoon = document.getElementById("tblComingSoon");
        
        if((objDivStatus) && (objTblStatus)) {
            //objTblStatus.style.backgroundImage = 'url(Common/Images/2px_orange.gif)';
            if(intY > 0)
            {
                objDivStatus.style.top = objDivStatus.offsetParent.offsetTop + intY + "px";
            }
            else
            {
                objDivStatus.style.top = "0px";
            }
            objDivStatus.style.display="block";
            objTblComingSoon.style.display="none";
            objTblLoading.style.display="block";
            
        }
        intBusyCount++;
    } catch(e) {
        subDisplayError("AJAXCode.js", "subShowBusy();", e);
    }
}

function subHideBusy()
{
    try
    {
        if(intBusyCount > 0)
        {
            intBusyCount--;
        }
        if(intBusyCount == 0)
        {
            var objTblError = document.getElementById("tblError");
            if(objTblError.style.display == "none" || objTblError.style.display == "")
            {
                document.getElementById("divStatus").style.display="none";
            }
        }
    } catch(e) {
        subDisplayError("AJAXCode.js", "subHideBusy()", e);
    }
}

