﻿if(typeof(RadioObj) != "object" && typeof(RadioObj) == "undefined")
    var RadioObj = new Object();

/*************************SumPrice********************************
Usage:      sum up the procduct price when parts are selected
Parameters: controlId, defaultSelected, defaultValue
******************************************************************/
function SumPrice(id, isDefault, defaultValue)
{
    //var evt = window.event;
    var evtElem = document.getElementById(id);
    
    //getting the selected price
    var getPrice = id.split("_");
    var addPrice = (getPrice[2] != "") ? parseFloat(getPrice[2]) : 0;
    
    var sumElem = document.getElementById("sumPrice");
    var sum = parseFloat(sumElem.innerHTML);
    var sumTopElem = document.getElementById("totalPriceTop");
    
    //when there is only the default part with value under a part category
    //no need to change the sum when click
    if(isDefault == 'True' && addPrice != 0) 
    {
        if(RadioObj[evtElem.name] > 0 || RadioObj[evtElem.name] == sum)
        {
            sum = sum - ((RadioObj[evtElem.name])?RadioObj[evtElem.name]:0);
            sum = sum + addPrice;
            //RadioObj[evtElem.name] = addPrice;
            
            sumElem.innerHTML = sumTopElem.innerHTML = parseFloat(sum);
        }
        //keep track of the previous value
        RadioObj[evtElem.name] = addPrice;
        return;
    }
    
    if(evtElem.checked)
    {
        //remove the price from the previous radio button selection
        if(getPrice[0] == "rb")
        {   
            if(defaultValue> 0) //handle the value change for part under a part category with default value greater than 0
                sum = sum - ((isNaN(RadioObj[evtElem.name]) )? defaultValue : RadioObj[evtElem.name]);
            else
            {
                //handle alternate radio button value
                prePrice = RadioObj[evtElem.name];
                sum = sum - ((prePrice) ? prePrice : 0);
                //RadioObj[evtElem.name] = addPrice;
            }
            RadioObj[evtElem.name] = addPrice;//save the previous value
        }
        
        sum = sum + addPrice;
    }   
    else
        sum = sum - addPrice;

    sumElem.innerHTML = sumTopElem.innerHTML = parseFloat(sum);
}

/********************************GetProductDetail********************************
Usage:      retrieve product detail info via ajax
Parameter:  itemId
Return:     product info in the xml format
*********************************************************************************/
var xmlHttp;
var isMSBrowser = true;

function GetProductDetail(id)
{
    xmlHttp = GetXmlHttpObject();
    if(xmlHttp == null)
    {
        alert("Your browser does not support AJAX.  Please upgrade your browser.");
        return;
    }
    xmlHttp.onreadystatechange = stateChanged;
    xmlHttp.open("GET", "../products/ProductDetailInfo.aspx?item="+id, true);
    xmlHttp.send(null);    
}

