function preloadImages(itemID)
{
  objImage = new Image();
  for (var i=0; i<imagenames[itemID].length; i++)
  {
    objImage.src = ottoImgPath+imagenames[itemID][i];
  }
}

function fade(step,img1,img2) {

    if (img1.src==img2.src) return;

    step = step || 0;

    img1.style.opacity = step/100;
    img1.style.filter = "alpha(opacity=" + step + ")"; // IE

    img2.style.opacity = (100-step)/100;
    img2.style.filter = "alpha(opacity=" +(100- step) + ")"; // IE

    if (navigator.appName=="Microsoft Internet Explorer") {
      step = step + 4;
    } else {
      step = step + 2;
    }

    if (step <= 100) {
        window.setTimeout(function () { fade(step,img1,img2); }, 1);
    }
}


function prepareForFade(img1,img2) {
  img1.src=img2.src;
  img1.style.opacity =0;
  img2.style.opacity =1;
}

function warten(objImage) {
     //alert (objImage.complete+" "+objImage.src);
     if (objImage.complete == true) {
       finishPosition(objImage);
     } else {
       setTimeout(function(){warten(objImage);}, 100);
     }
}

function setupPosition() {
  var objImage = new Image();
  objImage.src = ottoImgPath+imagenames[itemID][actual_imageNumber];
  warten(objImage);
}

function finishPosition(objImage) {

  var img=document.prodimage2;
  img.src=objImage.src;
  var cWidth=img.parentNode.clientWidth;
  var iWidth=img.width;
  var leftOffset = 380; // Abstand zum linken rand
    img.style.left= leftOffset + ((cWidth-iWidth)/2)+"px";

    document.prodimage2.style.left= leftOffset + ((cWidth-iWidth)/2)+"px";
    //alert("Fade");
    fade(0,document.prodimage2,document.prodimage1);
}

function navigateImage(direction) {

  prepareForFade(document.prodimage1,document.prodimage2);

  if (direction=="forward") {
    if ( actual_imageNumber ==max_imageNumber) {
      actual_imageNumber=0;
    } else
    {
      actual_imageNumber=actual_imageNumber+1;
    }
  }
  if (direction=="backward") {
    if (actual_imageNumber==0) {
      actual_imageNumber=max_imageNumber;
    } else
    {
      actual_imageNumber=actual_imageNumber-1;
    }
  }

  setupPosition();

    document.getElementById("navi").style.left=((window.document.getElementById("gallery").clientWidth-window.document.getElementById("navi").clientWidth)/2)+"px";
  document.getElementById("navitext").firstChild.data="\u0424\u043E\u0442\u043E "+(actual_imageNumber+1)+" \u0438\u0437 "+(max_imageNumber+1);

}

function addToWishlist() {
  var form = document.forms['itemForm'];
   if (form.action.indexOf('addTo') == -1) {
    form.action +='addToWishlist';
    form.submit();
  }
}

function select(items, index, value) {
  var retArray = new Array();

  for(var i = 0; i < items.length; i++) {
    var curRow = items[i];

   
    if( curRow[index]==value) {
      retArray.push(curRow);
    }
  }

  return retArray;
}


function getDistinctValues(inArray, pos) {
  distinctValues = new Array();

  // distinct auswählen
  for(var j=0; j< inArray.length; j++) {
    curValue = inArray[j][pos];
    if( jQuery.inArray(curValue, distinctValues)==-1 ) {
      distinctValues.push(curValue);
    }
  }

  return distinctValues;
}

