var OldRegKeyXML = "";
var ParseRegKeyXML = "";
var GetUpgradesByKeyXML = "";
var product_key = "";

var OldRegKey = new Array();
var ParseRegKey = new Array();
var GetUpgradesByKey = new Array();

var sRenewSKU = new Array();
var sRenewUpgradeSKUs = new Array();
var sUpgradeSKUs = new Array();

var sRenewSKUXML = "";
var sRenewUpgradeSKUsXML = "";
var sUpgradeSKUsXML = "";
var sSKUsSEQ = "";

var OldRegKeyHTML = "";
var ParseRegKeyHTML = "";
var GetUpgradesByKeyHTML = "";

var DefaultTableHTML = "";
var script_loader = "";

function load_license_key_XML(mode)
{
    var license_key_url = xGetElementById('server-path').value + "/include/xml/altn-key-analyser.php";

    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null)
    {
      alert ("Your browser does not support AJAX!");
      return;
    }

    post_variables = "key="+product_key+"&mode="+mode;

    xmlHttp.open("POST",license_key_url,true);
    xmlHttp.onreadystatechange=set_license_key_state_change;
    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttp.send(post_variables);
}

function load_product_code_XML(request_SKUs)
{
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null)
    {
      alert ("Your browser does not support AJAX!");
      return;
    }

    var post_variable_set = new Array();
    post_variables = "";

    for( var prop in request_SKUs )
    {
        post_variables += "product-code-"+prop+"="+request_SKUs[prop]+"&";
    }

    post_variables += "currency="+xGetElementById('currency').value+"&";
    post_variables += "product-key="+ParseRegKey['RegKey']+"&";
    post_variables += "end-date="+ParseRegKey['EndDate']+"&";
    //post_variables += "return-path="+escape(document.location);

    var product_code_url = xGetElementById('server-path').value + "/include/xml/product-code.php";
    xmlHttp.open("POST",product_code_url,true);
    xmlHttp.onreadystatechange=set_product_code_state_change;
    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttp.send(post_variables);
}

function set_product_code_state_change()
{
    //Insert Product Price Tables
    if( xmlHttp.readyState == 4 )
    {
        switch( sSKUsSEQ )
        {
            case "RenewSKU":
                if( sRenewSKU.length > 0 )
                {
                    html = set_values(xmlHttp,'template');
                    myhtml = html['HTML'];
                    write_div('div-0',myhtml);
                }
                sSKUsSEQ = "RenewUpgradeSKUs";
                load_product_code_XML(sRenewUpgradeSKUs);
                sRenewSKU = new Array();

                break;
            case "RenewUpgradeSKUs":
                if( sRenewUpgradeSKUs.length > 0 )
                {
                    html = set_values(xmlHttp,'template');
                    myhtml = html['HTML'];
                    write_div('div-1',myhtml);
                }
                sSKUsSEQ = "UpgradeSKUs";
                load_product_code_XML(sUpgradeSKUs);
                sRenewUpgradeSKUs = new Array();

                break;
            case "UpgradeSKUs":
                if( sUpgradeSKUs.length > 0 )
                {
                    html = set_values(xmlHttp,'template');
                    myhtml = html['HTML'];
                    write_div('div-2',myhtml);
                }
                sUpgradeSKUs = new Array();
                break;
        }
    }
}

function set_license_key_state_change()
{
    if (xmlHttp.readyState==4)
    {
        if( OldRegKeyXML.length < 1 )
        {
            OldRegKeyXML = xmlHttp;
            load_license_key_XML("ParseRegKey");
        }
        else
        if( ParseRegKeyXML.length < 1 )
        {
            ParseRegKeyXML = xmlHttp;
            load_license_key_XML("GetUpgradesByKey");
        }
        else
        {
            GetUpgradesByKeyXML = xmlHttp;

            set_variables();
        }
    }
}

function GetXmlHttpObject()
{
    var xmlHttp=null;

    try
    {
        xmlHttp=new XMLHttpRequest();
    }
    catch (e)
    {
        try
        {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e)
            {
                alert("Your browser does not support AJAX!");
            }
        }
    }

    return xmlHttp;
}

