$(document).ready(function() {
  setupMenu();
  setupSlideshow();
  setupSlideshow_marcas();
  setupGliders();
  setupXHRForms();
  setupXHRLinks();
  setupCart();
  setupOptionGroups();
  setupSearchFormValidation();
  setupSelectBestsellersView();
   // jQuery.ajaxSetup(
  //   beforeSend: function(xhr){
  //     xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
  //   }
  // )
});

function setupSelectBestsellersView() {
  $('#combobox').change(function(evt){
    var id = this.options[this.selectedIndex].value;
    // $('.top10-in').load(this.form.action, {usage_id: id}); // issues POST
    var qs = id ? '?usage_id='+id : '';
    $('.top10-in').load(this.form.action + qs); // issues GET
  })
}

function setupSearchFormValidation() {
  $('#search_form').submit(function(){
    var textbox = $('#searchtext');
    if(textbox.val() == '') {
      displayNotification('<h1>Aviso</h1><p>O campo de procura não pode estar em branco.</p>');
      // textbox.animate({outline:'3px solid blue'}, 'fast').animate({outline:'0px solid blue'}, 'fast');
      flickerOutline(textbox);
      return false;
    }
  });
}

var flickerInterval;
function flickerOutline(element) {
  flickerInterval = window.setInterval(flashOutline, 500, element, 3);
}

function flashOutline(element, times) {
  $(element).animate({outlineWidth:'4px'}, 250).animate({outlineWidth:'0'}, 250);
  var memo = arguments.callee;
  if(!memo.count) memo.count = 0;
  memo.count++;
  if(memo.count == times) {
    window.clearInterval(flickerInterval);
    memo.count = 0;
  }
}

function setupOptionGroups() {
  $(".prod-option-promo-toggle, .prod-option-toggle").click(function() {
    $(this).next().slideToggle("normal");
  }).next().hide();
  $(".prod-shallow-option-toggle").click(function() {
    $(this).next().slideToggle("normal");
  }).next().show();
}

function setupMenu(){
  $("#Catmenu").treeview({
    animated: "medium",
    collapsed: true,
    persist: "location",
    unique: true
  })
}

function setupSlideshow() {
 
    var $active = $('#slideshow IMG.active'); 

    if ( $active.length == 0 ) $active = $('#slideshow IMG:last');

   var $sibs  = $active.siblings();
   var rndNum = Math.floor(Math.random() * $sibs.length );
   var $next  = $( $sibs[ rndNum ] );        

    $active.addClass('last-active');

    $next.css({opacity: 0.0})
        .addClass('active')
        .animate({opacity: 1.0}, 1000, function() {
            $active.removeClass('active last-active');
        });
}

function setupSlideshow_marcas() {
 
    var $active = $('#marcas_slide div.active');    

    if ( $active.length == 0 ) $active = $('#marcas_slide div:last');

   var $sibs  = $active.siblings();
   var rndNum = Math.floor(Math.random() * $sibs.length );
   var $next  = $( $sibs[ rndNum ] );
        

    $active.addClass('last-active');

    $next.css({opacity: 0.0})
        .addClass('active')
        .animate({opacity: 1.0}, 1000, function() {
            $active.removeClass('active last-active');
        });
}

$(function() {
    setInterval( "setupSlideshow()", 5000 );
     setInterval( "setupSlideshow_marcas()", 3000 );
})

function setupGliders() {
  initGlider("widget_destaques", "glidecontent", "p-select-destaques");
  initGlider("widget_novos", "glidecontent", "p-select-novos");
  initGlider("widget_destaques_small", "glidecontent-small", "p-select-destaques-small");
  initGlider("widget_novos_small", "glidecontent-small", "p-select-novos-small");
}

function initGlider(gliderid, contentclass, togglerid){
  featuredcontentglider.init({
  	gliderid: gliderid, //ID of main glider container
  	contentclass: contentclass, //Shared CSS class name of each glider content
  	togglerid: togglerid, //ID of toggler container
  	remotecontent: "", //Get gliding contents from external file on server? "filename" or "" to disable
  	selected: 0, //Default selected content index (0=1st)
  	persiststate: true, //Remember last content shown within browser session (true/false)?
  	speed: 500, //Glide animation duration (in milliseconds)
  	direction: "rightleft", //set direction of glide: "updown", "downup", "leftright", or "rightleft"
  	autorotate: true, //Auto rotate contents (true/false)?
  	autorotateconfig: [5000, 2] //if auto rotate enabled, set [milliseconds_btw_rotations, cycles_before_stopping]
  })
}

