/**
 *  Page preview settings
 */
function enableDisableSelect(checkbox) {
	var name = checkbox.attr('name');
	var attributeTypeId = name.substring("user_type_attribute_".length, name.length);
	var selectName = "user_attribute_" + attributeTypeId; 
	var select = $('select[name="' + selectName + '"]');
	if (checkbox.is(':checked')) {
		select.removeAttr('disabled');
	} else {
		select.attr('disabled','disabled');
	}
}

function setEvents() {
	$('#cancel_preview_settings').click(function() {
		$('#change_page_preview_settings').slideUp();
	  });
	
	$('input[name^="user_type_attribute_"]').each(function() {
		enableDisableSelect($(this));
	});
	
	$('input[name^="user_type_attribute_"]').click(function() {
		var name = $(this).attr('name');
		var attributeTypeId = name.substring("user_type_attribute_".length, name.length);
		var selectName = "user_attribute_" + attributeTypeId; 
		var select = $('select[name="' + selectName + '"]');
		if ($(this).is(':checked')) {
			select.removeAttr('disabled');
		} else {
			select.attr('disabled','disabled');
		}
	});
	
	$('#save_preview_settings').click(function() {
		var formName = 'preview_permissions';
	    var form = $('form[name=' + formName + ']');
	    var params = form.serializeArray();
	    
	    params.push({"name" : "formName", "value" : formName});
	    $.ajax({type: "POST",
	        url: "?action=preview_permission.change",
	        data: params, 
	        success: function(response) {
				window.location.reload();
	        }
	    })
	  });
}

/**
 *  FAQ
 */
// show selected faq
showFaq = function(faqId, faqQuestion) {
    if($(faqQuestion).hasClass("current_question")) {
        $(faqQuestion).removeClass("current_question");
        $('.faq_answer').hide();
        return false;
    }
    $(".faqQuestion").removeClass("current_question");
    $(faqQuestion).addClass("current_question");
    $('.faq_answer').hide();
    $('#faq_answer_'+faqId).show("fast");
    window.scrollTo(0,$('#faq_answer_'+faqId).offset().top);
}

// Toggle amagrams
function displayAmagrams (filter) {
	// change amagrams bar
	var $amagramsTabs = $("#amagrams .amagrams_bar_decor span");
  var $activeAmagramTab = $("#amagram_tab_" + filter);
	$amagramsTabs.removeClass("active_first_amagrams_tab").removeClass("active_amagrams_tab");
	var activeAmagramTabClass = $activeAmagramTab.prev().exists() ? "active_amagrams_tab" : "active_first_amagrams_tab";
  $activeAmagramTab.addClass(activeAmagramTabClass);
	
	// change amagrams layer
	var activeAmagramsListClass = "active_amagrams_list";
	var $activeAmagramsList = $("#amagrams_" + filter);
	$("." + activeAmagramsListClass).removeClass(activeAmagramsListClass);
	$activeAmagramsList.addClass(activeAmagramsListClass);
	
	// synchronize amagrams layers
	synchronizeAmagramsLayers($activeAmagramsList);
}

function synchronizeAmagramsLayers(amagram) {
  var $this = $(amagram);
  var $amagrams = $this.find(".amagram");
  var $parentSlotWidth = $this.parents(".slot").width();
  var widths = 0;
  
  for(var i = 0; i<$amagrams.size(); i++) {
  	widths += $amagrams.eq(i).outerWidth();
  	if(widths > $parentSlotWidth) {
  		$amagrams.eq(i).addClass("first_inline_amagram");
  		widths = 0;
  	}
  }
}

function synchronizeSlotLayers(elements, slot) {
	var $elements = elements;
	var $parentSlotWidth = $(slot).width();
	var __widths = 0;
	
	for(var i = 0; i<$elements.size(); i++) {
    __widths += $elements.eq(i).outerWidth();
    if(__widths > $parentSlotWidth) {
      $elements.eq(i).addClass("new_line");
      __widths = 0;
    }
  }
}