function updateCurrentItem(view, update) {
  
  // Kopie des kompletten Arrays
  var selectArray = items;

  var curSelectBoxValues = new Array();

  // Alten Wert speichern, um ihn später nach Möglichkeit wieder vorzuselektieren
  for(var i=0; i<selectboxes.length; i++) {
    curSelectBox = $('#'+selectboxes[i]);
    // den aktuell ausgewählten Wert speichern
    curSelectBoxValues[i] = curSelectBox.val();
  }

  // von der ersten bis zur vorletzten Selectbox
  for(var i=0; i<selectboxes.length-1; i++) {
    curSelectBox = $('#'+selectboxes[i]);
    nextSelectBox = $('#'+selectboxes[i+1]);

    selectArray = select(selectArray, i+offset, curSelectBox.val());
    newOptionValues = getDistinctValues(selectArray, i+offset+1);

    if (view=='updatecart') newOptionValues.sort();
    try {

    nextSelectBox.removeOption(/./); // remove all options
    } catch (e) {
//      alert("Kann Option nicht aus Selectbox entfernen"); // TODO
    }
    for(var k=0; k< newOptionValues.length; k++) {
      curValue = newOptionValues[k];
      try {
        if( curSelectBoxValues[i+1] == curValue) {
          nextSelectBox.addOption(curValue, selectNames[curValue], true); // add single value (selected)
        } else {
          nextSelectBox.addOption(curValue, selectNames[curValue], false); // add single value (won't be selected)
        }
      } catch (e) {
//        alert("Kann Option nicht in Selectbox hinzufügen"); // TODO
      }
    }
  }

  // Aktuelles Item und Preis bestimmen
  // Aktuelle Auswahl merken
  for(var i=0; i<selectboxes.length; i++) {
    curSelectBox = $('#'+selectboxes[i]);
    // den aktuell ausgewählten Wert speichern
    curSelectBoxValues[i] = curSelectBox.val();
  }

  selectArray = items;
  for(var i=0; i<selectboxes.length; i++) {
    selectArray = select(selectArray, i+offset, curSelectBoxValues[i]);
  }

  if (view != 'updatecart') {
    updateProductDetail(selectArray, update, view);
  } else {
    updateBasketPosition(selectArray);
  }
}

