﻿// Camelonta AB - www.camelonta.se
// Copyright 2008
// Författare: Olof Törnqvist

var _Areas = new Array();
var _Topics = new Array();
var _SubTopics = new Array();
var _Products = new Array();
if (typeof _CurrentMenuItem == 'undefined')
    _CurrentMenuItem = new Array();


// Varje produkt och kategori består av Itm-objektet, som innehåller ID, Parent, Namn och en Children array (används inte f.n.)
function Itm(i,p,s,u,c){this.i=i;this.p=p;this.s=s;this.c = c;this.u = u;}

// Callback funktion från servern, med data.    
function onGetNodes_Callback(serverResponse, callingContext)
{
    try{
        var menuItems = eval(serverResponse);
        var Combo = document.forms[0].elements[callingContext.Context.Combo];
        Combo.options[0] = null;
        if(callingContext.Context.Combo == "combo0")
        {
            _Areas = menuItems;
            Combo.options[0] = new Option("Välj område","-1");
        }
        else if(callingContext.Context.Combo == "combo1")
        {
            _Topics = menuItems;
            Combo.options[0] = new Option("Välj ämne","-1");
        }
        else if(callingContext.Context.Combo == "combo2")
        {
            _Products = menuItems;
            Combo.options[0] = new Option("Välj produkt","-1");
        }
        if( Combo )
            PopulateCombo( Combo, menuItems);
        
        if(_CurrentMenuItem.length>0)
        {
            var loadItem = _CurrentMenuItem[0];
            for(var jj = 0;jj<Combo.options.length;jj++)
            {
                if(Combo.options[jj].value == loadItem.SelectedItem)
                {
                    Combo.options[jj].selected = true;
                    if(loadItem.Level!=2)
                        eval("Combo"+loadItem.Level+"_Change(document.forms[0].combo"+loadItem.Level+", null)");
                }
            }
            
            _CurrentMenuItem.splice(0,1);
        } 
    }catch(exception)
    {}
}

// Körs vid OnLoad. Hämtar första menyns data ifrån databasen.
function Init_ProductBrowser()
{
 	var ajaxConn = new AjaxConnection( );
    var url= _Cam_WebStore_ProductFinder_BaseUrl+"Ajax/ProductMenu/GetProductNodes.aspx?ParentID=-1";
    var serverResponseContent = ajaxConn.Get(url, null, onGetNodes_Callback, {"Context": { "Combo": "combo0", "ParentID": "-1"}}, false);

    if (new String(typeof(_Cam_WebStore_ProductFinder_DisableProductPicking))=="boolean")
    {
        if(_Cam_WebStore_ProductFinder_DisableProductPicking)
        {
            var comboProducts = document.forms[0].combo2;
            if(comboProducts)
                comboProducts.style.display = "none";
        }
    }
    else
    {
        _Cam_WebStore_ProductFinder_DisableProductPicking = false;
    }
}

// Ta bort alla alternativ ifrån menyn
function EmptyCombo(oCombo)
{
  oCombo.disabled = true;
  if(oCombo.options.length>1)
  {
      for(var jj=oCombo.options.length-1;jj>0;jj--)
      {
        oCombo.options[jj] = null;
      }
  }
}

// Populera en dropdownmeny från array
function PopulateCombo( oCombo, itemArray)
{
  oCombo.disabled = false;
  if(oCombo.options.length>1)
  {
      for(var jj=oCombo.options.length-1;jj>0;jj--)
      {
        oCombo.options[jj] = null;
      }
  }
  if(itemArray != null)
  {
      for(var ii=0; ii<itemArray.length;ii++)
      {
        var pname = itemArray[ii].s;
        pname = pname.replace("&amp;", "&");
        pname = decodeURI(pname);
        var oNewOption = new Option( pname, itemArray[ii].i );
        oCombo.options[oCombo.options.length] = oNewOption;
      }
  }
}

// Första dropdownmenyn
function Combo0_Change(sender, e)
{
    EmptyCombo(document.forms[0].combo1);
    EmptyCombo(document.forms[0].combo2);
    var index = sender.options.selectedIndex-1;
    if(index<=-1)
    {
        return;
    }
    
    var item = _Areas[index];

 	var ajaxConn = new AjaxConnection( );
    var url= _Cam_WebStore_ProductFinder_BaseUrl+"Ajax/ProductMenu/GetProductNodes.aspx?ParentID=" + item.i;
    
    document.forms[0].combo1.options[0] = null;
    document.forms[0].combo1.options[0] = new Option("Laddar ämnen...","-1");
    
    var serverResponseContent = ajaxConn.Get(url, null, onGetNodes_Callback, {"Context": { "Combo": "combo1", "ParentID": item.i}}, false);
}

// Andra dropdownmenyn
function Combo1_Change(sender, e)
{
    var indexArea = document.forms[0].combo0.options.selectedIndex-1;
    var indexTopic = sender.options.selectedIndex-1;
    EmptyCombo(document.forms[0].combo2);

    if(!_Cam_WebStore_ProductFinder_DisableProductPicking && indexTopic>-1)
    {
        document.forms[0].combo2.options[0] = null;
        document.forms[0].combo2.options[0] = new Option("Laddar produkter...","-1");
        
        var selectedArea = _Areas[indexArea];
        var selectedTopic = _Topics[indexTopic];
        
        var ajaxConn = new AjaxConnection( );
        var url= _Cam_WebStore_ProductFinder_BaseUrl+"Ajax/ProductMenu/GetProductNodes.aspx?ParentID=" + selectedTopic.i;
        var serverResponseContent = ajaxConn.Get(url, null, onGetNodes_Callback, {"Context": { "Combo": "combo2", "ParentID": selectedTopic.i}}, false);
    }
}
// Tredje dropdownmenyn
function Combo2_Change(sender, e)
{
    var indexArea = document.forms[0].combo0.options.selectedIndex-1;
    var indexTopic = document.forms[0].combo1.options.selectedIndex-1;
    var indexProduct = document.forms[0].combo2.options.selectedIndex;
    if(indexArea > -1 && indexTopic >-1 && indexProduct > 0)
    {
        ProductFinderMenu_Submit();
    }
}

// Vid tryck på "OK" knappen så navigerar vi till aktuellt val i menyn.
function ProductFinderMenu_Submit()
{
    var index0 = document.forms[0].combo0.options.selectedIndex-1;
    var index1 = document.forms[0].combo1.options.selectedIndex-1;
    var index2 = document.forms[0].combo2.options.selectedIndex-1;
    
    if(index0>-1)
    {
        var area = _Areas[index0];
    
        if(index1>-1)
        {
            var topic = _Topics[index1];
            
            if(index2>-1) {
                var product = _Products[index2];
                 var url = product.u;
                if(index1>-1)
                    url = url + "?TopicID=" + topic.i;
                document.location = url;
            }else
            {
                document.location = topic.u;
            }
            
        }else
        {
            document.location = area.u;
        }
    }else
    {
        alert("Du måste göra ett val");
    }
    return false;
}


function addLoadEvent(func) { 
  var oldonload = window.onload; 
  if (typeof window.onload != 'function') { 
    window.onload = func; 
  } else { 
    window.onload = function() { 
      if (oldonload) { 
        oldonload(); 
      } 
      func(); 
    } 
  } 
}


function spy(obj)
{
	var str=""
	for(i in obj)
		str = str + i + ": "  + obj[i] + ';\n';
	alert(str);
}



// Call Init_ProductBrowser on window Onload:
addLoadEvent(Init_ProductBrowser); 