jQuery(document).ready(function($){
	/**
	 *  Page preview settings
	 */
	$('#change_preview_settings').click(function() {
		var preview_settings = $('#change_page_preview_settings');
		if (preview_settings.is(':hidden')) {
		    $.ajax({url: "?action=preview_permission.fillForm",
	        	success: function(response) {
					preview_settings.html(response);
					preview_settings.slideDown();
					setEvents();
	        	}
		    })
		} else {
			preview_settings.slideUp();
		}
	});
	setEvents();
	
	/**
	 *  List of teasers
	 */    
	$(".teasers_list_matrix, .teasers_list_sections").each(function() {
		var $this = $(this);
		var $parentSlot = $this.parents(".slot");
		var $teasers = $this.find(".component");
		var $teasersContents = $teasers.find(".teasers_content_wrapper");
		var $teaserWidth = $teasers.first().width();
		var $maxTeaserInline = parseInt($parentSlot.width() / $teaserWidth);
		var isLastLine = false;

		$teasers.each(function(i) {
		  var idx = i + 1;
		  // select first element in row
		
		  if(i % $maxTeaserInline == 0) {
		    $(this).addClass("first_component");
		
		    // select last row
		    if(idx + $maxTeaserInline > $teasers.size()) {
		      isLastLine = true;
		    }
		  }
		
		  if(isLastLine) {
		    $(this).addClass("last_line");
		  }
		
		  // select first row
		  if(i < $maxTeaserInline) {
		    $(this).addClass("first_line");
		  }

		  if(idx % $maxTeaserInline == 0) {
		    if(!isLastLine) {
		      $(this).after("<div class='clearFix'>&nbsp;</div>");
		      console.log('insert');
		    }
		  }
		});
		
	  function __synchronize() {
      // Synchronize teasers heights
      $teasers.synchronizeHeights();
      
      // Synchronize teasers contents heights
      $teasersContents.synchronizeHeights();
	  }

    function __synchronizeSet(set, afterImageLoaded) {
    	if(afterImageLoaded) {
    		$(set).imagesLoaded(function() {
          $(set).synchronizeHeights();
        });
    	} else {
    		$(set).synchronizeHeights();
    	}
    	
    }
	 
	 var $tlElements = $teasers.find(".teasers_list_element"); 
	 
	 var tab = [];
	 $tlElements.each(function(i,el) {
	 	i += 1;
	 	tab.push(el);
	 	if(i % $maxTeaserInline == 0 || i == $tlElements.size()) {
	 		__synchronizeSet(tab, true);
	 		tab = [];
	 	}
	 });
   
   var tab2 = [];
   $teasersContents.each(function(i,el) {
    i += 1;
    tab2.push(el);
    if(i % $maxTeaserInline == 0 || i == $teasersContents.size()) {
      __synchronizeSet(tab2, false);
      tab2 = [];
    }
   });
	 
	 
		$tlElements.imagesLoaded(function() {
			
			//console.log('fire');
		//	__synchronize();
		});
	});

	/**
	 *  Hero topics player
	 */    

	$('.hero_brand').imagesLoaded(function() { 
	  $(".hero_topic_large, .hero_topic_small").heroNav({
	    heroBoxSelector: 'div.hero_topic_large',
	    heroLinksSelector: 'div.hero_brand a',
	    navTilesSelector: 'div.hero_tiles ul li',
	    arrowSelector: 'div.hero_nav_state',
	    startingIndex: 0,
	    transitionSpeed: 1000,
	    transitionDelay: parseInt(globalEnv.heroTimePeriod) * 1000,
	    hoverIntent: 500
	  });
	})
	
	
  /**
   *  Amagrams
   */
  $("#amagrams .active_amagrams_list").each(function() { 
      synchronizeAmagramsLayers($(this));
   });
   
  /**
   *  Video list
   */
  $(".video_list").each(function() {
  	var $this = $(this);
  	synchronizeSlotLayers($this.find('.component'), $this.parents(".slot").first());
  	$this.find('.video_list_element').synchronizeHeights();
  });
  
  /**
   *  ckeditor module - expand element
   */
   
  $("tr.ee_toggle").click(function() {
	  var $this = $(this).parents(".expand_element_tab").eq(0);
	  var $thisContent = $this.find(".ee_content");
	  if($this.hasClass("element_fold")) {
	    $this.removeClass("element_fold");
	    $thisContent.show("slow");
	  } else {
	    $this.addClass("element_fold");
	    $thisContent.css("display","none");
	  }
	});
	
	/**
   *  Amagrams
   */
  $('.amagrams_list').imagesLoaded(function() {
    $(this).first().find('.amagram').synchronizeHeights();
  })
})