function updateProductDetail(selectArray, update, view) {
  var itemID=selectArray[0][0];

  $('#product_print_link').unbind('click');
  $('#product_print_link').click(function(event) {shopAction.openPopUpEx(shop.baseUrl+'productView/print?categoryName='+categoryName+'&itemId='+itemID+'&productId='+productId, 'Druckansicht der ADS');});

  $('#callbackArticleNo').val(selectArray[0][1]);
  $('#itemId').val(itemID);
  $('#itemId2').val(itemID);
  $('#itemId3').val(itemID);

  actual_imageNumber=0;

  //TODO: ZOOMO VIEWER

//  max_imageNumber=imagenames[itemID].length-1;
////    $('#navi').css('display','none');
//  if (max_imageNumber>=0) {
////      if (max_imageNumber>0) {
////        document.getElementById("navitext").firstChild.data="\u0424\u043E\u0442\u043E "+(actual_imageNumber+1)+" \u0438\u0437 "+(max_imageNumber+1);
////        $('#navi').css('display','block');
////        document.getElementById("navi").style.left=((window.document.getElementById("gallery").clientWidth-window.document.getElementById("navi").clientWidth)/2)+"px";
////      }
//    prepareForFade(document.prodimage1,document.prodimage2);
//    setupPosition();
//  }


//    TODO: ALLES RAUS WAS NICHT BENUTZT WIRD


  $('#itemIdDescr').html(selectArray[0][1]);

  var itemPrice = selectArray[0][2];
  var oldPrice = selectArray[0][3];
  var uvpPrice = uvp[itemID];
  var savedPercentage = selectArray[0][4];
  var savedAmount = selectArray[0][5];
  var image = selectArray[0][6];
  $('#pdaFallbackImage').attr("src", ottoImgPath+image);

  if (parseFloat(itemPrice) < parseFloat(oldPrice)) {
    $('#oldPrice').html(oldPrice);
    $('#itemSalePrice').html(itemPrice);
    $('#salePrice').css('display', 'inline');
    $('#normalPrice').hide();
    $('#rrpInfo').hide();
    $('#oldPriceText').text('statt');
  } else if (parseFloat(itemPrice) < parseFloat(uvpPrice)) {
    $('#oldPrice').html(uvpPrice);
    $('#itemSalePrice').html(itemPrice);
    $('#salePrice').css('display', 'inline');
    $('#normalPrice').hide();
    $('#rrpInfo').show();
    $('#oldPriceText').text('UVP **');
  } else {
    $('#itemPrice').html(itemPrice);
    $('#salePrice').hide();
    $('#normalPrice').css('display', 'inline');
    $('#rrpInfo').hide();
  }
  $('#newPrice').html(itemPrice);
  if (savedPercentage > 0) {
    $('#savedPercentage').html(youSave + " " + savedPercentage + "%");
    $('#oldPrice').css('display','inline');
  } else {
    $('#savedPercentage').html("Jetzt");
    $('#oldPrice').css('display','none');
  }
  $('#savedPercentage').css('display','inline');
  
  $('#goods_value').val(itemPrice.substring(0,itemPrice.length-2));
  calc.calculate();

  
  // sichtbare Bereiche umschalten
  if( pda == true ) {
    if(parseFloat(oldPrice)>parseFloat(itemPrice)) {
      $('#reducedPriceArea').css('display','block');
      $('#defaultPriceArea').css('display','none');
    } else {
      $('#reducedPriceArea').css('display','none');
      $('#defaultPriceArea').css('display','block');
    }
  }

  var availabilityStatus = selectArray[0][7];
  
  if ((special[itemID] != null) && ($('#special_info').size() > 0)){
    $('#special_info').show();
    if ($('#special_header_teaser').size() > 0)
      $('#special_header_teaser').show();
  } else {
    $('#special_info').hide();
    if ($('#special_header_teaser').size() > 0)
      $('#special_header_teaser').hide();
  }
  
  var availabilityText = selectArray[0][8];
  var cartButton = jQuery('#article_info a.button_arrow_l');
  if(availabilityStatus == 1) {
    $('#itemAvailable').css('color','#005E20');
    cartButton.fadeIn('fast');
  } else if(availabilityStatus == 2) {
    $('#itemAvailable').css('color','#FF0000');
    cartButton.fadeOut('fast');
  } else {
    $('#itemAvailable').css('color','#FF9900');
    cartButton.fadeIn('fast');
  }
  $('#itemAvailable').text(availabilityText);
  // Thumbnail setzen
  var colorSelectbox = $('select#Var_Article');
  if(colorSelectbox.length == 0) {
    colorSelectbox = $('select#Var_Dimension3');
  }
  if(colorSelectbox.length == 0) {
    colorSelectbox = $('select#Var_Dimension4');
  }

  if( colorSelectbox.length > 0 && update == true) {
    // index bestimmen
    var slectboxOptions = colorSelectbox.children('option');
    index = -1;
    for(var i=0; i<slectboxOptions.length; i++) {
      if(slectboxOptions[i].value == colorSelectbox.val()) {
        var id = 'cla-' + slectboxOptions[i].value;
        var colorFlager = $('#' + id);
        if (colorFlager.length > 0) {
          colorFlager.click();
        } else {
          $('#zoomoClick').click();
        }
        index = i;
        break;
      }
    }

    if(index != -1) {
      $('.colors ul li.current').removeClass("current");
      $('#colorthumbimage'+index).addClass("current");
    } else if (update == true) {
      $('#zoomoClick').click();
    }
  } else if(update == true) {
    $('#zoomoClick').click();
  }
  
  updateArticleInfos(selectArray);

  if (seals[itemID] != null && seals[itemID].length > 0) {
    var sealTabContent = "";
    var sealPath;
    for (var i = 0; i < seals[itemID].length; i++) {
      sealPath = ((productSeals.length > 0) && (seals[itemID][i].image == productSeals[0].image)) ? ottoSomePath : ottoSomePath + "logo_formati/";
      sealTabContent+='<li style="clear:left;">\n'
      + '  <img src="'+sealPath+seals[itemID][i].image+'" alt="'+seals[itemID][i].issue+'" class="floatLeft" style="margin-bottom:20px;"/>\n'
      + '  <h2>'+seals[itemID][i].issue+'&nbsp;</h2>\n'
      + '  <p>'+seals[itemID][i].result+'&nbsp;</p>\n'
      + '</li>\n';
    }
    $('#article_detail_third_row').show();
    sealPath = ((productSeals.length > 0) && (seals[itemID][0].image == productSeals[0].image)) ? ottoSomePath : ottoSomePath + "logo_formati/";
    $('#sealImg').attr('src',sealPath+seals[itemID][0].image);
    $('#sealImg').show();
    $('#test_reports').html(sealTabContent);
    $('#seal_tab_count').text(seals[itemID].length);
    $('#seal_tab').show();
    $('#tab2').show();
  } else {
    $('#article_detail_third_row').hide();
    $('#tab2').hide();
    $('#seal_tab').removeClass('selected');
    $('#tab1').show();
    $('#ratings_tab').addClass('selected');
    $('#sealImg').hide();
    $('#seal_tab').hide();
  }
  
  if ((measurementMap != null && measurementMap[itemID] != null) || (engravingMap != null && engravingMap[itemID] != null)) {
    $('#article_customisation').show();
    $('#customisation_info').show();
    $('#piecesQuantity').hide();
    if (measurementMap != null && measurementMap[itemID] != null) {
      var measurement1 = measurementMap[itemID][0];
      $('#itemSalePrice').html(itemPrice+' / '+measurement1.quantityUnit);
      $('#itemPrice').html(itemPrice+' / '+measurement1.quantityUnit);
      $('#oldPrice').html(oldPrice+' / '+measurement1.quantityUnit);
      $('#field1').attr('rel',measurement1.minOrderQuantity+','+measurement1.maxOrderQuantity+','+measurement1.stepSize);
      $('#labelDim1').text(measurement1.text);
      $('#quantityUnitDim1').text(measurement1.quantityUnit);
      $('#divDim1').show();
      if (measurementMap[itemID].length > 1) {
        var measurement2 = measurementMap[itemID][1];
        $('#field2').attr('rel',measurement2.minOrderQuantity+','+measurement2.maxOrderQuantity+','+measurement2.stepSize);
        $('#labelDim2').text(measurement1.text);
        $('#labelDim1').text(measurement2.text);
        $('#quantityUnitDim2').text(measurement2.quantityUnit);
        $('#divDim2').show();
      } else {
        $('#divDim2').hide();
        $('#field2').attr('rel',false);
      }
    } else {
      $('#divDim1').hide();
      $('#divDim2').hide();
      $('#field1').attr('rel',false);
      $('#field2').attr('rel',false);
    }
    if (engravingMap != null && engravingMap[itemID] != null) {
      if(engravingMap[itemID].dropdown) {
        $('#divEngravingDropdown').show();
        $('#labelEngravingDropdown').text(engravingMap[itemID].engravingString);
        $('#labelEngraving').text(engravingMap[itemID].engravingString);
        $('#field3Dropdown').attr('rel',false);
        $('#form_field_engraving').val($('#field3Dropdown option:selected').val());
        $('#field3Dropdown').bind('change',function() {
          $('#form_field_engraving').val($('#field3Dropdown option:selected').val());
        });
      } else {
        $('#divEngraving').show();
        $('#labelEngraving').text(engravingMap[itemID].engravingString);
        $('#field3').attr('rel',engravingMap[itemID].mandatory);
      }
    } else {
      $('#divEngraving').hide();
      $('#divEngravingDropdown').hide();
      $('#field3').attr('rel',false);
    }
    initProductCustomisationWithKeyUp();
  } else {
    $('#piecesQuantity').show();
    $('#customisation_info').hide();
    $('#article_customisation').hide();
    $('#field1').attr('rel',false);
    $('#field2').attr('rel',false);
    $('#field3').attr('rel',false);
  }
  
  if ((view != 'init') && update) {
    document.location.hash = itemID;
  }
  updateLastSeenCookie(itemID);
}

