var shopAction = {
  submit : function (id) {
    $('#'+id).submit();
  },
  
  openPanelRedirectOnClose : function(url, title, x, y, updateHeader){

	    // open a welcome message as soon as the window loads
	    if (x == null && y == null) {
	      x = 300;
	      y = 300;
	    }


	    Shadowbox.open({
	        content:    '<span id="shadowboxMsg"></span>',
	        player:     "html",
	        title:      title,
	        height:     y,
	        width:      x,

	        options: {onFinish: function () {
	        $("#shadowboxMsg").append(loader);
	        $("#shadowboxMsg img").css("margin-top", 42 + "px" );
	        $("#shadowboxMsg img").css("margin-left", (x/2 - 12) + "px" );

	        shopAction.simpleAjaxRequest(url, 'shadowboxMsg', updateHeader);

	                  },
	                  
	                  onClose: function () {
	                	  var huba = $('#redirect');
	                	  if( redirect){
	                		  window.location = shop.absoluteBaseUrl + "orderSummary" ;
	                	  }
	                	  else{
	                		 
	                	  }
	                  },
	                  enableKeys: false
	                  
	        }
	    });

	  },
  checkAddVoucher : function(){
	  if($('#checkIfAdd:checked').val() != null){
		//checkbox is angehakt 
		  shopAction.addVoucher();
		  Shadowbox.close();
	  }
	  else{
		//checkbox ist nicht angehakt  
	  }
	  
  },
  
  submitShipping : function(id, event, url){
	  var code = $('#payment_method_coupon').val();
	  if (code != null && code != '') {
		  shopAction.openPanelRedirectOnClose(url+code, 'Uw korting '+code,700,500);
		  return false;
	  } else{
		  shopAction.submit(id);
		  return false;
	  }
  },
  
  consumeEnterInShippingForm : function(event, value, id, isRequiredPaymentMethod){
	  if(event.keyCode == 13 && value != ''){
		  shopAction.addVoucher(isRequiredPaymentMethod);
		  return false;
	  }else if(event.keyCode == 13 && value==''){
		  shopAction.submit(id);
		  
	  }
  },
  
  disableEnterKey: function (e)  {
       var key;     
       if(window.event)
            key = window.event.keyCode; //IE
       else
            key = e.which; //firefox     

       return (key != 13);
  },

  submitFormOnEnter: function(id, event) {
    if (event.keyCode == 13) {
      shopAction.submit(id);
      return false;
    } else {
      return true;
    }
  },

  submitFormAjaxOnEnter: function(formId, targetId, event) {
    if (event.keyCode == 13) {
      shopAction.submitAjax(formId,targetId);
      return false;
    } else {
      return true;
    }
  },

  getDetailInformation : function(id){
    $.ajax({
      url: shop.baseUrl+'getPaketshopInformation',
      data: ({paketshopId: id}),
        dataType:'html',
        success: function (data) {
          $('#' + id).html(data);
          $('#' + id).css("margin-left", "0px");
        }
    });
    return false;
  },

  paketshopPaging : function(newPage,postalCode, onlySearch){
    $.ajax({
      url: shop.baseUrl+'pagePaketshop',
      data: ({postalCode: postalCode, p: newPage, onlySearch: onlySearch}),
      dataType:'html',
      success: function (data) {
        $('#sbcontent').html(data);
      }
    });
  },

  getItemForChange : function(itemId, index, simpleCheckout) {
    $.ajax({
      url: shop.baseUrl+'getItemFromCartForChange',
      data: ({itemId: itemId, index: index, simpleCheckout: simpleCheckout}),
        dataType:'html',
        success: function (data) {
          $('#change_shopcart_position_' + index).html(data);
        }
    });
    return false;
  },

  submitAjax : function(formId, targetId, updateHeader) {
    var options = null;


    if (updateHeader) {
      options = {
          target:        '#'+targetId,
          cache:         false,
          success:       this.updateHeader
//          success:       this.debug
      };
    } else {
      options = {
          cache:         false,
          target:        '#'+targetId
//          success:       this.debug
      };
    }

    $('#'+formId).ajaxSubmit(options);
  },

  submitSavingAccountUpdateShopcart : function(formId, targetId) {
    var options = {
        target:        '#'+targetId,
        cache:         false,
        success:       function(transport){
              $.post(shop.absoluteBaseUrl+"updateMiniBasket",
                  function(data){
                    $("#right_mini_basket").html(data);
                  });
            }
    };
    $('#'+formId).ajaxSubmit(options);

  },

  submitOldBasketCheckout : function(formId, targetId) {
 var options = null;
      var options = {
          cache:         false,
          target:        '#'+targetId,
          success:        function(transport){
        $.post(shop.absoluteBaseUrl+"updateMiniBasket",
            function(data){
              $("#right_mini_basket").html(data);
            });
      }
      };

    $('#'+formId).ajaxSubmit(options);
  },

  submit24hForm: function() {

   var options = {
        cache:         false,
        success:       function() {
         $.post(shop.absoluteBaseUrl+"updateMiniBasket",
             function(data){
               $("#right_mini_basket").html(data);
             });
        }
    };
    $('#24hForm').ajaxSubmit(options);
    osm.submit();
    Shadowbox.close();
  },

  initNormalDelivery: function() {
    $.post(shop.absoluteBaseUrl+"prepare24Selection",
        function() {
         $.post(shop.absoluteBaseUrl+"updateMiniBasket",
             function(data){
               $("#right_mini_basket").html(data);
             });
        });
    osm.submit();
  },

  submitAjaxChangeItem : function(formId, targetId,updateHeader,event, simpleCheckout) {
    if(!event || event.keyCode==13){
      var options = {
            target:        '#'+targetId,
            cache:         false,
            success:       function(transport){
              this.updateHeader;
              if(simpleCheckout){
                shopAction.simpleAjaxRequest(shop.baseUrl+'updateTotalAmountOnShopcartSimple', 'total_amount_shopcart');
              }else{
                shopAction.simpleAjaxRequest(shop.baseUrl+'updateTotalAmountOnShopcart', 'total_amount_shopcart');
              }
            }
      };
      $('#'+formId).ajaxSubmit(options);
    }
  },

  simpleAjaxRequest : function(url, targetId, updateHeader) {
    $.ajax({
      cache: false,
      url: url,
      success: function(transport){
        if(updateHeader){
          if(url.indexOf("Notepad") != -1) {
            shopAction.updateNotepadHeader('','success');
          } else {
            shopAction.updateHeader('','success');
          }
        }
        $("#"+targetId).html(transport);
      }
      });
  },

  simpleAjaxRequestoutOfIFrame : function(url, targetId, updateHeader) {
    $.ajax({
      cache: false,
      url: url,
      success: function(transport){
        $('#'+targetId, window.parent.document).html(transport);
      }
      });
  },

  submitAjaxWithInitStarRater : function(formId, targetId, updateHeader) {
    var options = {
        cache:         false,
        target:        '#'+targetId,
        success:      function(data) {
          var selected = $('#points :selected').val();
          var text = $('#points :selected').html();
          global.initStarRater('#article_detail_third_row div.star_rater');
          li_elem = $('#article_detail_third_row div.star_rater li');
          el_value = $('#article_detail_third_row div.star_rater div');
          li_elem.filter(':lt('+(selected)+')').addClass('active');
          el_value.text( text );



        }
    };

  $('#'+formId).ajaxSubmit(options);
  },

  submitAjaxWithValidation : function(formId, targetId, updateHeader) {
    var errors = false;
    $("#"+formId+" :input").each(function() {
      var element = $(this);
      if (element.val() == '') {
        errors = true;
        element.attr("class", "error");
        $("label[for='"+element.attr('id')+"']").attr("class", "error");
      } else {
        element.removeClass("error");
        $("label[for='"+element.attr('id')+"']").removeClass("error");
      };
    });

    if(!errors) {
      shopAction.submitAjax(formId, targetId, updateHeader);
    }
  },

  submitOnlyValid : function(id) {
    window.location = $('#'+id).attr("action") + "?" + $("#"+id+" :input[value][value!='.']").serialize();
  },

  updateHeader : function(responseText, statusText) {
    if (statusText == 'success') {
      $.ajax({
        cache: false,
        url: shop.absoluteBaseUrl+"updateHeader",
        success: function(transport){
          $("#session").html(transport);
        }
        });
    }
  },

  updateNotepadHeader : function(responseText, statusText) {
    if (statusText == 'success') {
      $.ajax({
        cache: false,
        url: shop.absoluteBaseUrl+"updateNotepadHeader",
        success: function(transport){
          $("#notepad_info").html(transport);
        }
      });
    }
  },

  debug : function(responseText, statusText) {
    alert('responseText '+responseText);
    alert('statusText '+responseText);
  },

  rateReview : function(reviewId, helpfull, productId){
    $.ajax({
      url: shop.baseUrl+"productdetail/rateReview",
      data: "reviewId="+reviewId+"&helpfull="+helpfull+"&productId="+productId,
      success: function(data) {
        $('#product_review_id_'+reviewId + " .helpfull").html(data);

      }
    });
  },

  addAjax : function(url) {
    $.ajax({
      cache: false,
      url: url,
      success: this.updateHeader
      });
  },
  openGlossary : function(id, url) {
    window.location.href=url + "&gid=" + id;
  },

  changeFilter : function (preis) {

    var query = {};
    var search = window.location.search.replace(/^\?/, "").replace(/\+/g, "%20");

    if (search != "") {
      var t1 = search.split("&");
      for (var i=0;i<t1.length;i++) {
        var kv = t1[i].split("=", 2);
        query[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]);
      }
    }
    if (this.activeValue == null)
      delete query[this.activeFilter];
    else
      query[this.activeFilter] = this.activeValue;
    query["filter.preis"] = preis;
    window.location.search = $.param(query);
  },
