function getXMLHttpRequest() {
	var xhr = null;
	
	if (window.XMLHttpRequest || window.ActiveXObject) {
		if (window.ActiveXObject) {
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else {
			xhr = new XMLHttpRequest(); 
		}
	} else {
		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
		return null;
	}
	
	return xhr;
}

function savePreferences() {
	var xhr = getXMLHttpRequest();
	
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			alert(xhr.responseText);
			window.location='programme-tv.html';
		}
	};
	
	var variablesInGet = "";
	var firstValue = true;
	$("#channelSelectedList li").each(function() {
		if (firstValue == false)
		{
			variablesInGet += "&channels[]=";
		}
		else
		{
			variablesInGet += "channels[]=";
		}
		variablesInGet += encodeURIComponent($(this).attr('value'));
		firstValue = false;
	});
	$("#favoritesSelected li").each(function() {
		if (firstValue == false)
		{
			variablesInGet += "&";
		}
		if ($(this).attr('value') <= 0)
		{
			variablesInGet += "actors[]=";
		}
		else
		{
			variablesInGet += "types[]=" + encodeURIComponent($(this).attr('value'));
			variablesInGet += "&programs[]=";
		}
		variablesInGet += encodeURIComponent($(this).text());
		firstValue = false;
	});
	xhr.open("GET", "view/Customize/SaveFavorites.php?" + variablesInGet, true);
	xhr.send(null);
}

$(document).ready(function(){

	function showLoad()
	{
		$("#loaderContainer").show();
		$("#favorites li span").addClass('blur');
		$("#favorites li").draggable("option", "disabled", true);
	}
	
	function hideLoad()
	{
		$("#loaderContainer").hide();
		$("#favorites li span").removeClass('blur');
		$("#favorites li").draggable("option", "disabled", false);
	}	
	
	function reloadFavorites() {
		if ($("#favoriteProgramsAndActors .ui-selected") != null && $("#characterFilter .ui-selected") != null)
	    {
	    	var type = $("#favoriteProgramsAndActors .ui-selected").text();
	        var character = $("#characterFilter .ui-selected").text();
	        showLoad();
	        $("#favorites").load("view/Customize/Favorites.php?type="+type+"&character="+character, function() {
	        	hideLoad();
	        	$("#favorites li").draggable({
	        		connectToSortable: '#favoritesSelected',
	        		revert: 'invalid',
	        		containment : 'document',
	        		helper: 'clone',
	        		cursor: 'move',
	        		handle: '#dragHandler'
	    			});
	        });
	    }
	}
	
	$("#channelList li").draggable({
		connectToSortable: '#channelSelectedList',
		revert: 'invalid',
		containment : 'document',
		helper: 'clone',
		cursor: 'move',
		handle: '#dragHandler'
		});
	
	$("#channelList").disableSelection();
	
	$("#channelSelectedList").sortable({
		handle: '#dragHandler',
		cancel: '#deleteHandler',
		cursor: 'move',
		placeholder: 'ui-state-highlight',
		helper : 'clone',
		forcePlaceholderSize : true,
		receive: function(event, ui) {
			//Delete doublons
			var arrayChannelSelected = new Array();
			var z = 0;
			$("#channelSelectedList li").each(function() {
				var value = $("#channelSelectedList li:eq("+z+") #dragHandler").text();
				if ( $.inArray(value,arrayChannelSelected) == -1)
				{
					//not found
				}
				else
				{
					$("#channelSelectedList li:eq("+z+")").fadeOut("slow",function(){
						$(this).remove();
					});
				}
				arrayChannelSelected[z] = value ;
				z = z + 1;
			});
		}
	});
	
	$('#channelSelectedList li span#deleteHandler').live('click', function(){
		$(this).parent().remove();
	});
	
	var prevSelectedType = null;
	var prevSelectedCharacter = null;
	$("#favoriteProgramsAndActors").selectable({
        filter: 'li',
        selected: function(event,ui){
			if (prevSelectedType != null && prevSelectedType != ui.selected) {
				$(prevSelectedType).removeClass("ui-selected");
			}
			prevSelectedType = ui.selected;
			reloadFavorites();
        }
    });
	
	$("#characterFilter").selectable({
		filter: 'li',
		selected: function(event,ui){
            if (prevSelectedCharacter != null && prevSelectedCharacter != ui.selected) {
            	$(prevSelectedCharacter).removeClass("ui-selected");
            }
            prevSelectedCharacter = ui.selected;
            reloadFavorites();
		}
	});
	
	
	$("#favoritesSelected").sortable({
		cancel: 'li',
		placeholder: 'ui-state-highlight',
		helper : 'clone',
		forcePlaceholderSize : true,
		receive: function(event, ui) {
			//Delete doublons and limit size to size
			var size = 15;
			var arrayFavoritesSelected = new Array();
			var z = 0;
			$("#favoritesSelected li").each(function() {
				var value = $("#favoritesSelected li:eq("+z+") #dragHandler").text();
				if (z >= size)
				{
					$("#favoritesSelected li:eq("+z+")").fadeOut("slow",function(){
						$(this).remove();
					});
				}
				else
				{
					if ( $.inArray(value,arrayFavoritesSelected) == -1)
					{
						//not found
					}
					else
					{
						$("#favoritesSelected li:eq("+z+")").fadeOut("slow",function(){
							$(this).remove();
						});
					}
					arrayFavoritesSelected[z] = value ;	
				}
				z = z + 1;
			});
		}
	});
	
	
	$('#favoritesSelected li span#deleteHandler').live('click', function(){
		$(this).parent().remove();
	});
	
	reloadFavorites();
});
