function resetShowcase(sc){
    $(".slider_cover", sc).removeClass("active");
    if(jQuery.browser.msie)
        $(".book_box", sc).css({"display": "block"});
    else
        $(".book_box", sc).animate({opacity: 1}, 500);
}
function setTitlesBg(title, pos){
    var h = title.height();
    var x = pos == "left" ? title.position().left : title.position().left + title.width();
    var y = title.position().top;
    t = $("body > .triangle").clone().appendTo(title.parent());
    
    var pos_y = y + h + 5;
    t.css({"display": "block", "position": "absolute", "top": pos_y});
    if(pos=="right"){
        t.addClass("triangle_right");
        t.css({"right": "-7px"}); 
    }
    else{
        t.css({"left": "-7px"}); 
    }
}

/*
 * devo mettere questa funzione per fare le colonne della stessa altezza
 * dentro la funione load
 * altrimenti non funziona in borswer come chrome e opera
 */
jQuery(window).load(function(){
    $('.dynamic_height').each(function() {
        $('.same_height', this).equalHeightColumns();
    });
})


/*
 * Inizializzazione sito
 * ---------------------
 *
 * .show_tooltip
 *      il title, l'elemento successivo o l'elemento identificato
 *      dall'attributo "rel" (un selettore jQuery) viene mostrato in un tooltip
 * 
 *      .relative
 *      se il tooltip deve essere posizionato relativamente al parent.
 *
 * .dynamic_height / .same_height
 *      rende uguale l'altezza di tutti gli elementi con la classe .same_height
 *      contenuti (anche non direttamente) da un elemento con classe
 *      .dynamic_height.
 *
 * .overlay_trigger
 *      mostra in un overlay l'elemento identificato dall'attributo "rel" (un
 *      selettore jQuery)
 *
 * .tabs
 *      i figli degli elementi con classe .tabs diventano le tab che gestiscono
 *      le pagine identificate dall'attributo "rel" (un selettore jQuery).
 *      Ogni figlio di .tabs gestisce il corrispondente elemento identificato
 *      tramite "rel".
 */
 
$(document).ready(function() {

    var jbody = $(document.body);

  /*
   * Alcune pagine hanno degli elementi che "aprono" elementi nascosti
   * questi oggetti cliccabili devono avere al calsse .opener
   * mentre l'oggetto da aprire è il successivo con classe .hider
   */
   $(".opener").addClass("opener_close");
   $(".opener").click(function(){
       o = $(this);
       n = $(this).next(".hider")
       if(n.css("display") == "none"){
           o.removeClass("opener_close");
           o.addClass("opener_open");
       }else{
           o.removeClass("opener_open");
           o.addClass("opener_close");
       }
       n.slideToggle("slow");
   });

  /*
   * il menu di navigazione delle categorie
   * ha un trinagolino idiota non posizionabile via css
   * quindo lo posiziono via js
   */
   $("body > .triangle").clone().appendTo($(".categories_menu"));
   $(".categories_menu li").each(function(){
       var l = $(this);
       var xy = l.position();
       var y = xy.top;
       var x = xy.left;
       var h = l.height();

       var tr = $(".triangle", l.parent());
  
      l.mouseover(function(){
          var pos_y = y + h;
          tr.css({"position": "absolute", "top": pos_y, "display": "block" }); 
      }).mouseout(function(){
          tr.css({"display": "none" });
      })
  });

  /*
   * ugulamente per i titoli delle sezioni
   * occorre mettere un triangolino via js
   * perchè non si può fare via css
   */
    $(".section_title_left").each(function(){
        setTitlesBg($(this), "left")
    });
    $(".section_title_right").each(function(){
        setTitlesBg($(this), "right")
    });

    /*
     * Gestione delle pagine che contengono FAQ
     * devono per forza essere delle definition list
     * con title e description
     * il cui contenitore dl dovrà chiamarsi "faq"
     */
     $(".faq dt").click(function(){
         $(this).next().slideToggle("slow");
         $(this).toggleClass("active");
     });
  
     $('.show_tooltip').each(function() {
         var e = $(this);
         var rel = e.attr('rel');
         var fx = jQuery.browser.msie ? "toggle" : "fade";

         var params = {
             position: "center right",
             offset: [0, 0],
             predelay: 200,
             relative: e.hasClass('relative'),
             tip: rel ? rel : null,
             //offset: [-50, 0],
             effect: fx
         };
         var dynamic = e.attr('data-tooltip-src');
         if(dynamic) {
            /*
             * i tooltip dinamici vengono cachati nel DOM
             */
            var rel_id = e.data('cached_id');
            if(!rel_id) {
                var original = $(rel);
                var rid = ('cloned-' + Math.random() + '-' + Math.random()).replace(/\./g, '');
                var c = original.clone();
                c.attr('id', rid);
                jbody.append(c);

                rel_id = '#' + rid;
                e.data('cached_id', rel_id);
                params.onBeforeShow = function() {
                    var tip = this.getTip();
                    tip.text('loading...');
                    tip.load(dynamic);
                }
            }
            params['tip'] = rel_id;
            params['relative'] = false;
         }
         e.tooltip(params).dynamic();
     });
  
     (function(){
         var o = jQuery.browser.msie == true ? 0 : 0.6;
         $(".overlay_trigger[rel]").overlay({
              mask: {
                  color: '#fff',
                  loadSpeed: 200,
                  opacity: o
              }
          });
     })();
  
     // gestione dei tabs
     $(".tabs[rel]").each(function() {
         var t = $(this);
         t.tabs(t.attr('rel'));
     });
  
     var cart = $("#cart_box");
     var cartContent = $("#cart_content");
     cartContent.slideUp();
  
     var cartClosing = null;
     cart.click(function(){
         cartContent.slideDown();
         $(".cart_closer").show("slow");
     })
     cartContent.mouseover(function(){
         if(cartClosing) {
             clearTimeout(cartClosing);
             cartClosing = null;
         }
     });
     cartContent.mouseout(function(){
         if(cartClosing==null) {
             cartClosing = setTimeout(function() { cartContent.slideUp(300, function(){$(".cart_closer").hide();}), cartClosing=null; }, 1000);
         }
     })
     $(".cart_closer").click(function(){
          if(cartClosing==null) {
              cartClosing = setTimeout(function() { cartContent.slideUp(300, function(){$(".cart_closer").hide();}), cartClosing=null; }, 1000);
          }
     })

     return;

});

$(document).ajaxSend(function(event, xhr, settings) {
    function getCookie(name) {
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
    function sameOrigin(url) {
        // url could be relative or scheme relative or absolute
        var host = document.location.host; // host + port
        var protocol = document.location.protocol;
        var sr_origin = '//' + host;
        var origin = protocol + sr_origin;
        // Allow absolute or scheme relative URLs to same origin
        return (url == origin || url.slice(0, origin.length + 1) == origin + '/') ||
            (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') ||
            // or any other URL that isn't scheme relative or absolute i.e relative.
            !(/^(\/\/|http:|https:).*/.test(url));
    }
    function safeMethod(method) {
        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
    }

    if (!safeMethod(settings.type) && sameOrigin(settings.url)) {
        xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
    }
});

