;window.Modernizr=function(a,b,c){function w(a,b){return!!~(""+a).indexOf(b)}function v(a,b){return typeof a===b}function u(a,b){return t(prefixes.join(a+";")+(b||""))}function t(a){j.cssText=a}var d="2.0.6",e={},f=b.documentElement,g=b.head||b.getElementsByTagName("head")[0],h="modernizr",i=b.createElement(h),j=i.style,k,l=Object.prototype.toString,m={},n={},o={},p=[],q,r={}.hasOwnProperty,s;!v(r,c)&&!v(r.call,c)?s=function(a,b){return r.call(a,b)}:s=function(a,b){return b in a&&v(a.constructor.prototype[b],c)};for(var x in m)s(m,x)&&(q=x.toLowerCase(),e[q]=m[x](),p.push((e[q]?"":"no-")+q));t(""),i=k=null,a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function s(a){var b=-1;while(++b<g)a.createElement(f[b])}a.iepp=a.iepp||{};var d=a.iepp,e=d.html5elements||"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",f=e.split("|"),g=f.length,h=new RegExp("(^|\\s)("+e+")","gi"),i=new RegExp("<(/*)("+e+")","gi"),j=/^\s*[\{\}]\s*$/,k=new RegExp("(^|[^\\n]*?\\s)("+e+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),l=b.createDocumentFragment(),m=b.documentElement,n=m.firstChild,o=b.createElement("body"),p=b.createElement("style"),q=/print|all/,r;d.getCSS=function(a,b){if(a+""===c)return"";var e=-1,f=a.length,g,h=[];while(++e<f){g=a[e];if(g.disabled)continue;b=g.media||b,q.test(b)&&h.push(d.getCSS(g.imports,b),g.cssText),b="all"}return h.join("")},d.parseCSS=function(a){var b=[],c;while((c=k.exec(a))!=null)b.push(((j.exec(c[1])?"\n":c[1])+c[2]+c[3]).replace(h,"$1.iepp_$2")+c[4]);return b.join("\n")},d.writeHTML=function(){var a=-1;r=r||b.body;while(++a<g){var c=b.getElementsByTagName(f[a]),d=c.length,e=-1;while(++e<d)c[e].className.indexOf("iepp_")<0&&(c[e].className+=" iepp_"+f[a])}l.appendChild(r),m.appendChild(o),o.className=r.className,o.id=r.id,o.innerHTML=r.innerHTML.replace(i,"<$1font")},d._beforePrint=function(){p.styleSheet.cssText=d.parseCSS(d.getCSS(b.styleSheets,"all")),d.writeHTML()},d.restoreHTML=function(){o.innerHTML="",m.removeChild(o),m.appendChild(r)},d._afterPrint=function(){d.restoreHTML(),p.styleSheet.cssText=""},s(b),s(l);d.disablePP||(n.insertBefore(p,n.firstChild),p.media="print",p.className="iepp-printshim",a.attachEvent("onbeforeprint",d._beforePrint),a.attachEvent("onafterprint",d._afterPrint))}(a,b),e._version=d;return e}(this,this.document);

