/////////////
// General //
/////////////
$(document).ready(function(){
  // disable link border
  $('a').attr('onfocus', 'if(this.blur)this.blur()');

  // Archiv ausklappbar
  $('.navtoggle').toggle(
    function() {
      $(this).addClass('activenav')
      $(this).next().show();
    },
    function() {
      $(this).removeClass('activenav')
      $(this).next().hide();
    }
  );
  // Product Detail Content List
	$(".pDLRtitle").toggle(
		function(){
			$(this).next().slideDown(600);
			$(this).find("a").addClass('activenav');
		},
		function() {
			$(this).next().slideUp(600);
			$(this).find("a").removeClass('activenav');
		}
	);

  // Produkt Comp Highlight
  var comp_anker = location.hash;
  if(comp_anker.length>1) {
    $("#comp_highlight").css('top', $(comp_anker).position().top+10);
    $("#comp_highlight").css('left', -25);
    $("#comp_highlight").show();
  }


  //Impressum
  $("#footer a").toggle (
		function(){
			$("#impressum").slideDown(400);
		},
		function() {
			$("#impressum").slideUp(400);
		}
  );

  // Shadowbox
  Shadowbox.init({
    language: 'en', 
    adapter:'jquery', 
    players: ['img','swf','flv']
  });

});

//////////////////
// Konfigurator //
//////////////////
var selectorNames = Array('type','family','lightwayA','lamptype');
var selectorStatus = Array();
var selectorSelected = Array();

function submitFilter() {
  document.konfigurator.konfiguratorresults.value = selectorSelected;
  document.konfigurator.filter_type.value      = getActiveFilters(selectorStatus, 'type');
  document.konfigurator.filter_family.value    = getActiveFilters(selectorStatus, 'family');
  document.konfigurator.filter_lightwayA.value = getActiveFilters(selectorStatus, 'lightwayA');
  document.konfigurator.filter_lamptype.value  = getActiveFilters(selectorStatus, 'lamptype');
  document.konfigurator.submit();
}
function getActiveFilters(filters, type) {
  var str = '';
  for(var i in filters[type]) {
    if(filters[type][i]=='on') {
      str+= i+',';
    }
  }
  return str.length>0 ? str.substr(0, str.length-1) : str;
}
function initKonfigurator(KonfAttributes, KonfProds) {
  // set all status to: off (on, off, disabled)
  for(var i in selectorNames) {
    selectorStatus[selectorNames[i]] = Array();
    for(var j in KonfAttributes[selectorNames[i]]) {
      selectorStatus[selectorNames[i]][j] = KonfAttributes[selectorNames[i]][j];
    }
  }
  updateFilters();
}
function updateFilter(type, key) {
  var linkObj = $('#link_kfg_'+type+'_'+key);
  if(!linkObj.hasClass('disabled')) {
    if(selectorStatus[type][key]=='off') {
      selectorStatus[type][key] = 'on';
    }
    else {
      selectorStatus[type][key] = 'off';
    }
    updateFilters();
  }
}
function updateFilters() {
  var type;
  var type2;
  var attr;
  var index;
  var fid;
  var productHit;
  var remainingProds;
  var linkObj;
  var onFilters = false;


  // alle filter auf "on" heraussuchen
  var filterCount = 0;
  for(type in selectorNames) {
    index = 0;
    for(attr in KonfAttributes[selectorNames[type]] ) {
      if(selectorStatus[selectorNames[type]][attr]=='on') {
        if(!onFilters) {
          onFilters = Array();
        }
        if(!onFilters[selectorNames[type]]) {
          onFilters[selectorNames[type]] = Array();
        }
        onFilters[selectorNames[type]][index] = attr;
        index++;
        filterCount++;
      }
    }
  }

  // welche produkte entsprechen den selektierten attributen?
  if(onFilters!==false) {
    // each product
    for(fid in KonfProds) {
      productHit = 0;
      for(type in KonfProds[fid]) {
        // each onFilter
        for(type2 in onFilters) {
          for(index in onFilters[type2]) {
            if(KonfProds[fid][type]!==false && type2==type && jQuery.inArray(String(onFilters[type2][index]), KonfProds[fid][type])>=0) {
              productHit++;
            }
          }
        }
      }
      if(productHit==filterCount) {
        if(!remainingProds) {
          remainingProds = Array();
        }
        remainingProds[fid] = 1;
      }
    }
  }
  else {
    // alle verfuegbar
    remainingProds = Array();
    for(fid in KonfProds) {
      remainingProds[fid] = 1;
    }
  }

  // gibt es pro selektor noch produkte wo
  // den selektierten attributen entsprechen?
  // --> wenn ja: anzeigen (off/off)
  // --> wenn nein: deaktivieren (disabled)
  for(type in selectorNames) {
    for(attr in KonfAttributes[selectorNames[type]] ) {
      linkObj = $('#link_kfg_'+selectorNames[type]+'_'+attr);
      productHit = 0;
      for(fid in remainingProds) {
        if(KonfProds[fid][selectorNames[type]]!==false && jQuery.inArray(String(attr), KonfProds[fid][selectorNames[type]])>=0) {
          // on oder off
          productHit++;
          break;
        }
      }
      if(productHit>0) {
        // on oder off
        if(selectorStatus[selectorNames[type]][attr]=='on') {
          linkObj.removeAttr('class').addClass('on');
        }
        else{
          linkObj.removeAttr('class').addClass('off');
          selectorStatus[selectorNames[type]][attr] = 'off';
        }
      }
      else {
        // disable
        selectorStatus[selectorNames[type]][attr] = 'disabled';
        linkObj.removeAttr('class').addClass('disabled');
      }
    }
  }

  // wie viele produkte kommen noch in frage?
  productHit = 0;
  selectorSelected = Array();
  for(fid in remainingProds) {
    selectorSelected[productHit] = fid;
    productHit++;
  }
  $('#info_total').html(productHit);
}