function updateBasketPosition(selectArray) {
  var itemId = selectArray[0][0];
  var artNr = selectArray[0][1];
  var itemPrice = selectArray[0][2];
  var image = selectArray[0][6];

  var availabilityStatus = selectArray[0][7];
  var availabilityText = selectArray[0][8];
  var cartButton    = jQuery('.basket_handle_customisation a.button_arrow_l');
  if(availabilityStatus == 1) {
    $('#itemAvailable').css('color','#005E20');
    cartButton.fadeIn('fast');
  } else if(availabilityStatus == 2) {
    $('#itemAvailable').css('color','#FF0000');
    cartButton.fadeOut('fast');
  } else {
    $('#itemAvailable').css('color','#FF9900');
    cartButton.fadeIn('fast');
  }
  $('#itemAvailable').text(availabilityText);

  $('#itemId').val(itemId);
  $('#artNr').html(artNr);
  $('#price').html(itemPrice);
  $('#mainImage').attr("src", ottoImgPath+image);

  if ((measurementMap != null && measurementMap[itemId] != null) || (engravingMap != null && engravingMap[itemId] != null)) {
    $('#customisation_info').show();
    $('#piecesQuantity').hide();
    if (measurementMap != null && measurementMap[itemId] != null) {
      var measurement1 = measurementMap[itemId][0];
      $('.piece').text(measurement1.quantityUnit);
      $('#price').html(itemPrice+' / '+measurement1.quantityUnit+'*');
      $('#field1').attr('rel',measurement1.minOrderQuantity+','+measurement1.maxOrderQuantity+','+measurement1.stepSize);
      $('#labelDim1').text(measurement1.text);
      $('.textDim1').text(measurement1.text);
      $('#quantityUnitDim1').text(measurement1.quantityUnit);
      $('#minDim1').text(measurement1.minOrderQuantity);
      $('#maxDim1').text(measurement1.maxOrderQuantity);
      $('#stepDim1').text(measurement1.stepSize);
      $('#divDim1').show();
      if (measurementMap[itemId].length > 1) {
        var measurement2 = measurementMap[itemId][1];
        $('#field2').attr('rel',measurement2.minOrderQuantity+','+measurement2.maxOrderQuantity+','+measurement2.stepSize);
        $('#labelDim2').text(measurement1.text);
        $('.textDim2').text(measurement1.text);
        $('#labelDim1').text(measurement2.text);
        $('.textDim1').text(measurement2.text);
        $('#quantityUnitDim2').text(measurement2.quantityUnit);
        $('#minDim2').text(measurement2.minOrderQuantity);
        $('#maxDim2').text(measurement2.maxOrderQuantity);
        $('#stepDim2').text(measurement2.stepSize);
        $('#divDim2').show();
      } else {
        $('#divDim2').hide();
        $('#field2').attr('rel',false);
      }
    } else {
      $('.piece').text(unescape('St%FCck'));
      $('#divDim1').hide();
      $('#divDim2').hide();
      $('#field1').attr('rel',false);
      $('#field2').attr('rel',false);
    }
    if (engravingMap != null && engravingMap[itemId] != null) {
      if(engravingMap[itemID].dropdown) {
        $('#divEngravingDropdown').show();
        $('#labelEngravingDropdown').text(engravingMap[itemId].engravingString);
        $('#labelEngraving').text(engravingMap[itemId].engravingString);
        $('#field3Dropdown').attr('rel',false);
        $('#form_field_engraving').val($('#field3Dropdown option:selected').val());
        $('#field3Dropdown').bind('change',function() {
          $('#form_field_engraving').val($('#field3Dropdown option:selected').val());
        });
      } else {
        $('#divEngraving').show();
        $('#labelEngraving').text(engravingMap[itemId].engravingString);
        $('#field3').attr('rel',engravingMap[itemId].mandatory);
      }
    } else {
      $('#divEngraving').hide();
      $('#divEngravingDropdown').hide();
      $('#field3').attr('rel',false);
    }
    initProductCustomisationWithKeyUp('updatecart');
  } else {
    $('.piece').text(unescape('St%FCck'));
    $('#piecesQuantity').show();
    $('#customisation_info').hide();
    $('#field1').attr('rel',false);
    $('#field2').attr('rel',false);
    $('#field3').attr('rel',false);
  }

}

