var WEBSITE_WIDTH = 960;

var CURRENT_OPENAREA = undefined;

var SCROLLBAR_BASE_H = 245;
var SCROLLBAR_1_H = 208;

var productBoisFx = 0;
var productAppliqueFx = 0;
var productTavoloFx = 0;
var productLanterneFx = 0;
var productTerraFx = 0;
var productUnicoFx = 0;
// var productCandelaFx = 0;
var productSospensioneFx = 0;

var CATEGORY_WIDTH = 870;
var CATEGORY_HEIGHT = 116;
var productsCategoriesTitle = 0;
var productsCategoriesSubtitle = 0;
var productsCategories = 0;
var productsHead = 0;
var productsBody = 0;

var rubricsSellingCondition = 0;
var rubricsEcologicalChoice = 0;
var rubricsConsigliIlluminazione = 0;
var rubricsLinksFriends = 0;
var rubricsSellingConditionFx = 0;
var rubricsEcologicalChoiceFx = 0;
var rubricsConsigliIlluminazioneFx = 0;
var rubricsLinksFriendsFx = 0;

function initAccordion(togglerSize, accNumber) {

  var contents = $$('div.accordion-content');
  for ( var i = 0; i < contents.length; i++) {
    // alert(contents[i]);
    if (i != 0)
      contents[i].setStyle('display', 'block');
  }

  var togglers = $$('div.accordion-toggler');
  for ( var i = 0; i < togglers.length; i++) {
    var img = togglers[i].getFirst('img');
    img.addEvent("mouseover", function(event) {
      event.target.setPosition({
        x : 0,
        y : 10
      });
    });
    img.addEvent("mouseout", function(event) {
      event.target.setPosition({
        x : 0,
        y : 0
      });
    });

  }

  var myAccordion =
      new Fx.Accordion($('.accordions'), togglers, 'div.accordion-content', {
        // returnHeightToAuto : true,
        initialDisplayFx : true,
        // alwaysHide: true,
        opacity : true,
        fixedWidth : WEBSITE_WIDTH - (togglerSize * accNumber),
        height : false,
        width : true,
        // show : false,
        onActive : function(toggler, element) {
          if (Browser.Engine.webkit | Browser.Engine.presto) {
            toggler.hide();
            toggler.getFirst('img').setStyle('display', 'none');
            toggler.getParent().getFirst('div.accordion-content').setStyle(
                'display', 'block');
          } else {
            toggler.getFirst('img').hide();
            toggler.hide();
          }
        },
        onBackground : function(toggler, element) {
          if (Browser.Engine.webkit | Browser.Engine.presto) {
            toggler.show();
            toggler.getFirst('img').setStyle('display', 'block');
            toggler.getParent().getFirst('div.accordion-content').setStyle(
                'display', 'none');
          } else {
            toggler.getFirst('img').show();
            toggler.show();
          }
        },
        onComplete : function(toggler, element) {
        }
      });

  var scrollbars = $$('div.scrollbar');
  scrollbars.each(function(scrollbar) {
    var body = scrollbar.getPrevious();
    var rangeMax = body.getScrollSize().y - body.getSize().y;
    var maxRange = 0;
    if (Browser.Engine.webkit | Browser.Engine.presto) {
      maxRange = 1000;
    } else {
      maxRange = body.getScrollSize().y - body.getSize().y;
    }
    scrollbar = new Slider(scrollbar, scrollbar.getElement('.knob'), {
      range : [
          0, maxRange
      ],
      mode : 'vertical',
      wheel : true,
      onChange : function(value) {
        body.scrollTo(0, value);
      }
    })

    body.addEvent("mousewheel", function(ev) {
      scrollbar.scrolledElement(ev)
    })

  })

}

