﻿// Core javascript
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
 
// RedDot specific
function showWindow(url, title, width, height, left, top)
{
    var windowParameters;
    windowParameters = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,"
    windowParameters = windowParameters + "width=" + width + ",height=" + height + ",left=" + left + ",top=" + top;
    window_1 = window.open(url, "_blank", windowParameters);
    window_1.focus();
}
// Product Literature
var gArrModels = new Array();
    
    function GetProductXML(url)
    {
    
        //Create HttpRequest Object 
        //Allow for IE / Non-ie browsers  
        if(window.XMLHttpRequest) {
           xmlProductDoc = new XMLHttpRequest();
        } else {
            xmlProductDoc = new ActiveXObject("msxml2.DOMDocument.3.0");
            xmlProductDoc.async = false;
            xmlProductDoc.resolveExternals = false;
            xmlProductDoc.validateOnParse = false;
        }
        
        //assign delegate function and open url.     
        if(window.XMLHttpRequest) {
            xmlProductDoc.async="true";
            xmlProductDoc.onreadystatechange=InitProductDropdown;
            xmlProductDoc.open("GET", url, true);
            xmlProductDoc.send(null);
        } else {
            xmlProductDoc.async="true";
            xmlProductDoc.onreadystatechange=InitProductDropdown;
            xmlProductDoc.load(url);
        }
    }
    
    function InitProductDropdown()
    {
        //Disable model dropdown.
        document.getElementById("")
        
        //Disable literature button
        document.getElementById("cmdFindLiterature").disabled = true
        
        
    
        //check XML has been loaded. 
        if (xmlProductDoc.readyState == 4) {
            
            //Get response xml
            if(window.XMLHttpRequest) {
                xmlProductDocResponse = xmlProductDoc.responseXML;
                
                // check for IE7
                if(document.epando) { 
                    xmlProductObj=xmlProductDocResponse.childNodes[0];
                }
                else {
                    xmlProductObj=xmlProductDocResponse.documentElement;
                }
            } 
            else {
                //xmlProductDocResponse = xmlProductDoc
                //xmlProductObj=xmlProductDocResponse.documentElement;
            xmlProductObj=xmlProductDoc;
            }
            if (xmlProductObj==null || xmlProductObj.childNodes.length == 0) {
              //no data found.
            } 
            else {
                //Nodeset found - extract all product groups            
                var arrProdGroup = xmlProductObj.getElementsByTagName("productGroup")
                var objOptGroup;
                
                //Get reference to Product Dropdown
                var objProdDropdown = document.getElementById("prodDropdown");
                                
                for (var i=0; i<arrProdGroup.length; i++)
                {
                    objOptGroup = ProcessProductGroup(arrProdGroup[i]);
                    if (objOptGroup != null)
                    {
                        objProdDropdown.appendChild(objOptGroup);
                    }
                    objOptGroup = null;
                }
                
           }
           //Add onChange event handling        
           objProdDropdown.onchange = productChanged;      
           
      }
 }
  
 
 function ProcessProductGroup(objProdGroup)
 {
    //Create Option Group
    var strProdGroupName = objProdGroup.getElementsByTagName("name")[0].childNodes[0].nodeValue;
    objOptGroup = CreateOptGroup(strProdGroupName);
    
    //Parse product list and generate SELECT OPTION entries.
    var arrProducts = objProdGroup.getElementsByTagName("product")
    
    var objOption;
    for (var n=0; n<arrProducts.length; n++)
    {
        var strLabel = arrProducts[n].getElementsByTagName("name")[0].childNodes[0].nodeValue;
        objOption = document.createElement('OPTION');
        objOption.value = arrProducts[n].getAttribute('id');
        objOption.appendChild(document.createTextNode(strLabel));
        objOptGroup.appendChild(objOption);
        
        //Extract models belonging to this product to in-memory array.
        GetModels(arrProducts[n], arrProducts[n].getAttribute('id'));
        
    }
    
    return objOptGroup;
 }
 
 
 function CreateOptGroup(name)
 {
    var optGroup = document.createElement('optgroup');
    optGroup.label = name;
    return optGroup;   
 }
 
 function GetModels(objProduct, strProductId)
 {
    //Get list of models belonging to this product
    var arrProdModels = objProduct.getElementsByTagName("model");
    
    //create object representing each model, assign its parent product id.
    for (var j=0; j<arrProdModels.length; j++)
    {
        var objModel = {
        name: arrProdModels[j].getElementsByTagName("name")[0].childNodes[0].nodeValue,
        url: arrProdModels[j].getElementsByTagName("url")[0].childNodes[0].nodeValue,
        productid: strProductId
        };
        
        //Add to global model array.
        gArrModels[gArrModels.length] = objModel;       
    }
 }
 
 function productChanged()
 {
    //Get id of selected product.
    var strProdId = this[this.selectedIndex].value;
    
    //Clear any existing model dropdown entries.
    objModelDropDown = document.getElementById("modelDropDown");
    objModelDropDown.options.length = 0;
    
    //add 'Select' entry 
    objModelDropDown.options[0] = new Option('','0');
       
    //find models from global model array with matching product id, and add to model dropdown.
    for (var n=0; n<gArrModels.length; n++)
    {
        if (gArrModels[n].productid == strProdId)
        {
            objModelDropDown.options[objModelDropDown.options.length] = new Option(gArrModels[n].name,gArrModels[n].url);
        }
    }
    
    //add model dropdown event handler
    objModelDropDown.onchange = modelChanged;
    
 } 
 
 function modelChanged()
 {
    
    //enable 'find literature' button
    document.getElementById("cmdFindLiterature").disabled = false;
 }
 
 
 function FindLiterature()
 {
    objModelDropDown = document.getElementById("modelDropDown")
    location.href = objModelDropDown[objModelDropDown.selectedIndex].value;
    
 }