function initProductCustomisationWithKeyUp(view) {
  global.initProductCustomisation();
  if (($('#field1').size() > 0) && ($('#field1').val() != '')) $('#field1').keyup();
  if (($('#field2').size() > 0) && ($('#field2').val() != '')) $('#field2').keyup();
  if (($('#field3').size() > 0) && (($('#field3').attr('rel') == 'false') || ($('#field3').val() != ''))) $('#field3').keyup();
  if (view == 'updatecart') {
    if ($('#field1').hasClass('error'))
      $('#field1').focus();
    else if ($('#field2').hasClass('error'))
      $('#field2').focus();
  }
}

function setCurrentItem(itemId) {
  var itemsData = select(items, 0, itemId);
  if (itemsData.length == 1) {
    var itemData = itemsData[0];
    for (var i = 0; i < selectboxes.length; i++) {
      $('#' + selectboxes[i]).val(itemData[offset + i]);
    }
  }
  updateCurrentItem('init',true);
}

function setColor(color, init) {
  if (init) {
    updateCurrentItem('noSS', false);
  } else {
  var option = $("#Var_Article option[value='"+color+"']");
  if (option.length == 0) {
    option = $("#Var_Dimension3 option[value='"+color+"']");
  }
  if (option.length == 0) {
    option = $("#Var_Dimension4 option[value='"+color+"']");
  }

  option.attr('selected', 'true');
    updateCurrentItem('', false);
  }
}