function initProductsToggles() {

  productsCategories.set('morph', {
    duration : 1000,
    transition : 'expo:out'
  });

  productBoisFx = new Fx.Reveal('products-bois', {
    duration : 1000,
    transition : Fx.Transitions.Pow.easeOut
  });

  productAppliqueFx = new Fx.Reveal('products-applique', {
    duration : 1000,
    transition : Fx.Transitions.Pow.easeOut
  });

  productTavoloFx = new Fx.Reveal('products-tavolo', {
    duration : 1000,
    transition : Fx.Transitions.Pow.easeOut
  });

  productLanterneFx = new Fx.Reveal('products-lanterne', {
    duration : 1000,
    transition : Fx.Transitions.Pow.easeOut
  });

  productTerraFx = new Fx.Reveal('products-terra', {
    duration : 1000,
    transition : Fx.Transitions.Pow.easeOut
  });

  productUnicoFx = new Fx.Reveal('products-unico', {
    duration : 1000,
    transition : Fx.Transitions.Pow.easeOut
  });

  // productCandelaFx = new Fx.Reveal('products-candela', {
  // duration : 1000,
  // transition : Fx.Transitions.Pow.easeOut
  // });

  productSospensioneFx = new Fx.Reveal('products-sospensione', {
    duration : 1000,
    transition : Fx.Transitions.Pow.easeOut
  });
  return false;
}

function pressFx() {

}

function initRubricsToggles() {
  rubricsEcologicalChoiceFx = new Fx.Reveal('ecological_choice', {
    duration : 1000,
    transition : Fx.Transitions.Pow.easeOut
  });
  rubricsSellingConditionsFx = new Fx.Reveal('selling_conditions', {
    duration : 1000,
    transition : Fx.Transitions.Pow.easeOut
  });
  rubricsConsigliIlluminazioneFx = new Fx.Reveal('consigli_illuminazione', {
    duration : 1000,
    transition : Fx.Transitions.Pow.easeOut
  });
  rubricsLinksFriendsFx = new Fx.Reveal('links_friends', {
    duration : 1000,
    transition : Fx.Transitions.Pow.easeOut
  });
}

function productsAdjustBlock(reveal, image, el) {

  productsCategoriesTitle.hide();
  productsCategoriesSubtitle.hide();

  if (reveal == 'all') {
    productsCategories.setStyle('width', CATEGORY_WIDTH);
    productsCategories.setStyle('height', CATEGORY_HEIGHT);
    productBoisFx.dissolve();
    productAppliqueFx.dissolve();
    productTavoloFx.dissolve();
    productLanterneFx.dissolve();
    productTerraFx.dissolve();
    productUnicoFx.dissolve();
    // productCandelaFx.dissolve();
    productSospensioneFx.dissolve();
  } else {
    productsCategories.morph({
      width : 300
    });

    if (image) {
      productsHead.getFirst('img').src = "/images/heads/" + image
    }
    if (reveal != productBoisFx) {
      productBoisFx.dissolve();
    }
    if (reveal != productAppliqueFx) {
      productAppliqueFx.dissolve();
    }
    if (reveal != productTavoloFx) {
      productTavoloFx.dissolve();
    }
    if (reveal != productLanterneFx) {
      productLanterneFx.dissolve();
    }
    if (reveal != productTerraFx) {
      productTerraFx.dissolve();
    }
    if (reveal != productUnicoFx) {
      productUnicoFx.dissolve();
    }
    // if (reveal != productCandelaFx) {
    // productCandelaFx.dissolve();
    // }
    if (reveal != productSospensioneFx) {
      productSospensioneFx.dissolve();
    }
    reveal.reveal();
    productsCategoriesSubtitle.show();

    if (el) {
      productsCategoriesTitle.innerHTML = $(el).getFirst('img').title;
      productsCategoriesTitle.show();
    }

    showScrollbar('force');
  }

  return false;
}

function restoreProductsPage() {
  productsCategoriesSubtitle.hide();
  productsCategoriesTitle.hide();
  productsCategoriesTitle.innerHTML = '';
  productsCategories.setStyle('width', CATEGORY_WIDTH);
  productsCategories.setStyle('height', CATEGORY_HEIGHT);
  productsAdjustBlock('all');
  return false;
}

function prepareProductsPage() {
  productsCategoriesTitle = $('products-categories-title');
  productsCategoriesSubtitle = $('products-categories-subtitle');
  productsCategories = $('products-categories');
  productsHead = $('products-head');
  productsBody = $('products-body');
  return false;
}