function set_values(xml_attribute,tag_name)
{
    //alert(xml_attribute.responseText);

    var return_value = new Object();
    var xmldoc = xml_attribute.responseXML;
    var root = xmldoc.getElementsByTagName(tag_name).item(0);
    var index = 0;

    for( i=0; i<root.childNodes.length; i++ )
    {
         var node = root.childNodes.item(i);

         if( node.childNodes.length > 0 )
         {
             for( j=0; j < node.childNodes.length; j++ )
             {
                // Reading values inside tags (ie <aaaa>value</aaa>)
                var childNode = node.childNodes.item(j);

                return_value[childNode.parentNode.nodeName] = childNode.data;
             }
         }
         else
         if( node.attributes.length > 0 )
         {
            if( !return_value[node.nodeName] )
            {
                return_value[node.nodeName] = new Object();
            }

            var temp_arr = new Object();

            for( j=0; j < node.attributes.length; j++ )
            {
                // Reading attribute's values (ie <aaa id='xxxx' value='xxx'>)
                var attribute = node.attributes[j];
                temp_arr[attribute.nodeName] =attribute.nodeValue;
            }

            return_value[node.nodeName][index] = temp_arr;

            index++;
         }
    }
    return return_value;
}

function set_variables()
{
    OldRegKey = new Array();
    ParseRegKey = new Array();
    GetUpgradesByKey = new Array();

    OldRegKey = set_values(OldRegKeyXML,'CheckOldRegKeyResponse');
    ParseRegKey = set_values(ParseRegKeyXML,'ParseRegKeyResponse');
    GetUpgradesByKey = set_values(GetUpgradesByKeyXML,'GetUpgradesByKeyResponse');

    switch(ParseRegKey['ProductType'])
    {
        case "STD":
            ParseRegKey['ProductType'] = "Standard";
            break;
        case "PRO":
            ParseRegKey['ProductType'] = "Pro";
            break;
    }

    switch(ParseRegKey['ProductCode'])
    {
        case "MD":
            ParseRegKey['ProductDescription'] = "MDaemon "+ParseRegKey['ProductType']+" - "+ParseRegKey['LicenseSize']+" users";
            break;
        case "RF":
            ParseRegKey['ProductDescription'] = "Relay Fax "+ParseRegKey['ProductType']+" - "+ParseRegKey['LicenseSize']+" users";
            break;
        case "GW":
            ParseRegKey['ProductDescription'] = "MDaemon GroupWare - "+ParseRegKey['LicenseSize']+" users";
            break;
        case "AV":
            ParseRegKey['ProductDescription'] = "MDaemon SecurityPlus - "+ParseRegKey['LicenseSize']+" users";
            break;
        case "DK":
            ParseRegKey['ProductDescription'] = "Deerfield SecurityPlus for MDaemon (no longer supported)";
            break;
        case "OC":
            ParseRegKey['ProductDescription'] = "MDaemon Outlook Connector - "+ParseRegKey['LicenseSize']+" users";
            break;
        default:
            ParseRegKey['ProductDescription'] = ParseRegKey['ProductCode']+" - "+ParseRegKey['LicenseSize']+" users";
            break;
    }

    for( var prop in GetUpgradesByKey['Product'] )
    {
        var product = GetUpgradesByKey['Product'][prop];

        if( product['SKU'].indexOf('_REN_') > -1 || product['SKU'].indexOf('_OLD_') > -1 || product['SKU'].indexOf('_EXP_') > -1 )
        {
            if( !sRenewSKU.length )
            {
                sRenewSKU[0] = product['SKU'];
            }
            else
            {
                if( product['SKU'] == sRenewSKU[0]+"_2YR" )
                {
                    sRenewSKU[sRenewSKU.length] = product['SKU'];
                }
                else
                {
                    if( !sRenewUpgradeSKUs.length )
                    {
                        sRenewUpgradeSKUs[0] = product['SKU'];
                    }
                    else
                    {
                        sRenewUpgradeSKUs[sRenewUpgradeSKUs.length] = product['SKU'];
                    }
                }
            }
        }
        else
        if( product['SKU'].indexOf('_UPG_') > -1 )
        {
            if( !sUpgradeSKUs.length )
            {
                sUpgradeSKUs[0] = product['SKU'];
            }
            else
            {
                sUpgradeSKUs[sUpgradeSKUs.length] = product['SKU'];
            }
        }
    }

    // Getting upgradable product code & price
    sSKUsSEQ = "RenewSKU";
    load_product_code_XML(sRenewSKU);

    write_tables();

}