function showMeasurementInfo(labelId, inputId) {
  $('.measurementDim').text($('#'+labelId).text());
  $('#measurementText').text(MEASUREMENT_LAYER_INFO[$('#'+labelId).text().replace(/ /g, '_')]);
  var dimInfos = $('#'+inputId).attr('rel').split(',');
  var minDim = dimInfos[0];
  var maxDim = dimInfos[1];
  var stepSize = dimInfos[2];
  if (minDim != null && maxDim != null && stepSize != null) {
    $('#measurementMinDim').text(minDim);
    $('#measurementMaxDim').text(maxDim);
    $('#measurementStepSize').text(stepSize);
    $('#measurementDimSizes').show();
  } else
    $('#measurementDimSizes').hide();
  shopAction.showOverlay('measurementInfo');
  return false;
}


function updateArticleInfos(selectArray) {
  $.ajax({
    cache: false,
    url: shop.absoluteBaseUrl+"getArticleInfos",
    data: "itemId="+selectArray[0][0]+"&productId="+productId+"&categoryName="+categoryName,
    success: function(transport) {
      $(".article_aside").html(transport);
    }
  });
}

function updateLastSeenCookie(itemID) {
  var lastSeenCookie = $.cookie('lastSeen');
  var firstEntry = lastSeenCookie.split('#')[0];
  var restOfValue = '';
  if (lastSeenCookie.split('#').length > 1)
    restOfValue = lastSeenCookie.substring(lastSeenCookie.indexOf('#'));
  var firstEntryArray = firstEntry.split('_');
  var searchItemID = itemID;
  if (itemID.indexOf('_') > -1)
    searchItemID = itemID.split('_')[0];
  if (cookieValueDeleted) {
    if (lastSeenCookie.indexOf(firstEntryArray[0] + '_' + searchItemID) == -1) {
      $.cookie('lastSeen', productId + '_' + itemID + '#' + lastSeenCookie, {path: '/'});
      cookieValueDeleted = false;
    }
  } else if (firstEntryArray.length > 1) {
    if (restOfValue.indexOf(firstEntryArray[0] + '_' + searchItemID) > -1) {
      $.cookie('lastSeen', restOfValue.substring(1), {path: '/'});
      cookieValueDeleted = true;
    } else if (firstEntryArray[0] == productId) {
      $.cookie('lastSeen', firstEntryArray[0] + '_' + itemID + restOfValue, {path: '/'});
      cookieValueDeleted = false;
    }
  } else {
    if (restOfValue.indexOf(firstEntry + '_' + searchItemID) > -1) {
      $.cookie('lastSeen', restOfValue.substring(1), {path: '/'});
      cookieValueDeleted = true;
    } else if (firstEntry == productId) {
      $.cookie('lastSeen', firstEntry + '_' + itemID + restOfValue, {path: '/'});
      cookieValueDeleted = false;
    }
  }
}