function LoadProductFileList(xml, product) {
    var productNode;
    productNode = $(xml).find("i [l='" + product + "']");
    var item = "";
    var options = "";
    var header;
    if (productNode[0].childNodes.length == 0) {
        header = $(productNode).attr('l');
        if ($(productNode).attr('f') == undefined) {
            url = $(productNode).attr('v');
            $('#model').append($('<option selected></option>').html(header));
            $('#prodDropdown').append($('<option></option>').val(url).html(header));
        }
        else {
            url = $(productNode).attr('f');
            $('#model').append($('<option selected></option>').val(url).html(header));
            LoadProductXml(url);
        }
    }
    else {
        $(productNode).find('i').each(function() {
            header = $(this).attr('l');
           if ($(this).attr('f') == undefined) {
                url = $(this).attr('v');
            }
            else {
                url = $(this).attr('f');
            }           
            $('#model').append($('<option></option>').val(url).html(header));
        });
    }
}
function LoadProductXml(url) {
    if (url != 0) {
        if(url.substring(url.indexOf(".")) == ".pdf")
        {
            SelectUrl(url);
        }
        else{
        $.ajax({
            type: "GET",
            url: url,
            dataType: "xml",
            success: xmlParser
        });
        }
    }
}
function xmlParser(xml) {
    var dropDown = $('#prodDropdown');
    var optionItem;
    var suboption;
    var header
    var url;
    var elemItem;

    dropDown.children('option:not(:first)').remove();
    dropDown.children('optgroup').remove();    

    $(xml).find('Arbre > i').each(function() {
        elemItem = "";
        if ($(this).children().length > 0) {
            var children = $(this).children()
            optionItem = "";
            header = $(this).attr('l');
            optionItem = "<optGroup label=\"";
            optionItem += header + "\">";
            for(var s=0;s < children.length; s++){
                optionItem += BuildSubCategoryDetail(children[s]);
            };
            optionItem += "</optGroup>";
            dropDown.append(optionItem);
        }
        else {
            elemItem = BuildOptionDetail($(this));
            dropDown.append(elemItem);
        }
    });     
}
function BuildOptionDetail(xmlElement) {
    var item;
    var elemItem;
    var subCategory;
    var url;
    var header;
 
        header = $(xmlElement).attr('l');
        url = $(xmlElement).attr('v');
        elemItem = "<option";
        elemItem += " value=\"" + url;
        elemItem += "\">";
        elemItem += header;
        elemItem += "</option>";
   
    return elemItem;
}
function BuildOptionDetails(xmlElement) {
    var item;
    var elemItem = "";
    var subCategory;
    var url;
    var header;
    var optionChildren = xmlElement;
    
    for (var s = 0; s < optionChildren.length; s++) 
    {
        if (optionChildren[s].nodeType == 1) {
            header = optionChildren[s].getAttribute('l');
            url = optionChildren[s].getAttribute('v');
            elemItem += "<option";
            elemItem += " value=\"" + url;
            elemItem += "\">";
            elemItem += header;
            elemItem += "</option>";
        }
    }
    return elemItem;
}
function BuildSubCategoryDetail(element) {
    var item;
    var elemItem = "";
    var subCategory;
    var header;
      header = $(element).attr('l');
      if ($(element).children().length > 0) {
          elemItem = "<optGroup label=\"";
          elemItem += header;
          elemItem += "\">";
          var children = $(element).children()
          for (var s = 0; s < children.length; s++) {
              subHeader = children[s].getAttribute('l');
              
              if (children[s].childNodes.length > 0) {
                  elemItem += "<optGroup label=\"";
                  elemItem += subHeader + "\">";
                  elemItem += BuildOptionDetails(children[s].childNodes);
                  elemItem += "</optGroup>";
              }
              else {
                  elemItem += BuildOptionDetail(children[s]);
              }
          }
      }
      else {
          elemItem += BuildOptionDetail(element);
      }
    
    return elemItem;
}
function SelectUrl(url) {
    if(url != 0)
    {
        window.open(url,'_blank');
    };
}