function prepareRubricsPage() {
  rubricsEcologicalChoice = $('ecological_choice');
  rubricsSellingConditions = $('selling_conditions');
  rubricsConsigliIlluminazione = $('consigli_illuminazione');
  rubricsLinksFriends = $('links_friends');
  return false;
}

function rubricsAdjustBlock(reveal) {
  if (reveal == 'all') {
    // rubricsSellingConditionsFx.dissolve();
    rubricsEcologicalChoiceFx.dissolve();
    rubricsConsigliIlluminazioneFx.dissolve();
    rubricsLinksFriendsFx.dissolve();
    return false;
  }
  if (reveal != rubricsSellingConditionsFx) {
    rubricsSellingConditionsFx.dissolve();
  }
  if (reveal != rubricsEcologicalChoiceFx) {
    rubricsEcologicalChoiceFx.dissolve();
  }
  if (reveal != rubricsConsigliIlluminazioneFx) {
    rubricsConsigliIlluminazioneFx.dissolve();
  }
  if (reveal != rubricsLinksFriendsFx) {
    rubricsLinksFriendsFx.dissolve();
  }
  reveal.reveal();
  //showScrollbar('force');
  showScrollbar(CURRENT_OPENAREA);
}

function setCurrentOpenArea(el, scroll_h) {
  if (el) {
    CURRENT_OPENAREA = el.getParent();
    if (CURRENT_OPENAREA.getProperty("id") == "area-2")
      restoreProductsPage();
  } else {
    CURRENT_OPENAREA = $('area-1');
  }
  if (scroll_h == undefined) {
    scroll_h = SCROLLBAR_BASE_H;
  }
  showScrollbar(undefined, scroll_h);
  return false;
}

function showScrollbar(cElem, h) {
  var body = false;
  var scrollbar = CURRENT_OPENAREA.getElement('div.scrollbar');
  if (!scrollbar) return false;
  if (Browser.Engine.webkit | Browser.Engine.presto) {
    cElem = 'force';
  }
  if (h == undefined) {
    h = SCROLLBAR_BASE_H;
  }
  scrollbar.setStyle('height', h);
  if (!scrollbar)
    return false;
  if (cElem == 'hide') {
    scrollbar.hide();
    return false;
  }
  if (cElem == 'force') {
    scrollbar.show();
    return false;
  }
  if (scrollbar.hasClass('force')) {
    scrollbar.show();
    return false;
  }
  if (cElem) {
    body = $(cElem);
  } else {
    body = scrollbar.getPrevious();
  }
  var size = body.getScrollSize().y - body.getSize().y;
  if (scrollbar && size > 255)
    scrollbar.show();
  else
    scrollbar.hide();
  return false;
}

function load_product_description_image(el, replacer) {
  var parent = $(el).getParent();
  var image = parent.getNext('dd.images').getFirst('img');
  if (image)
    image.setProperty('src', el.getProperty('src').replace('thumb', replacer));
  return false;
}

function product_remote_load(category, group, name, block) {
  var myRequest = new Request({
    url : '/products/' + category + '/' + group + '/' + name,
    method : 'GET',
    onProgress : function(event, xhr) {
      var loaded = event.loaded, total = event.total;
      console.log(parseInt(loaded / total * 100, 10));
    },
    onSuccess : function(responseText, responseXML) {
      $(block).set('html', responseText);
    }
  });
  myRequest.send();
}

function press_remote_load(category, block) {
  var myRequest = new Request({
    url : '/press/' + category,
    method : 'GET',
    onProgress : function(event, xhr) {
      var loaded = event.loaded, total = event.total;
      console.log(parseInt(loaded / total * 100, 10));
    },
    onSuccess : function(responseText, responseXML) {
      $(block).set('html', responseText);
    }
  });
  myRequest.send();
}

/** **************************************************************************** */
window.addEvent("domready", function() {

  prepareProductsPage();
  prepareRubricsPage();

  initAccordion(25, 4);

  initProductsToggles();
  initRubricsToggles();

  restoreProductsPage();

  productsAdjustBlock('all');
  rubricsAdjustBlock('all');

  showScrollbar();
});