function setupCart() {
  var cart_div = document.getElementById('inline_cart')
  $('#toggler a:first-child').click(function(){
    var marginBottom, store = arguments.callee;
    if(window.getComputedStyle) marginBottom = window.getComputedStyle(cart_div, null).getPropertyValue('margin-bottom');
    else marginBottom = cart_div.currentStyle.marginBottom;
    if(!store.initialValue) store.initialValue = marginBottom;
    var newValue = marginBottom == store.initialValue ? 0 : store.initialValue;
    $(cart_div).animate({marginBottom: newValue}, 250, 'swing');
  })
  displayCart();
}

function displayCart() {
  if($('#inline_cart tr').length > 4) {
    $('#inline_cart p').addClass('hide');
    $('#inline_cart table').removeClass('hide');
  } else {
    $('#inline_cart table').addClass('hide');
    $('#inline_cart p').removeClass('hide');
  }
}
function setupXHRForms(context) {
  $('.xhr_form', context || document).each(function(){
    var form = $(this);
    var callbacks = [];
    if(form.hasClass('update_cart')){
      callbacks.push(updateCart);
      callbacks.push(function(){displayNotification('<h1>Aviso</h1><p>O seu carrinho foi actualizado</p>')});
    }
    else if(form.hasClass('replace')) callbacks.push(elementReplacerFor(form));
    else if(form.hasClass('append')) callbacks.push(elementAppenderFor(form));
    else callbacks.push(displayNotification);
    if(form.hasClass('refresh_cart')) callbacks.push(refreshCart);
    form.submit(function(e){
      // $('.xhr_response', form.parent()).removeClass('hidden');
      if(form.hasClass('append')) elementAppenderFor(form)('a enviar…');
      var params = {}, fields = $('input, textarea', form);
      fields.each(function(){ params[this.name] = this.value });
      $.ajax({
        type: "POST",
        url: form.attr('action'),
        data: params,
        success: function(returnText){for(var key in callbacks) callbacks[key](returnText)},
        error: function(xhrObject){displayNotification(xhrObject.responseText)}
      });
      return false;
    });
  })
  
  $('.submit_onchange').change(function(e){$(this.form).submit()});
  
  $('#cart button[name=remove]').click(function(){
    var action = this.form.action;
    this.form.action = action.replace('update_item', 'remove_item');
  })
}

function updateCart(returnText) {
  replaceElement($('table#cart'), returnText);
  displayCart();
}

function refreshCart(){
  $.ajax({
    url: '/orders/view_cart',
    success: function(returnText){
      replaceElement($('#inline_cart table'), returnText);
      displayCart();
    },
    error: function(xhrObject){displayNotification(xhrObject.responseText)}
  });
}

function setupXHRLinks(context) {
  $('.xhr_link', context || document).each(function(){
    var callback, link = $(this);
    if(link.hasClass('replace')) callback = elementReplacerFor(link.parent());
    else callback = function(returnText){displayNotification(returnText)};
    link.click(function(e){
      e.preventDefault()
      $.ajax({
        type: "GET",
        url: link.attr('href'),
        success: callback,
        error: function(xhrObject){displayNotification(xhrObject.responseText)}
      })
    })
  })
}

function elementReplacerFor(target) {
  return function(returnText){replaceElement(target, returnText)}
}

function elementAppenderFor(target) {
  return function(returnText){
    var recipient = $('.xhr_response', target.parent());
    if(recipient.length) {
      recipient.text(returnText);
    } else {
      target.after('<p class="xhr_response">'+returnText+'</p>');
    }
  }
}

function replaceElement(target, returnText) {
  var parent = target.parent();
  target.replaceWith(returnText);
  setupXHRForms(parent);
  setupXHRLinks(parent);
}

function displayNotification(message) {
  // console.info(message);
  var notification = $('#notification');
  $('div', notification).html(message || '');
  notification.fadeIn("fast");
  window.setTimeout(function(){
    notification.fadeOut("fast")
  }, 4000);
}

function verify_acceptance_of_tac(e) {
  if($('input[name=accept_tac]:checked').length == 0){
    e.preventDefault();
    alert('Tem que aceitar os termos e condições de venda para fazer um pedido de encomenda.')
  }
}

// Treeview  //

eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(4($){$.1l($.F,{E:4(b,c){l a=3.n(\'.\'+b);3.n(\'.\'+c).o(c).m(b);a.o(b).m(c);8 3},s:4(a,b){8 3.n(\'.\'+a).o(a).m(b).P()},1n:4(a){a=a||"1j";8 3.1j(4(){$(3).m(a)},4(){$(3).o(a)})},1h:4(b,a){b?3.1g({1e:"p"},b,a):3.x(4(){T(3)[T(3).1a(":U")?"H":"D"]();7(a)a.A(3,O)})},12:4(b,a){7(b){3.1g({1e:"D"},b,a)}1L{3.D();7(a)3.x(a)}},11:4(a){7(!a.1k){3.n(":r-1H:G(9)").m(k.r);3.n((a.1F?"":"."+k.X)+":G(."+k.W+")").6(">9").D()}8 3.n(":y(>9)")},S:4(b,c){3.n(":y(>9):G(:y(>a))").6(">1z").C(4(a){c.A($(3).19())}).w($("a",3)).1n();7(!b.1k){3.n(":y(>9:U)").m(k.q).s(k.r,k.t);3.G(":y(>9:U)").m(k.u).s(k.r,k.v);3.1r("<J 14=\\""+k.5+"\\"/>").6("J."+k.5).x(4(){l a="";$.x($(3).B().1o("14").13(" "),4(){a+=3+"-5 "});$(3).m(a)})}3.6("J."+k.5).C(c)},z:4(g){g=$.1l({N:"z"},g);7(g.w){8 3.1K("w",[g.w])}7(g.p){l d=g.p;g.p=4(){8 d.A($(3).B()[0],O)}}4 1m(b,c){4 L(a){8 4(){K.A($("J."+k.5,b).n(4(){8 a?$(3).B("."+a).1i:1I}));8 1G}}$("a:10(0)",c).C(L(k.u));$("a:10(1)",c).C(L(k.q));$("a:10(2)",c).C(L())}4 K(){$(3).B().6(">.5").E(k.Z,k.Y).E(k.I,k.M).P().E(k.u,k.q).E(k.v,k.t).6(">9").1h(g.1f,g.p);7(g.1E){$(3).B().1D().6(">.5").s(k.Z,k.Y).s(k.I,k.M).P().s(k.u,k.q).s(k.v,k.t).6(">9").12(g.1f,g.p)}}4 1d(){4 1C(a){8 a?1:0}l b=[];j.x(4(i,e){b[i]=$(e).1a(":y(>9:1B)")?1:0});$.V(g.N,b.1A(""))}4 1c(){l b=$.V(g.N);7(b){l a=b.13("");j.x(4(i,e){$(e).6(">9")[1y(a[i])?"H":"D"]()})}}3.m("z");l j=3.6("Q").11(g);1x(g.1w){18"V":l h=g.p;g.p=4(){1d();7(h){h.A(3,O)}};1c();17;18"1b":l f=3.6("a").n(4(){8 3.16.15()==1b.16.15()});7(f.1i){f.m("1v").1u("9, Q").w(f.19()).H()}17}j.S(g,K);7(g.R){1m(3,g.R);$(g.R).H()}8 3.1t("w",4(a,b){$(b).1s().o(k.r).o(k.v).o(k.t).6(">.5").o(k.I).o(k.M);$(b).6("Q").1q().11(g).S(g,K)})}});l k=$.F.z.1J={W:"W",X:"X",q:"q",Y:"q-5",M:"t-5",u:"u",Z:"u-5",I:"v-5",v:"v",t:"t",r:"r",5:"5"};$.F.1p=$.F.z})(T);',62,110,'|||this|function|hitarea|find|if|return|ul||||||||||||var|addClass|filter|removeClass|toggle|expandable|last|replaceClass|lastExpandable|collapsable|lastCollapsable|add|each|has|treeview|apply|parent|click|hide|swapClass|fn|not|show|lastCollapsableHitarea|div|toggler|handler|lastExpandableHitarea|cookieId|arguments|end|li|control|applyClasses|jQuery|hidden|cookie|open|closed|expandableHitarea|collapsableHitarea|eq|prepareBranches|heightHide|split|class|toLowerCase|href|break|case|next|is|location|deserialize|serialize|height|animated|animate|heightToggle|length|hover|prerendered|extend|treeController|hoverClass|attr|Treeview|andSelf|prepend|prev|bind|parents|selected|persist|switch|parseInt|span|join|visible|binary|siblings|unique|collapsed|false|child|true|classes|trigger|else'.split('|'),0,{}))

// Treeview END //