YUI({
  charset: 'utf-8',
  loadOptional: false,
  combine: true
}).use('node', 'io', 'io-form', 'json', 'anim', 'slider', function(Y) {

  /* Toggle payment options
   *
   */

  Y.on("contentready", function() {
    function togglePaymentOption(e, obj) {
      e.halt();
      var row = Y.one("#confirmform .action .action");
      var option = this.get('value');
      if (option == "invoice") {
        row.addClass('inv');
        row.removeClass('cc');
      }
      else {
        row.addClass('cc');
        row.removeClass('inv');
      }
    }
    Y.on("change", togglePaymentOption, "#confirmform input.payment");
  }, "#confirmform");


  /* Update the shopping cart summary
   *
   */
  Y.on("contentready", function() {
    var tH = {
      complete: function(id, o, args) {
        var data;
        try {
          data = Y.JSON.parse(o.responseText);
        }
        catch (e) {
          Y.log("Invalid cart data: "+o.responseText);
        }
        var a = data.cartamount;
        var c = data.cartcount;
        Y.one("#cartamount").set("innerHTML", a);
        Y.one("#cartcount").set("innerHTML", c);
        Y.one("#shoppingcart").addClass('active');
      }
    };
    var cfg = {
      on: {
        complete: tH.complete
      },
      context: tH
    };
    Y.io('/app/cartsummary', cfg);
  }, "#shoppingcart");

  /* Set items height
   *
   */
  var setItemHeights = function() {
    var items = Y.all(this+' article');
    var newheight = 0, itemheight;
    items.each(function(item) {
      itemheight = parseInt(item.getComputedStyle("height"), 10);
      if (itemheight > newheight) {
        newheight = itemheight;
      }
    });
    if (newheight > 0) {
      items.setStyle("height", newheight+"px");
    }
  };
  Y.on("available", setItemHeights, ".categorylist", ".categorylist");
  Y.on("available", setItemHeights, ".productlist", ".productlist");
  Y.on("available", setItemHeights, ".promoted", ".promoted");
  Y.on("available", setItemHeights, ".relatedproducts", ".relatedproducts");

  /* Buy something!
   *
   */
  Y.on("available", function() {
    var purchaseforms = Y.all('#content form.purchase');

    var animateFeedback = function(feedback, text) {
      var nodecolor = '#C00067';
      feedback.setStyle("color", nodecolor);
      feedback.set("innerHTML", text);
      var anim = new Y.Anim({
        node: feedback,
        from: {
          color: nodecolor
        },
        to: {
          color: '#ffffff'
        },
        duration: 3
      });
      var onEnd = function() {
        feedback.set("innerHTML", "&nbsp;");
        feedback.setStyle("color", "#ffffff");
      };
      anim.on('end', onEnd);
      anim.run();
    };

    var submitForm = function(e, obj) {
      e.halt();
      var thisform = this;
      var prodamount = thisform.one('input.prodamount');
      var formaction = thisform.getAttribute('action');
      var feedback = thisform.one('.feedback');

      var amount = prodamount.get('value');
      amount = amount.replace(/^\s+|\s+$/g,"");
      if (((amount * 1) === 0) || (amount != (amount * 1))) {
        animateFeedback(feedback, "Hvor mange vil du ha?");
      }
      else {
        var tH = {
          complete: function(id, o) {
            var data;
            try {
              data = Y.JSON.parse(o.responseText);
            }
            catch (e) {
              Y.log("Invalid JSON data: "+o.responseText);
            }

            animateFeedback(feedback, amount + " lagt i handlekurven");

            prodamount.set('value', 1);
            var a = data.cartamount;
            var c = data.cartcount;
            Y.one("#cartamount").set("innerHTML", a);
            Y.one("#cartcount").set("innerHTML", c);
            thisform.setAttribute('action', formaction);
          }
        };
        var cfg = {
          on: {
            complete: tH.complete
          },
          context: tH,
          method: "POST",
          form: {
            id: this,
            useDisabled: false
          }
        };
        Y.io(formaction, cfg);
      }

    };
    Y.on("submit", submitForm, purchaseforms);

  }, "#container");




  /* Update the shopping cart page
   *
   */
  Y.on("available", function() {
    var cartAction = function() {
      var cartform = Y.one("#cartform");
      function updateCart(e) {
        e.halt();
        Y.one("#urgle").set('value', 'fancy');
        Y.all("#cartform td.quantity input").each(function(item) {
          if (this.get("value") === "") {
            this.set("value", 0);
          }
        });

        var tH = {
          complete: function(id, o) {
            var fullcart = Y.one("#fullcart");
            var data;
            // Parse the JSON data
            try {
              data = Y.JSON.parse(o.responseText);
            }
            catch (e) {
              Y.log("Invalid product data: "+o.responseText);
            }
            if (data.cart == "empty") {
              window.location="/";
            }
            else {
              fullcart.set("innerHTML", data.cart);

              var s = data.cartcontent;
              var c = data.cartcount;
    
              cartAction();
            }
          }
        };
        var cfg = {
          on: {
            complete: tH.complete
          },
          context: tH,
          method: "POST",
          form: {
            id: cartform,
            useDisabled: false
          }
        };
        Y.io('/app/updatecart', cfg);
      }

      function submitCart(e) {
        e.halt();
        Y.one("#urgle").set('value', 'fancy');

        var tH = {
          complete: function(id, o) {
//            window.location="/bekreft/"
            location.href="/bekreft/";
          }
        };
        var cfg = {
          on: {
            complete: tH.complete
          },
          context: tH,
          method: "POST",
          form: {
            id: cartform,
            useDisabled: false
          }
        };

        Y.io('/app/updatecart', cfg);
      }

      Y.on("click", submitCart, Y.one("#confirmorder"), this, false);
      Y.on("submit", submitCart, cartform, this, false);
      Y.on("click", updateCart, Y.one("#updatecart"), this, false);
    };
    cartAction();
  }, "#cartform");


  

  /* Confirm order
   *
   */
  Y.on("available", function() {
    var confirmform = Y.one("#confirmform");
    var feedback = Y.one('#confirmmessage');

    var tH = {
      success: function(ioId, o) {
        var data;
        try {
            data = Y.JSON.parse(o.responseText);
        }
        catch (e) {
            Y.log("Invalid product data: "+o.responseText);
        }
  
        if (data.result == "success") {
          if (data.payment_type == "invoice") {
            window.location="/kvittering/";
          }
          else {
            window.location="/checkout/";
          }
        }
        else if (data.result == "error") {
          Y.one("#confirmform tr.action").addClass("error");
          feedback.set("innerHTML", data.message);
          if (data.name_error == "true") {
            Y.one("#confirmform tr.name").addClass("error");
          }
          if (data.address_error == "true") {
            Y.all("#confirmform tr.address").addClass("error");
          }
          if (data.zip_error == "true") {
            Y.one("#confirmform tr.zip").addClass("error");
          }
          if (data.city_error == "true") {
            Y.one("#confirmform tr.city").addClass("error");
          }
          if (data.email_error == "true") {
            Y.one("#confirmform tr.email").addClass("error");
          }
          if (data.phone_error == "true") {
            Y.one("#confirmform tr.phone").addClass("error");
          }
        }
      }
    };

    var cfg = {
      on: {
        success: tH.success
      },
      context: tH,
      method: "POST",
      form: {
        id: confirmform,
        useDisabled: false
      }
    };
  
    function makeRequest(e) {
      e.halt();
      feedback.set("innerHTML", "Et øyeblikk...");
      Y.all("#confirmform tr.error").removeClass("error");
      Y.io('/app/confirm', cfg);
    }

    Y.on("submit", makeRequest, confirmform, this, false);
    Y.on("click", makeRequest, Y.one("#submitorder_cc"), this, false);
    Y.on("click", makeRequest, Y.one("#submitorder_inv"), this, false);
  }, "#confirmform");



  Y.on("available", function() {
    var form = Y.one("#kurspamelding");
  
    var tH = {
      success: function(ioId, o) {
        var div = Y.one("#kursskjema");
        div.set("innerHTML", o.responseText);
      }
    };
  
    var cfg = {
      on: {
        success: tH.success
      },
      context: tH,
      method: "POST",
      form: {
        id: form,
        useDisabled: false
      }
    };
  
    function makeRequest(e) {
      e.halt();
      Y.io('/_/app/kurs.php', cfg);
    }
  
    Y.on("submit", makeRequest, form, this, false);
  }, "#kurspamelding");

  /* Create media slider
   *
   */
  Y.on("available", function() {
    // Create a horizontal slider using all defaults
    var initProdSlider = function() {

      // The element containing the element to be scrolled
      var itemlist = Y.one("#itemlist");

      var listItemsCount = Y.all("#itemlist li").size();
      var listItemWidth = 448+5;
      var listWidth = (listItemsCount*listItemWidth); // -5

      itemlist.setStyle("width", listWidth);

      var sliderWidth = 448;
      var maxSlide = parseInt(listWidth-sliderWidth);

      var prodSlider = new Y.Slider({
        axis  : 'x',
        min   : 0,
        max   : maxSlide,
        value : 0,
        length: sliderWidth+'px',
        thumbUrl: '/_/images/slider_thumb.png'
      });

      if (listWidth >= sliderWidth) {
        // When the slider value changes, reposition the content
        prodSlider.after("valueChange", function(e) {
          itemlist.setStyle('left', '-'+e.newVal+'px');
        });
      }

      // Render the Slider
      prodSlider.render('#slider');
    };
    initProdSlider();
  }, "#mediafilesOBSOLETE.slides"); // When the mediafiles element is available in the DOM


  var initProductImageNav = function(e) {
    var links = Y.all('#prodimagenav a');
    var images = Y.all('#itemlist li');

    var totalimages = Y.one("#totalimages");
    totalimages.set("innerHTML", images.size());

    var toggleImages = function(e) {
      e.preventDefault();
      var showImage;
      var direction = this.get("rel");
      var thisimage = Y.one("#thisimage");

      activeImage = Y.one('#itemlist li.active');

      if (direction === "previous") {
        showImage = activeImage.previous();
      }
      else if (direction === "next") {
        showImage = activeImage.next();
      }

      if (showImage !== null) {
        var temp = new Array();
        temp = showImage.get("id").split('-');
        var imgcount = temp[1];
        imgcount = imgcount*1;
        imgcount = imgcount+1;
        thisimage.set("innerHTML", imgcount);

        images.removeClass("active");
        showImage.addClass("active");
        if (showImage.next() === null) {
          Y.one('#prodimagenav a.next').addClass("disabled");
        }
        else {
          Y.one('#prodimagenav a.next').removeClass("disabled");
        }
        if (showImage.previous() === null) {
          Y.one('#prodimagenav a.previous').addClass("disabled");
        }
        else {
          Y.one('#prodimagenav a.previous').removeClass("disabled");
        }
      }
    }
    Y.on("click", toggleImages, links);
  };
  Y.on("available", initProductImageNav, "#prodimagenav");

});

