var shopAction = {
  submit : function (id) {
    $('#'+id).submit();
  },

  submitFormOnEnter: function(id, event) {
    if (event.keyCode == 13) {
      shopAction.submit(id);
      return false;
    } else {
      return true;
    }
  },

  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);
  },

  simpleAjaxRequest : function(url, targetId) {
    $.ajax({
      cache: false,
      url: url,
      success: function(transport){
        $("#"+targetId).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);
        }
        });
    }
  },

  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+'_div').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() {
	  var code = $('#payment_method_coupon').val();
	  if (code != null) {
		  $.post(shop.absoluteBaseUrl+"addVoucher", { code: code },
				  function(data){
		  			$("#voucherCode").html(data);
				  });

	  }
	  $('#payment_method_coupon').val("");
  },

  removeVoucher : function(code) {
	  if (code != null) {
		  $.post(shop.absoluteBaseUrl+"removeVoucher", { code: code },
				  function(data){
		  			$("#voucherCode").html(data);
				  });
	  }
  },

  processCheckoutPaymentBoxes : function() {
    $('input[name=payment_break]').attr('checked', false);
  },

  processRadioPaymentBoxes : function(checkbox, radiobox) {
    $('input[name=payment_break]').not(checkbox).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();
  },

  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).click();
  },

  refreshPackageShop : function() {
    $("#iframeShop").attr("src", "http:"==document.location.protocol ? shop.packageShopUrlHttp : shop.packageShopUrlHttps);
    return false;
  },

  showContactFormular : function (targetId) {
    $.get(shop.absoluteBaseUrl+"mail/contact", function (text) {
      $('#'+targetId).html(text);
    });
    return false;
  },

  submitContactForm : function (formId, targetId) {
    this.submitAjax(formId, targetId, false);
    return false;
  }
};