function write_div(div_id,innerHTML)
{
    xGetElementById(div_id).style.display = 'none';
    xGetElementById(div_id).innerHTML = innerHTML;
    
    init_products_window();
}

function write_tables()
{
    //////////////////////// Upgrade Options //////////////////////////

    if( OldRegKey['ErrorMessage'] || OldRegKey.length <= 0 )
    {
        if( OldRegKey.length <= 0 )
        {
            innerHTML = "<p class='larger-font' align='center'><font color='red'><b>Error occurred while processing.</b><br><br></font></p>";
        }
        else
        {
            innerHTML = "<p class='larger-font' align='center'><font color='red'><b>"+OldRegKey['ErrorMessage']+"</b><br><br></font></p>";
        }

        xGetElementById('error-message-div').innerHTML = innerHTML;
        xGetElementById('product-key-td').innerHTML = DefaultTableHTML;
        xGetElementById('product-key').value = product_key;
    }
    else
    if( GetUpgradesByKey['ErrorMessage'] || GetUpgradesByKey.length <= 0 )
    {
        if( GetUpgradesByKey.length <= 0 )
        {
            innerHTML = "<p class='larger-font' align='center'><font color='red'><b>Error occurred while processing.</b><br><br></font></p>";
        }
        else
        {
            innerHTML = "<p class='larger-font' align='center'><font color='red'><b>"+OldRegKey['ErrorMessage']+"</b><br><br></font></p>";
        }

        xGetElementById('error-message-div').innerHTML = innerHTML;
        xGetElementById('product-key-td').innerHTML = DefaultTableHTML;
        xGetElementById('product-key').value = product_key;
    }
    else
    {
        if( sRenewSKU.length )
        {
            script_loader = "div_show_with_radio('0','3');";
        }

        if( sRenewUpgradeSKUs.length && script_loader == "" )
        {
            script_loader = "div_show_with_radio('1','3');";
        }

        if( sUpgradeSKUs.length && script_loader == "" )
        {
            script_loader = "div_show_with_radio('2','3');";
        }

        innerHTML = "<table align='center' class='larger-font' width='98%'>";
        innerHTML += "  <tr>";
        innerHTML += "    <td align='center'>";
        innerHTML += "      <table bgcolor='red' cellspacing='1'>";
        innerHTML += "        <tr><td><font color='#FFFFFF'><b>Upgrade Options</b> - Please select one</font></td></tr>";
        innerHTML += "        <tr bgcolor='#FFFFFF'>";
        innerHTML += "          <td>";
        innerHTML += "            <table>";

        if( sRenewSKU.length )
        {
            innerHTML += "          <tr>";
            innerHTML += "            <td align='left'>";
            innerHTML += "              <a href='javascript:div_show_with_radio(0,3);'><input type='radio' id='radio-0'><b>Renew your products upgrade & support cover</b><a>";
            innerHTML += "            </td>";
            innerHTML += "          </tr>";
        }

        if( sRenewUpgradeSKUs.length )
        {
            innerHTML += "          <tr>";
            innerHTML += "            <td align='left'>";
            innerHTML += "              <a href='javascript:div_show_with_radio(1,3);'><input type='radio' id='radio-1'><b>Upgrade your license size or type AND extend its upgrade & support cover</b></a>";
            innerHTML += "            </td>";
            innerHTML += "          </tr>";
        }

        if( sUpgradeSKUs.length )
        {
            innerHTML += "          <tr>";
            innerHTML += "            <td align='left'>";
            innerHTML += "              <a href='javascript:div_show_with_radio(2,3);'><input type='radio' id='radio-2'><b>Just upgrade your license size or type</b></a>";
            innerHTML += "            </td>";
            innerHTML += "          </tr>";
        }

        innerHTML += "            </table>";
        innerHTML += "          </td>";
        innerHTML += "        </tr>";

        innerHTML += "      </table>";
        innerHTML += "    </td>";
        innerHTML += "  </tr>";
        innerHTML += "</table>";

        xGetElementById('upgrade-options-div').innerHTML = innerHTML;



        //////////////////////// License Information //////////////////////////

        var expiry_date = convert_altn_date(ParseRegKey['EndDate'])

        innerHTML = "<table align='center' class='larger-font' width='98%'>";
        innerHTML += "  <tr>";
        innerHTML += "    <td align='center'>";
        innerHTML += "      <table cellspacing='1' bgcolor='#000000' cellpadding='4'>";
        innerHTML += "        <tr>";
        innerHTML += "          <td colspan='2' align='left'><font color='#FFFFFF'><b><u>License Information</u></b></font></td>";
        innerHTML += "        </tr>";
        innerHTML += "        <tr bgcolor='#FFFFFF'>";
        innerHTML += "          <td nowrap align='left'>License Key:</td>";
        innerHTML += "          <td nowrap align='left'><b>"+product_key+"</b></td>";
        innerHTML += "        </tr>";
        innerHTML += "        <tr bgcolor='#FFFFFF'>";
        innerHTML += "          <td nowrap align='left'>Product Version:</td>";
        innerHTML += "          <td nowrap align='left'><b>"+ParseRegKey['ProductVersion']+"</b></td>";
        innerHTML += "        </tr>";
        innerHTML += "        <tr bgcolor='#FFFFFF'>";
        innerHTML += "          <td nowrap align='left'>Product Description:</td>";
        innerHTML += "          <td nowrap align='left'><b>"+ParseRegKey['ProductDescription']+"</b></td>";
        innerHTML += "        </tr>";
        innerHTML += "        <tr bgcolor='#FFFFFF'>";
        innerHTML += "          <td nowrap align='left'>License Size:</td>";
        innerHTML += "          <td nowrap align='left'><b>"+ParseRegKey['LicenseSize']+"</b></td>";
        innerHTML += "        </tr>";
        innerHTML += "        <tr bgcolor='#FFFFFF'>";
        innerHTML += "          <td nowrap align='left'>Product upgrade cover expires:</td>";
        innerHTML += "          <td nowrap align='left'><b>"+expiry_date+" (YYYY-mm-dd)</b></td>";
        innerHTML += "        </tr>";
        innerHTML += "      </table>";
        innerHTML += "    </td>";
        innerHTML += "  </tr>";
        innerHTML += "</table>";

        xGetElementById('license-info-div').innerHTML = innerHTML;
        xGetElementById('product-key-td').innerHTML = DefaultTableHTML;
        xGetElementById('product-key').value = product_key;
        //xGetElementById('product-pricing').style.display = 'block';

        //eval(script_loader);
        //setTimeout(script_loader,500);
        display_default_table(script_loader);

    }
}