/****************************GetXmlHttpObject*************************************
**Create and return an xmlhttp object
**********************************************************************************/
function GetXmlHttpObject()
{
    var xmlHttp = null;
    if (window.XMLHttpRequest) 
    { // Mozilla, Safari, ...
        xmlHttp = new XMLHttpRequest();
        if (xmlHttp.overrideMimeType) 
        {
            xmlHttp.overrideMimeType('text/xml');
            isMSBrowser = false;
            // See note below about this line
        }
    } 
    else if (window.ActiveXObject) 
    { // IE
        try 
        {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (e)
         {
            try 
            {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (e) {}
        }
    }
    return xmlHttp;
}


function stateChanged()
{
    if(xmlHttp.readyState == 4)
    {
        if(xmlHttp.status == 200)
        {
            var doc;
            
            if(isMSBrowser)
            {
                doc = new ActiveXObject("MSXML2.DOMDocument.3.0");
                doc.loadXML(xmlHttp.responseText);
                var xmlDoc = doc.documentElement;
                XMLDisplay(xmlDoc);
            }
            else 
            {
               if (window.DOMParser) 
                { 
                  // This browser appears to support DOMParser
                  var parser = new DOMParser(); 
                  doc = parser.parseFromString(xmlHttp.responseText, "text/xml"); 
                  XMLDisplay(doc)
                }
            }
        }
    }
}
function XMLDisplay(xmlDoc)
{
    //write to the page
    document.getElementById("productIdHidden").value = xmlDoc.getElementsByTagName("productId")[0].childNodes[0].nodeValue;
    document.getElementById("productNameTxt").innerHTML = document.getElementById("productNameHidden").value = xmlDoc.getElementsByTagName("prodName")[0].childNodes[0].nodeValue;

    if(xmlDoc.getElementsByTagName("description")[0].childNodes[0])
        document.getElementById("description").innerHTML = xmlDoc.getElementsByTagName("description")[0].childNodes[0].nodeValue;
    
    var featureElem = document.getElementById("features");
    featureElem.innerHTML = "";
    
    if(xmlDoc.getElementsByTagName("features")[0].childNodes[0])
    {
        var feature = xmlDoc.getElementsByTagName("features")[0].childNodes[0].nodeValue;
        
        var features = feature.split("*");
        
        if(features[0] != "" && features[0] != "null")
        {
            var span = document.createElement("span");
            featureElem.appendChild(span);
            //span.innerText = features[0];
            span.innerHTML = features[0];
        }
        var ul = document.createElement("ul");
        
        for(var i = 1; i < features.length; i++)
        {
            var li = document.createElement("li");
            ul.appendChild(li);
            //li.innerText = features[i];
            li.innerHTML = features[i];
        }
        featureElem.appendChild(ul);
    }
    var img = document.getElementById("productImg");
    var src = document.getElementById("productImagePathHidden").value = xmlDoc.getElementsByTagName("imagePath")[0].childNodes[0].nodeValue;
    if(src)
        img.src = src;
    else
        img.src = "../images/space.jpg";//Having a default url
}


//Direct the current page to the product customize page
function RedirectPage(id, name, path)
{
    var preUrl = window.top.location.href;
    preUrl = preUrl.substr(0, preUrl.lastIndexOf("/")+1);
    var isPer = document.getElementById("perPage").value;
    if(isPer == "true")
        url = "ProductCustomize.aspx?item=" + id + "&name="+name+"&path="+path+"&isPer=1";
    else 
        url = "ProductCustomize.aspx?item=" + id + "&name="+name+"&path="+path+"&isPer=0";
    url = preUrl + url;
    window.location= url;
}

//Get ddl items for products
var infoType;
function DropdownInfoGet(id,type)
{
    //save category id
    document.getElementById("productCatIdHidden").value = id;
    
    SetProductLabel(id);
    var id;
    if(type == 'part')
    {
        var ddl = document.getElementById("productddl"); 
        id = ddl.options[ddl.selectedIndex].value;
    }
    
    infoType = type;   
    xmlHttp = GetXmlHttpObject();
    if(xmlHttp == null)
    {
        alert("Your browser does not support AJAX.  Please upgrade your browser.");
        return;
    }
    xmlHttp.onreadystatechange = dropdownHandler;
    xmlHttp.open("POST", "../csslabsadmin/ProductAdminInfo.aspx?item="+id+"&type="+type, true);
    xmlHttp.send(null);
}

function dropdownHandler()
{
    if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
    {
        var doc;
        var xmldoc;
        
        if(isMSBrowser)
        {
            doc = new ActiveXObject("MSXML2.DOMDocument.3.0");
            doc.loadXML(xmlHttp.responseText);
            xmlDoc = doc.documentElement;
            DDLDisplayLogic(xmlDoc);
        }
        else 
        {
           if (window.DOMParser) 
            { 
              // This browser appears to support DOMParser
              var parser = new DOMParser(); 
              doc = parser.parseFromString(xmlHttp.responseText, "text/xml"); 
              DDLDisplayLogic(doc);
            }
        }
    }
}
//ddl display logic
function DDLDisplayLogic(xmldoc)
{
    var productddl = document.getElementById("productddl"); 
    if(infoType == 'product')
    {
        BuildDDL('productddl', xmlDoc);
        
        if(productddl.selectedIndex > 0)
            ProductButtonDisabled(false); 
        else
            ProductButtonDisabled(true);
           
        PartDDLButtonDisabled(true);
    }
    else if(infoType == 'part')
    {
        if(xmlDoc.childNodes.length > 0)
        {
            //enable part ddl and buttons
            //PartDDLButtonDisabled(false);
            document.getElementById("partddl").disabled = false;
        }
        
        if(productddl.selectedIndex > 0)
        {
            document.getElementById("productIdHidden").value = productddl.options[productddl.selectedIndex].value;
            ProductButtonDisabled(false);
            document.getElementById("addPartBtn").disabled = false;
        }
        else
            document.getElementById("addPartBtn").disabled = true;
            
        BuildDDL('partddl', xmlDoc);
    }
}
//built ddl items
function BuildDDL(id, xmlDoc)
{
    var ddl = document.getElementById(id);
    //alert(ddl);
    //remove the ddl content from the last item in the list
    for(var i=ddl.options.length-1; i > 0; i--)
    {
        if(ddl.options[i])
            ddl.options.remove(i);
    }
    
    //add items to ddl
    for(var i=0; i < xmlDoc.childNodes.length; i++)
    {
        var option = document.createElement("option");
        option.value = xmlDoc.getElementsByTagName("id")[i].childNodes[0].nodeValue;
        option.innerHTML = xmlDoc.getElementsByTagName("item")[i].childNodes[0].nodeValue;
        ddl.appendChild(option);
    }
}

function PartDDLButtonDisabled(enabled)
{
    //enable/disable part ddl
    var partddl = document.getElementById("partddl");
    partddl.disabled = enabled;
    
    document.getElementById("editPartBtn").disabled = enabled;
    document.getElementById("deletePartBtn").disabled = enabled;
}

function ProductButtonDisabled(enabled)
{
     //enable/disable product ddl
    document.getElementById("editBtn").disabled = enabled;
    document.getElementById("deleteBtn").disabled = enabled;
}

//enable edit/delete buttons when the part dropdown selectedIndex greater than 1
function PartDropdownChange()
{
    var ddl = document.getElementById("partddl");
    if(ddl.selectedIndex > 0)
    {
        document.getElementById("partIdHidden").value = ddl.options[ddl.selectedIndex].value;
        document.getElementById("editPartBtn").disabled = false;
        document.getElementById("deletePartBtn").disabled = false;
    }
}

function ProductDropdownChange()
{
    var id = document.getElementById("productCatIdHidden").value;
    DropdownInfoGet(id, 'part');  
}
function SetProductLabel(id)
{
    var pLabel = document.getElementById("productlb");//RedirectPage
    
    switch(id)
    {
        case 1:
          pLabel.innerHTML = "Servers";
          break;
        case 2:
          pLabel.innerHTML = "Rackmounts";
          break;
        case 3:
          pLabel.innerHTML = "Workstations";
          break;
        case 4:
          pLabel.innerHTML = "Portables";
          break;
        case 5:
          pLabel.innerHTML = "Peripherals";
          break;
        default: 
          pLabel.innerHTML = "Servers";
    }
}