////////////////////
// Product Subnav //
////////////////////
function ProdNavSpecialToggle(id) {
  currentelement = $('#snp_special_'+id);
  currentclass = $(currentelement).attr('class');
  switch(currentclass) {
    case 'activetype':
      $(currentelement).removeClass('activetype');
      $(currentelement).addClass('activenav');
      $(currentelement).parent().find('ul').show();
      break;
    case 'activenav':
      $(currentelement).removeClass('activenav');
      $(currentelement).addClass('activetype');
      $(currentelement).parent().find('ul').hide();
      break;
  }
}

/////////////////
// Bildanzeige //
/////////////////
function showImageLarge(largeimageid, largeimagecaptionid, smallimageid) {
  var largeimage = $('#'+largeimageid+" img");
  var largeimagelink = $('#'+largeimageid+" a");
  var largeimagecaption = $('#'+largeimagecaptionid);
  var smallimage = $('#'+smallimageid+" img");

  // Grosses Bild
  largeimage.attr('src', smallimage.attr('src').replace('_t2', '_t1'));
  largeimage.attr('longdesc', smallimage.attr('src').replace('_t2', ''));
  largeimage.attr('title', smallimage.attr('title'));
  largeimage.attr('alt', smallimage.attr('title'));

  // Link grosses Bild
  largeimagelink.attr('href', smallimage.attr('src').replace('_t2', ''));
  largeimagelink.attr('title', smallimage.attr('title'));

  // Legende
  largeimagecaption.html(smallimage.attr('title'));

  // Shadowbox: Soft Reset
  Shadowbox.setup();
}


/////////////////////
// Debug / Console //
/////////////////////
if (!window.console){
  window.console = {
    log: function(){},
    debug: function(){},
    info: function(){},
    warn: function(){},
    error: function(){}
  };
}

function print_r(theObj){
  if(theObj.constructor == Array ||
    theObj.constructor == Object){
    for(var p in theObj){
      if(theObj[p].constructor == Array||
        theObj[p].constructor == Object){
        console.log("["+p+"] => "+typeof(theObj));
        print_r(theObj[p]);
      } else {
        console.log("["+p+"] => "+theObj[p]);
      }
    }
  }
}