function display_default_table()
{
    if( xGetElementById('div-0').innerHTML != '' || xGetElementById('div-1').innerHTML != '' || xGetElementById('div-2').innerHTML != '' )
    {
        eval(script_loader);
    }
    else
    {
        setTimeout("display_default_table();",100);
    }
}

function start_request(field_id)
{
    product_key = xGetElementById(field_id).value;

    // Display Please Wait
    DefaultTableHTML = xGetElementById('product-key-td').innerHTML;

    innerHTML = "<table width='98%' cellspacing='0' cellpadding='5'>";
    innerHTML += "  <tr>";
    innerHTML += "    <td align='center'>";
    innerHTML += "      <img src='"+xGetElementById('server-path').value+"/images/loading.gif'><br>";
    innerHTML += "      <b>Please wait while processing ...</b>";
    innerHTML += "    </td>";
    innerHTML += "  <tr>";
    innerHTML += "</table>";

    xGetElementById('product-key-td').innerHTML = innerHTML;
    xGetElementById('upgrade-options-div').innerHTML = "";
    xGetElementById('license-info-div').innerHTML = "";
    xGetElementById('div-0').innerHTML = "";
    xGetElementById('div-1').innerHTML = "";
    xGetElementById('div-2').innerHTML = "";
    xGetElementById('error-message-div').innerHTML = "";
    if( xGetElementById('product-pricing') )
        xGetElementById('product-pricing').style.display = 'none';

    //Initialising XML
    OldRegKeyXML = "";
    ParseRegKeyXML = "";
    GetUpgradesByKeyXML = "";

    load_license_key_XML("OldRegKey");
}
