	jQuery(document).ready(function($) {
		try {
		
		
			var columns = $(".homeCol");
			// Redimensionnement des colonnes suivant le nbr de colonne
			columns.each(function(index) {
				$(this).css('width', 100/columns.size()+'%');
				$(this).css('min-width', 100/columns.size()+'%');
				$(this).css('min-height', '200px');
			});
			// Répartition des blocs dans les colonnes
			if (columns.size()>1) {
				var colnum=0;
				var pos =0;
				$(".contentBloc").each(function(index) {
					pos++;
					var col = $(this).attr('data-bov3-col');
					if (col!=null && col.length>0 && col<columns.size()) {
						colnum=col;
					}  else colnum=0;
					$(this).detach().appendTo( columns.get(colnum++) );
					if (colnum%columns.size()==0) colnum=0;
				});
			}
	
			var success_ajaxInitBlocs = function(data) {
				var err = false;
				if (data==null) return true;
				boError.clear();
				$.each(data.errors, function(key, val) {
					var $this = this;
					if ($this!=null && $this!='') {
						if (err==false) {
							err=true;
							var msg = boi18n.getMessage("/bov3/wcm", "general_there_are_errors", $this);
							boError.setTitle(msg)							
						} else {
							var msg = boi18n.getMessage("/bov3/wcm", "dataindex_detail_error", $this);
							boError.addDetail( msg );
						}
					}
				});
				if (err) {
					boError.show();
					return false;
				}
				return true;
			}
	
			// Gestion des actions sur les blocs.
			$(".homeCol .contentBloc .blocPadd").each(function(index){
				var blocDivContent = $(this).siblings().first();
				var blocPadd = $(this);
	
				blocPadd.mouseenter(function() {
					$(this).closest(".contentBloc").addClass("moving");
				});
				blocPadd.mouseleave(function() {
					$(this).closest(".contentBloc").removeClass("moving");
				});
				
				blocPadd.bind('refreshUI', function() {
					var blocDivContent = $(this).siblings().first();
					//alert('refreshUI');
					var total = blocDivContent.find(".bloc_hideable").size();
					var nbr_hidden = blocDivContent.find(".bloc_hideable:hidden").size();
					var nbr_visible = blocDivContent.find(".bloc_hideable:visible").size();
					
					nbr_visible = blocDivContent.find(".bloc_hideable:visible").size();
					if (nbr_visible>=nbr_hidden) $(this).find("a.bloc_add").prop('disabled', true);
					else $(this).find("a.bloc_add").prop('disabled', false);
	
					nbr_visible = blocDivContent.find(".bloc_hideable:visible").size();
					if (nbr_visible<=2) $(this).find("a.bloc_remove").prop('disabled', true);
					else $(this).find("a.bloc_remove").prop('disabled', false);
					
					if (blocDivContent.is(":hidden")) {
						/* Si le bloc est fermé alors cachons les boutons */
						$(this).find("a.bloc_add").hide();
						$(this).find("a.bloc_remove").hide();
						$(this).removeClass("opened");
					} else {
						/* Si le bloc est ouvert alors affichons les boutons */
						$(this).addClass("opened");
						$(this).find("a.bloc_add").show();
						$(this).find("a.bloc_remove").show();
					}
					
					/* Si il n'existe pas de ligne bloc_hideable alors cachons les boutons */
					if (total==0) {
						$(this).find("a.bloc_remove").hide();
						$(this).find("a.bloc_add").hide();
					}
					
				});
				
				$(this).find("a.bloc_open").click(function(index){
					if (blocDivContent.is(":visible")) blocDivContent.hide();
					else blocDivContent.show();
					blocPadd.trigger('refreshUI');
					$.ajax({url: boState.getContextPath()+'/bov3/dataindex/actions/ajaxInitBlocs.jspz', cache:false,type:'post',data:{redirect: 'json',action:'update',code:blocDivContent.parent().attr('id'), opened:blocDivContent.is(":visible")},dataType: 'json',success: success_ajaxInitBlocs});
					return false;
				})
				$(this).find("a.bloc_add").click(function(index){
					var total = blocDivContent.find(".bloc_hideable").size();
					var nbr_hidden = blocDivContent.find(".bloc_hideable:hidden").size();
					var nbr_visible = blocDivContent.find(".bloc_hideable:visible").size();
					if (nbr_hidden>0) {
						// afficher plus
						blocDivContent.find(".bloc_hideable:hidden").first().show();
						$.ajax({url:boState.getContextPath()+'/bov3/dataindex/actions/ajaxInitBlocs.jspz', cache:false,type:'post',data:{redirect: 'json',action:'update',code:blocDivContent.parent().attr('id'), opened:blocDivContent.is(":visible"), nbr:nbr_visible+1},dataType: 'json',success: success_ajaxInitBlocs});
					}
					blocPadd.trigger('refreshUI');
					return false;
				})
				$(this).find("a.bloc_remove").click(function(index){
					var total = blocDivContent.find(".bloc_hideable").size();
					var nbr_hidden = blocDivContent.find(".bloc_hideable:hidden").size();
					var nbr_visible = blocDivContent.find(".bloc_hideable:visible").size();
					if (nbr_visible>2) {
						// afficher plus
						blocDivContent.find(".bloc_hideable:visible").last().hide();
						$.ajax({url:boState.getContextPath()+'/bov3/dataindex/actions/ajaxInitBlocs.jspz', cache:false,type:'post',data:{redirect: 'json',action:'update',code:blocDivContent.parent().attr('id'), opened:blocDivContent.is(":visible"), nbr:nbr_visible-1},dataType: 'json',success: success_ajaxInitBlocs});
					}
					blocPadd.trigger('refreshUI');
					return false;
				})
	
				blocPadd.ready(function() {
					blocPadd.trigger('refreshUI');
				});
				
				//var $bloc= blocPadd.closest(".contentBloc");
				
				boBlocs.reload( boBlocs.getBlocCode( blocPadd ) );
				/*
				$.ajax({
					url: boState.getContextPath()+"/bov3/dataindex/content/ajaxGetBlocContent.jspz",
					async: false,
					context: {
						bloc: $bloc
					},
					data: {
						code: $bloc.attr('id')
					},
					dataType: 'html',
					success: function(data) {
						this.bloc.find("div.blocDivContent").first().html( data );
						this.bloc.find("div.blocPadd").trigger('refreshUI');
					}
				});
				*/
	
			});
	
			$(".homeCol").sortable({
				items:'.contentBloc', 
				connectWith: ".homeCol",
				cursor: 'move',
				placeholder: 'contentBlocHighlight',
				forcePlaceholderSize: true,
				handle: '.blocPadd',
				update: function(event, ui) {
					var id = ui.item.attr('id');
					var column=0;
					$(".homeCol").each(function() {
						var pos=0;
						$(this).find(".contentBloc").each(function() {
							$(this).removeClass("moving");
							if (id==$(this).attr('id')) {
								$.ajax({
									cache: false,
									async:false,
									url: boState.getContextPath()+'/bov3/dataindex/actions/ajaxInitBlocs.jspz',
									data: {
										redirect: 'json',
										action: 'move',
										code: id,
										col: column,
										pos: pos
									},
									dataType: 'json',
									success: success_ajaxInitBlocs
								});
							}
							pos++;
						})
						column++;
					})
				}
			}); //.disableSelection();
		} catch (e) {
			boError.clear().setTitle("bug").addDetail(e).show();
		}		
	});