updatePreisFilter : function (preis) {
    var range = preis.split('-');
    $('div.slider').each(function() {
      var el = $(this);
    var el_option_handle = el.find('.handle');
    var el_option_handle2 = el.find('.handle2');
    el_option_handle.text(range[0].split(' ')[0]);
    el_option_handle2.text(range[1].split(' ')[0]);
    });
  },
  ajaxRequestUpdateCartForm : function(itemId, index, view) {
    $.post(shop.absoluteBaseUrl+"getItemFromCartForChange", { itemId: itemId, index:index, view:view},
        function(data){
          $("#getItemFromCartForChange").html(data);
        });

  },

  addVoucher : function(isRequiredPaymentMethod) {
    var code = $('#payment_method_coupon').val();
    if (code != null && code != '') {
      $.post(shop.absoluteBaseUrl+"addVoucher", { code: code, isRequiredPaymentMethod: isRequiredPaymentMethod },
          function(data){
            $("#voucherCode").html(data);
            $('#payment_method_coupon').val("");
            $.post(shop.absoluteBaseUrl+"updateMiniBasket",
                function(data){
                  $("#right_mini_basket").html(data);
                  var $price = $('#basket_total_price').html();
                  $price = $price.substring(1);
                  $price = $price.replace(",",".");
                   var installment = shopAction.getInstallment($price);
                    if(installment > 0 ){
                      $("#bepaalt1").text(installment);
                    }else{
                      $('#ratePayment1').hide();
                    }
                });
          });
    }
  },

  removeVoucher : function(code) {
    if (code != null) {
      $.post(shop.absoluteBaseUrl+"removeVoucher", { code: code },
          function(data){
            $("#voucherCode").html(data);
            $.post(shop.absoluteBaseUrl+"updateMiniBasket",
                function(data){
                  $("#right_mini_basket").html(data);
                  var $price = $('#basket_total_price').html();
                  $price = $price.substring(1);
                  $price = $price.replace(",",".");
                   var installment = shopAction.getInstallment($price);
                   if(installment > 0 ){
                    $("#bepaalt1").text(installment);
                  }else{
                    $('#ratePayment1').hide();
                  }
                });
          });

    }
  },

  updateUserAddress: function(street,streetNumber, zipCode, city) {
    if(street != '')
      $('#update_new_street').val(street);
    if(streetNumber != '')
      $('#update_new_streetNumber').val(streetNumber);
    if(zipCode != '')
      $('#update_new_zipCode').val(zipCode);
    if(city != '')
      $('#update_new_city').val(city);
  },

  processCheckoutPaymentBoxes : function() {
    $('input[name=payment_break]').attr('checked', false);
    $('input[name=xxl_protection]').attr('checked', false);
  },

  processRadioPaymentBoxes : function(checkbox, radiobox) {
    if(checkbox.id == 'payment_break_bank_transfer'){
      $('input[name=xxl_protection]').not(checkbox).attr('checked', false);
      $('#payment_break_installments').attr('checked', false);
    }else{
      $('#payment_break_bank_transfer').attr('checked', false);
    }
    $('input[name=payment_method]').attr('checked', false);
    $('#'+radiobox).attr('checked', true);
  },

  openPopUp : function(url) {
      var MyWindow;
       MyWindow = open(
         url,
         "confirmation",
         "width=800, height=700, resizable=yes, scrollbars=yes, directories=no, menubar=no, location=no");
       MyWindow.focus();
  },

  refreshIFrameById : function(iframeId) {
    jQuery.each($("#"+iframeId, window.parent.document), function() {
      $(this).attr({
        src: $(this).attr("src")
      });
    });
    return false;
  },

  refreshIFrameByJQueryObject : function(iFrame) {
      iFrame.attr({
        src: iFrame.attr("src")
      });
    return false;
  },

  closeOverlay : function(id) {
    var obj = $('#'+id);
    $(obj).find("a.overlay_close").click();
  },

  getInstallment: function(basketPrice) {
    var ar = shopNlAction.getInstallmentMap();
    var last = 0;
    for (i=0; i < ar.length; i++) {
      if (parseFloat(basketPrice) > parseFloat(ar[i].split("=")[0])) {
        last = parseFloat(ar[i].split("=")[1]);

      }
    }
    return last;
  },


  showBundles : function(productId) {
    var url = shop.absoluteBaseUrl + "displayBundles?productId=" + productId;
    $.get(url, function(text) {
      $('#carouselBody').html(text);
      global.initCarousel('div.carousel div.js');
    });
  },

  show : function(id) {
    $("#"+id).removeClass("hidden");
  },

  hide : function(id) {
    $("#"+id).addClass("hidden");
  },

  showOverlay : function(id) {
    $('#'+id).overlay({
      absolute: false,
      top: 'center',
      zIndex: 10002,
      close: 'a.jsclose',
      api: true,
      expose: {
        color: '#000',
        loadSpeed: 'normal',
        opacity: 0.1,
        zIndex: 10001
      }
    }).load();
  },

  openPanel : function(url, title, x, y, updateHeader){

    // open a welcome message as soon as the window loads
    if (x == null && y == null) {
      x = 300;
      y = 300;
    }


    Shadowbox.open({
        content:    '<span id="shadowboxMsg"></span>',
        player:     "html",
        title:      title,
        height:     y,
        width:      x,

        options: {onFinish: function () {
        $("#shadowboxMsg").append(loader);
        $("#shadowboxMsg img").css("margin-top", 42 + "px" );
        $("#shadowboxMsg img").css("margin-left", (x/2 - 12) + "px" );

        shopAction.simpleAjaxRequest(url, 'shadowboxMsg', updateHeader);

                  },
                  enableKeys: false
        }
    });

  },

  openPanelForceUserToSubmitContent : function(url, title, x, y, updateHeader){

    // open a welcome message as soon as the window loads
    if (x == null && y == null) {
      x = 300;
      y = 300;
    }

    Shadowbox.open({
        content:    '<span id="shadowboxMsg"></span>',
        player:     "html",
        title:      title,
        height:     y,
        width:      x,
        options: {onFinish: function () {
        $("#shadowboxMsg").append(loader);
        $("#shadowboxMsg img").css("margin-top", 42 + "px" );
        $("#shadowboxMsg img").css("margin-left", (x/2 - 12) + "px" );
        $('#sb-nav-close').removeAttr("onclick");
        $('#sb-nav-close').hide();

        shopAction.simpleAjaxRequest(url, 'shadowboxMsg', updateHeader);

                  },
                  enableKeys: false,
                  modal:      true
        }
    });

  },

  showServiceSouthTyrol : function(boxValue){
    shopAction.simpleAjaxRequest(shop.baseUrl+'service/service?view='+boxValue, 'sbcontent');
  },

  openPanelS : function(text, title, x, y){

    // open a welcome message as soon as the window loads
    if (x == null) {
      x = 300;
    }
    if (y == null) {
      y = 400;
    }
    Shadowbox.open({
        content:    text,
        player:     "html",
        title:      title,
        height:     y,
        width:      x,
        options: {
          enableKeys: false
        }
    });
  },
  popup : function (url, title, x, y) {
    if (x == null) {
      x = 300;
    }
    if (y == null) {
      y = 400;
    }

    if (y == null && x == null) {


      try {
        fenster = window.open(url, title, "resizable=yes");
        } catch (e) {
          alert(e.message);
        }
    } else {
      try {
      fenster = window.open(url, title, "width=" + x + ",height=" + y + ",resizable=yes");
      } catch (e) {
        alert(e.message);
      }
    }
    fenster.focus();
    return false;
   },
   trackKeys : function (evnt,regEx) {
     var keyCode = evnt.keyCode ? evnt.keyCode : evnt.which;
     // console.debug(keyCode);
   return !!String.fromCharCode(keyCode).match(regEx) || keyCode>=36 && keyCode<41 || keyCode==8 ;
    },
    switchLocation : function(url) {
      window.location=url;
    },
    
    loginOnEnter : function (formId, userId, passwId, errorId, event) {
      if (event != null && event.keyCode == 13) {
        doLoginByEmail.submit(formId, userId, passwId, errorId);
        return false;
      } else {
        return true;
      }
    },
    
    doLoginByEmail : function (formId, userId, passwId) {
      var filterEmail = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
      var filterNr = /^([0-9]){8}$/;
      var email = $('#' + userId).removeClass('ErrorBorder');
      var passw = $('#' + passwId).removeClass('ErrorBorder');
      var msg = '';
      
      if (email.val() == '') {
        msg += email.attr('custom:msg1');
        email.addClass('ErrorBorder');
      } else if (!filterEmail.test(email.val()) && !filterNr.test(email.val())) {
        msg += email.attr('custom:msg2');
        email.addClass('ErrorBorder');
      } 
      if (passw.val() == '') {
        msg += passw.attr('custom:msg1');
        passw.addClass('ErrorBorder');
      }
      if (msg == '') {
        $('#' + formId).submit();
      } else {
        $('#ServersiteErrorInfo').remove();
        var errorInfo = $('#ClientsiteErrorInfo');
        errorInfo.addClass('ErrorInfo').attr('width: 480px');
        errorInfo.html(msg);
      }
      return false;
    }, 
    
    doLoginByCustumorAndBirthday : function (formId, customerId, dayId, monthId, yearId) {
      var filterDigit = /^([0-9])+$/;
      var filter8Digit = /^([0-9]){8}$/;
      var customer = $('#' + customerId, $('#' + formId)).removeClass('ErrorBorder');
      var day = $('#' + dayId, $('#' + formId)).removeClass('ErrorBorder');
      var month = $('#' + monthId, $('#' + formId)).removeClass('ErrorBorder');      
      var year = $('#' + yearId, $('#' + formId)).removeClass('ErrorBorder');      
      
      var msg = '';
      if (customer.val() == '') {
        msg += customer.attr('custom:msg1');
        customer.addClass('ErrorBorder');
      } else if (!filter8Digit.test(customer.val())) {
        msg += customer.attr('custom:msg2');
        customer.addClass('ErrorBorder');
      }
      
      if (day.val() == '' || day.val() == day.attr('title') 
        || month.val() == '' || month.val() == month.attr('title') 
        || year.val() == '' || year.val() == year.attr('title')) {
        msg += customer.attr('custom:msg3');
        day.addClass('ErrorBorder');
        month.addClass('ErrorBorder');
        year.addClass('ErrorBorder');
      } else if (!filterDigit.test(day.val()) || day.val() == 0 || day.val() > 31
          || !filterDigit.test(month.val()) || month.val() == 0 || month.val() > 12
          || !filterDigit.test(year.val()) || year.val() < 1900
          ) {
        msg += customer.attr('custom:msg4');
        day.addClass('ErrorBorder');
        month.addClass('ErrorBorder');
        year.addClass('ErrorBorder');
      }
      
      if (msg == '') {
        $('#' + formId).submit();
      } else {
        $('#ServersiteErrorInfo').remove();        
        var errorInfo = $('#ClientsiteErrorInfo');
        errorInfo.addClass('ErrorInfo').attr('width: 480px');
        errorInfo.html(msg);
      }
      return false;
    },     
    
    validateEmailField: function (formId, userId, targetId) {
      var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
      var form = $('#' + formId);
      var email = $('#'+ userId, form).removeClass('ErrorBorder');
      var msg = '';
      if (email.val() == '') {
        msg += email.attr('custom:msg1');
        email.addClass('ErrorBorder');
      } else if (!filter.test(email.val())) {
        msg += email.attr('custom:msg2');
        email.addClass('ErrorBorder');
      } 
      if (msg == '') {
        shopAction.submitAjax(formId, targetId);
      } else {
        var errorInfo = $('#ClientsiteErrorInfo', form);
        errorInfo.addClass('ErrorInfo').attr('width: 480px');
        errorInfo.html(msg);
      }
      return false;
    }    
};

function getNextField(thisFieldId, nextFieldId, maxLength, event) {
  var value = $('#'+thisFieldId).val();
  if(value.length == maxLength && event.keyCode != 9 && event.keyCode != 16 && event.keyCode != 37 && event.keyCode != 38 && event.keyCode != 39 && event.keyCode != 40){
    $('#'+nextFieldId).focus();
  }else{
    $('#'+thisFieldId).focus();
  }
}

function validateIntInInputField(inputFieldId, maxInt){
  var value = $('#'+inputFieldId).val();
  if(value > maxInt){
    $('#'+inputFieldId).addClass('ErrorBorder');
  }else{
    $('#'+inputFieldId).removeClass('ErrorBorder');
  }
}

//endsWith-Funktion für Strings
String.prototype.endsWith = function(str)
{return (this.match(str+"$")==str)}

/*
 * Zuständig für die Anzeige und Ausblendung eines Eingabehinweises
 * in Eingabefeldern 
 */
var inputHintListener = {
  bind : function(item, hintText, hintStyle, normalStyle) {
    var virginFocus = true;
    item.val(hintText).attr('style', hintStyle);
    item.focus(function(){
      item.attr('style', normalStyle);
      if (virginFocus) {
        item.val('');
        virginFocus = false;
      }
    });
    item.blur(function(){
      if (item.val() == '') {
        item.val(hintText).attr('style', hintStyle);
        virginFocus = true;
      }
    });
  }
}  