/**
 * @author Vincent POUILLEY
 */

iConcerts.UI.UserPlaylistUtils = {
	CreateNew: function(event) {
//		alert('coucou CreateNew');
		if(event)
			Event.stop(event);
		if ($('up_loading'))
			$('up_loading').show();
		o_options = new Object();
		o_options = {method: 'get', onComplete: doLoadMenuUserPlaylist};
		if ($('TrackUpPage')) {
			o_options['onSuccess'] = iConcerts.userPlaylistPage.RefreshPage.bind(iConcerts.userPlaylistPage);
		}
		var laRequete = new Ajax.Request('index2.php?q=upcreate',o_options);
	},
	
	DropOnTrash: function(elem) {
//		alert('coucou DropOnTrash');
		if ($('up_loading'))
			$('up_loading').show();
		o_options = new Object();
		if (elem.id.substr(0,3) == 'tra') {
			var nid = elem.id.substr(5);
			var elemplid = nid.substr(0, nid.indexOf('_'));
			o_options = {method: 'get', onSuccess: loadUserPlaylist(elemplid)};
			if ($('TrackUpPage')) {
				var CurUpTitle = $('TrackUpPage').select('.curUserPlaylistTitle').first();
				var curplid = CurUpTitle.id.substr(2);
				if (curplid == elemplid) {
					o_options = {method: 'get', onComplete: iConcerts.userPlaylistPage.RefreshPageAndPlaylist.bind(iConcerts.userPlaylistPage)};
				}
			}
			var laRequete = new Ajax.Request('index2.php?q=updeletetrack/' + nid, o_options);
		}
		else if (elem.id.substr(0,2) == 'mu') {
			o_options = {method: 'get', onComplete: iConcerts.userPlaylistPage.RefreshPageAndPlaylist.bind(iConcerts.userPlaylistPage)};
			var nid = elem.id.substr(2);
			var laRequete = new Ajax.Request('index2.php?q=updelete/' + nid, o_options);
		}
/*		else {
			if ($('uppWrapper')) {
				o_options = {method: 'get', onSuccess: this.RefreshPage.bind(this), onComplete: doLoadMenu};
			}
			else {
				o_options = {method: 'get', onSuccess: this.Refresh.bind(this), onComplete: doLoadMenu};
			}
			var nid = elem.id.substr(2);
			var laRequete = new Ajax.Request('index2.php?q=updelete/' + nid, o_options);
		}*/
	}
}

iConcerts.UI.UserPlaylist = Class.create();
iConcerts.UI.UserPlaylist.prototype = {
	initialize: function(element){
		this.element = $(element);
		if (!this.element)
			return;
		this.init();
	},
	
	init: function() {
//		alert('coucou init');
		this.UserPlaylistID = this.element.id.substr(9);
		var ThePlaylistWrapper = this.element;
		ThePlaylistWrapper.firstChild.select('.UserPlaylistTrack').each(function(elem) {
			if (elem.hasClassName('UserDropTrack')) {
				Droppables.add(elem.id, {
					accept: $w('UserPlaylistTrack UnitTrack'),
					hoverclass: 'dropHoverTrack',
					onDrop: this.DropOnTrack.bind(this)
				});
			}
			else {
				elem.addClassName('draggable');
				new Draggable(elem.id, { ghosting : false, revert : 'failure', parplid : this.UserPlaylistID, onStart : function(d) { isDragging = true; $('upWrapper' + d.options.parplid).setStyle({overflow: 'visible'}); iConcerts.UI.CurentDrag = d; }, onEnd : function(d) { $('upWrapper' + d.options.parplid).setStyle({overflow: 'hidden'}); } } );
				Droppables.add(elem.id, {
					accept: $w('UserPlaylistTrack UnitTrack'),
					hoverclass: 'dropHoverTrack',
					onDrop: this.DropOnTrack.bind(this)
				});
			}
		}.bind(this));
//		var CurUpTitle = $('myConcerts').select('.curUserPlaylistTitle').first();
		var CurUpTitle = $('up' + this.UserPlaylistID);
		CurUpTitle.addClassName('draggable');
//		new Draggable(CurUpTitle.id, { ghosting : false, revert : 'failure', onStart : function(d) { iConcerts.UI.CurentDrag = d; }} );
		Droppables.add(CurUpTitle.id, {
			accept: $w('UserPlaylistTrack UnitTrack'),
			hoverclass: 'dropHover',
			onDrop: this.DropOnPlaylist.bind(this)
		});
/*		var nid = CurUpTitle.id.substr(2);
		new Ajax.InPlaceEditor(CurUpTitle.id, 'index2.php?q=uprename/' + nid, {
			okControl: 'button',
			cancelControl: 'button',
			highlightcolor: '#00649c',
			highlightendcolor: '#000000',
			onComplete: doLoadMenu
		});*/
/*		Droppables.add($('uplaylist_trash'), {
			accept: $w('UserPlaylistTrack UserPlaylistTitle curUserPlaylistTitle'),
			hoverclass: 'dropHover',
			onDrop: this.DropOnTrash.bind(this)
		});*/
		if ($('up_loading'))
			$('up_loading').hide();
	},
	
	Refresh: function(data) {
//		alert('coucou Refresh, data=(' + data.responseText + ')');
		var ThePlaylistWrapper = $('upWrapper' + this.UserPlaylistID);
		ThePlaylistWrapper.select('.UserPlaylistTrack').each(function(elem) {
			Droppables.remove(elem.id);
		});
/*		Droppables.remove($('myConcerts').select('.curUserPlaylistTitle').first().id);
//		Droppables.remove($('uplaylist_trash').id);
		nid = $('myConcerts').select('.curUserPlaylistTitle').first().id.substr(2);
		o_options = new Object();
//		o_options = {method: 'get',evalScripts:true, onComplete: this.init.bind(this)};
		o_options = {method: 'get',evalScripts:true, onComplete: userplaylistLoaded};
		var laRequete = new Ajax.Updater($('playlists'),'index2.php?q=getUserPlaylist/' + nid, o_options);*/
		loadUserPlaylist(this.UserPlaylistID);
	},
	
	RefreshPage: function(data) {
//		alert('coucou RefreshPage, data=(' + data.responseText + ')');
		var desturl = window.location.href;
		desturl = desturl.substr(desturl.indexOf('?q='));
		o_options = new Object();
		o_options = {method: 'get',evalScripts:true, onSuccess: this.Refresh.bind(this), onComplete: contentLoaded};
		var laRequete = new Ajax.Updater($('contentArea'),'index2.php/' + desturl, o_options);
	},
	
	DropOnTrack: function(drag, drop, event) {
//		alert('coucou DropOnTrack');
		if(event)
			Event.stop(event);
		if ($('up_loading'))
			$('up_loading').show();
		var chid = drop.id.substr(5);
		o_options = new Object();
		if (drag.id.substr(0,3) == 'tra') {
			var pldrag = drag.id.substr(5, drag.id.indexOf('_') - 5);
			var pldrop = drop.id.substr(5, drop.id.indexOf('_') - 5);
			if (pldrag == pldrop) {
				var neid = drag.id.substr(5);
				o_options = {method: 'get', onSuccess: this.Refresh.bind(this)};
				if ($('TrackUpPage')) {
					var CurUpTitle = $('TrackUpPage').select('.curUserPlaylistTitle').first();
					var curplid = CurUpTitle.id.substr(2);
					if (curplid == pldrag) {
						o_options = {method: 'get', onSuccess: this.RefreshPage.bind(this)};
					}
				}
				iConcerts.UI.CurentDrag.options.revert = 'failure';
				var laRequete = new Ajax.Request('index2.php?q=upmovechild/' + neid + '/' + chid, o_options);
			}
			else {
				iConcerts.UI.CurentDrag.options.revert = true;
				var p1 = drag.id.indexOf('_')
				var neid = drag.id.substr(p1 + 1, drag.id.lastIndexOf('_') - p1 - 1);
				o_options = {method: 'get', onSuccess: this.Refresh.bind(this)};
				var laRequete = new Ajax.Request('index2.php?q=upaddchildtrack/' + chid + '/' + neid, o_options);
			}
		}
		else {
			iConcerts.UI.CurentDrag.options.revert = true;
			var neid = drag.id.substr(6);
			o_options = {method: 'get', onSuccess: this.Refresh.bind(this)};
			var laRequete = new Ajax.Request('index2.php?q=upaddchildtrack/' + chid + '/' + neid, o_options);
		}
	},
	
	DropOnPlaylist: function(drag, drop) {
//		alert('coucou DropOnPlaylist');
		if ($('up_loading'))
			$('up_loading').show();
		var parid = drop.id.substr(2);
		o_options = new Object();
		if (drag.id.substr(0,3) == 'tra') {
			var pldrag = drag.id.substr(5, drag.id.indexOf('_') - 5);
			if (pldrag == parid) {
				var neid = drag.id.substr(5);
				o_options = {method: 'get', onSuccess: this.Refresh.bind(this)};
				if ($('TrackUpPage')) {
					var CurUpTitle = $('TrackUpPage').select('.curUserPlaylistTitle').first();
					var curplid = CurUpTitle.id.substr(2);
					if (curplid == pldrag) {
						o_options = {method: 'get', onSuccess: this.RefreshPage.bind(this)};
					}
				}
				iConcerts.UI.CurentDrag.options.revert = 'failure';
				var laRequete = new Ajax.Request('index2.php?q=upmovechild/' + neid + '/' + parid + '_0_0_0', o_options);
			}
			else {
				iConcerts.UI.CurentDrag.options.revert = true;
				var p1 = drag.id.indexOf('_')
				var neid = drag.id.substr(p1 + 1, drag.id.lastIndexOf('_') - p1 - 1);
				o_options = {method: 'get', onSuccess: this.Refresh.bind(this)};
				var laRequete = new Ajax.Request('index2.php?q=upaddchildplaylist/' + parid + '/' + neid, o_options);
			}
		}
		else {
			iConcerts.UI.CurentDrag.options.revert = true;
			var neid = drag.id.substr(6);
			o_options = {method: 'get', onSuccess: this.Refresh.bind(this)};
			var laRequete = new Ajax.Request('index2.php?q=upaddchildplaylist/' + parid + '/' + neid, o_options);
		}
	}
};

iConcerts.UI.UnitTrack = Class.create();
iConcerts.UI.UnitTrack.prototype = {
	initialize: function(element, drop){
		if (!$$(drop))
			return;
		this.element = $(element);
		if(!this.element)
			return;
		this.element.select('.UnitTrack').each(function(elem,i){
			elem.addClassName('draggable');
			new Draggable(elem.id, { ghosting : false, revert : 'failure', onStart : function(d) { iConcerts.UI.CurentDrag = d; } } );
		}.bind(this));
	}
}

iConcerts.UI.UserPlaylistPage = Class.create();
iConcerts.UI.UserPlaylistPage.prototype = {
	initialize: function(element){
		this.element = $(element);
		if (!this.element)
			return;
//		$('uplaylistpage_new').onclick = this.CreateNew.bindAsEventListener(this);
		this.init();
	},
	
	init: function() {
		var CurUpTitle = $('TrackUpPage').select('.curUserPlaylistTitle').first();
		if (CurUpTitle.hasClassName('InitDone')) {
			return;
		}
//		alert('coucou init');
		var nid = CurUpTitle.id.substr(2);
		var ThePlaylistWrapper = $('uppWrapper');
		$('uppContainer').setStyle({height: (Math.floor(ThePlaylistWrapper.select('.UserPlaylistTrack').size() / 4) + 1) * 84 + 'px'});
		this.scrollbar = new iConcerts.UI.ScrollBar(ThePlaylistWrapper, { direction: 'vertical', width: 476, height: 517 });
		ThePlaylistWrapper.firstChild.select('.UserPlaylistTrack').each(function(elem) {
			if (elem.hasClassName('UserDropTrack')) {
				Droppables.add(elem, {
					accept: $w('UserPlaylistTrack UnitTrack'),
					hoverclass: 'dropHoverTrack',
					onDrop: this.DropOnTrack.bind(this)
				});
			}
			else if (elem.hasClassName('NoDropOnThis')) {
				elem.addClassName('draggable');
				new Draggable(elem, { ghosting : false, revert : 'failure', onStart : function(d) { isDragging = true; $('uppWrapper').setStyle({overflow: 'visible'}); iConcerts.UI.CurentDrag = d; }, onEnd : function() { $('uppWrapper').setStyle({overflow: 'hidden'}); } } );
			}
			else {
				elem.addClassName('draggable');
				new Draggable(elem, { ghosting : false, revert : 'failure', onStart : function(d) { isDragging = true; $('uppWrapper').setStyle({overflow: 'visible'}); iConcerts.UI.CurentDrag = d; }, onEnd : function() { $('uppWrapper').setStyle({overflow: 'hidden'}); } } );
				Droppables.add(elem, {
					accept: $w('UserPlaylistTrack UnitTrack'),
					hoverclass: 'dropHoverTrack',
					onDrop: this.DropOnTrack.bind(this)
				});
			}
		}.bind(this));
		if (nid != -1) {
			CurUpTitle.addClassName('draggable');
			new Draggable(CurUpTitle, { ghosting : false, revert : 'failure', onStart : function(d) { iConcerts.UI.CurentDrag = d; } } );
			Droppables.add(CurUpTitle, {
				accept: $w('UserPlaylistTrack UnitTrack'),
				hoverclass: 'dropHover',
				onDrop: this.DropOnPlaylist.bind(this)
			});
			new Ajax.InPlaceEditor(CurUpTitle.id, 'index2.php?q=uprename/' + nid, {
				okControl: 'button',
				cancelControl: 'button',
				highlightcolor: '#00649c',
				highlightendcolor: '#000000',
				onComplete: this.RefreshPageAndPlaylist.bind(this)
			});
		}
		CurUpTitle.addClassName('InitDone');
		this.scrollMenu = new iConcerts.UI.ScrollBar($('uppMenuContainer'), { direction: 'vertical', width: 186, height: 317 });
		$('uppMenuContainer').select('.UserPlaylistTitle').each(function(elem) {
			if (!elem.hasClassName('NoDragThis')) {
				elem.addClassName('draggable');
				new Draggable(elem.id, { ghosting : false, revert : 'failure', onStart : function(d) { $('uppMenuContainer').setStyle({overflow: 'visible'}); iConcerts.UI.CurentDrag = d; }, onEnd : function() { $('uppMenuContainer').setStyle({overflow: 'hidden'}); } } );
				Droppables.add(elem.id, {
					accept: $w('UserPlaylistTrack UnitTrack'),
					hoverclass: 'dropHover',
					onDrop: this.DropOnPlaylist.bind(this)
				});
			}
		}.bind(this));
/*		Droppables.add($('uplaylistpage_trash'), {
			accept: $w('UserPlaylistTrack UserPlaylistTitle curUserPlaylistTitle'),
			hoverclass: 'dropHover',
			onDrop: this.DropOnTrash.bind(this)
		});*/
		if ($('up_loading'))
			$('up_loading').hide();
	},
	
	RefreshPage: function(data) {
//		alert('coucou RefreshPage, data=(' + data.responseText + ')');
		var ThePlaylistWrapper = $('uppWrapper');
		ThePlaylistWrapper.select('.UserPlaylistTrack').each(function(elem) {
			Droppables.remove(elem.id);
		});
		Droppables.remove($('TrackUpPage').select('.curUserPlaylistTitle').first().id);
		$('MenuUPPage').select('.UserPlaylistTitle').each(function(elem) {
			Droppables.remove(elem.id);
		});
		Droppables.remove($('uplaylistpage_trash'));
		var nid = $('TrackUpPage').select('.curUserPlaylistTitle').first().id.substr(2);
		o_options = new Object();
//		o_options = {method: 'get',evalScripts:true, onComplete: this.init.bind(this)};
		o_options = {method: 'get',evalScripts:true, onComplete: contentLoaded};
		var laRequete = new Ajax.Updater($('contentArea'),'index2.php?q=EditUserPlaylist/' + nid, o_options);
	},
	
	RefreshPlaylist: function(data) {
//		alert('coucou RefreshPlaylist, data=(' + data.responseText + ')');
		if ($('up_loading'))
			$('up_loading').show();
		plId = iConcerts.UI.droppable[iConcerts.playlists.options.showTab-1].UserPlaylistID;
		loadUserPlaylist(plId);
/*		var ThePlaylistWrapper = $('upWrapper');
		ThePlaylistWrapper.select('.UserPlaylistTrack').each(function(elem) {
			Droppables.remove(elem.id);
		});
		Droppables.remove($('myConcerts').select('.curUserPlaylistTitle').first().id);
//		Droppables.remove($('uplaylist_trash').id);
		nid = $('myConcerts').select('.curUserPlaylistTitle').first().id.substr(2);
		o_options = new Object();
		o_options = {method: 'get',evalScripts:true, onComplete: userplaylistLoaded};
		var laRequete = new Ajax.Updater($('playlists'),'index2.php?q=getUserPlaylist/' + nid, o_options);*/
	},
	
	RefreshPageAndPlaylist: function(data) {
		var nid = $('TrackUpPage').select('.curUserPlaylistTitle').first().id.substr(2);
//		alert('coucou Refresh, data=(' + data.responseText + ') nid=' + nid);
		var ThePlaylistWrapper = $('uppWrapper');
		ThePlaylistWrapper.select('.UserPlaylistTrack').each(function(elem) {
			Droppables.remove(elem.id);
		});
		Droppables.remove($('TrackUpPage').select('.curUserPlaylistTitle').first().id);
		$('MenuUPPage').select('.UserPlaylistTitle').each(function(elem) {
			Droppables.remove(elem.id);
		});
		o_options = new Object();
		o_options = {method: 'get',evalScripts:true, onSuccess: this.RefreshPlaylist.bind(this), onComplete: contentLoaded};
		var laRequete = new Ajax.Updater($('contentArea'),'index2.php?q=EditUserPlaylist/' + nid, o_options);
	},
	
	DropOnTrack: function(drag, drop, event) {
//		alert('coucou DropOnTrack');
		if(event)
			Event.stop(event);
		if ($('up_loading'))
			$('up_loading').show();
		var chid = drop.id.substr(5);
		o_options = new Object();
		if (drag.id.substr(0,3) == 'tra') {
			var pldrag = drag.id.substr(5, drag.id.indexOf('_') - 5);
			var pldrop = drop.id.substr(5, drop.id.indexOf('_') - 5);
			if (pldrag == pldrop) {
				var neid = drag.id.substr(5);
				o_options = {method: 'get', onSuccess: this.RefreshPageAndPlaylist.bind(this)};
				var laRequete = new Ajax.Request('index2.php?q=upmovechild/' + neid + '/' + chid, o_options);
			}
			else {
				var p1 = drag.id.indexOf('_')
				var neid = drag.id.substr(p1 + 1, drag.id.lastIndexOf('_') - p1 - 1);
				o_options = {method: 'get', onSuccess: this.RefreshPageAndPlaylist.bind(this)};
				var laRequete = new Ajax.Request('index2.php?q=upaddchildtrack/' + chid + '/' + neid, o_options);
			}
		}
		else {
			var neid = drag.id.substr(6);
			o_options = {method: 'get', onSuccess: this.RefreshPageAndPlaylist.bind(this)};
			var laRequete = new Ajax.Request('index2.php?q=upaddchildtrack/' + chid + '/' + neid, o_options);
		}
	},
	
	DropOnPlaylist: function(drag, drop) {
//		alert('coucou DropOnPlaylist');
		if ($('up_loading'))
			$('up_loading').show();
		var parid = drop.id.substr(2);
		o_options = new Object();
		if (drag.id.substr(0,3) == 'tra') {
			var pldrag = drag.id.substr(5, drag.id.indexOf('_') - 5);
			if (pldrag == parid) {
				var neid = drag.id.substr(5);
				o_options = {method: 'get', onSuccess: this.RefreshPageAndPlaylist.bind(this)};
				var laRequete = new Ajax.Request('index2.php?q=upmovechild/' + neid + '/' + parid + '_0_0_0', o_options);
			}
			else {
				var p1 = drag.id.indexOf('_')
				var neid = drag.id.substr(p1 + 1, drag.id.lastIndexOf('_') - p1 - 1);
				o_options = {method: 'get', onSuccess: this.RefreshPageAndPlaylist.bind(this)};
				var laRequete = new Ajax.Request('index2.php?q=upaddchildplaylist/' + parid + '/' + neid, o_options);
			}
		}
		else {
			var neid = drag.id.substr(6);
			o_options = {method: 'get', onSuccess: this.RefreshPageAndPlaylist.bind(this)};
			var laRequete = new Ajax.Request('index2.php?q=upaddchildplaylist/' + parid + '/' + neid, o_options);
		}
	}
/*	
	DropOnTrash: function(drag, drop) {
//		alert('coucou DropOnTrash');
		if ($('up_loading'))
			$('up_loading').show();
		o_options = new Object();
		if (drag.id.substr(0,3) == 'tra') {
			o_options = {method: 'get', onSuccess: this.RefreshPage.bind(this)};
			var nid = drag.id.substr(5);
			if ($('upWrapper')) {
				var CurUpTitle = $('myConcerts').select('.curUserPlaylistTitle').first();
				var curplid = CurUpTitle.id.substr(2);
				var dragplid = nid.substr(0, nid.indexOf('_'));
				if (curplid == dragplid) {
					o_options = {method: 'get', onSuccess: this.RefreshPageAndPlaylist.bind(this)};
				}
			}
			var laRequete = new Ajax.Request('index2.php?q=updeletetrack/' + nid, o_options);
		}
		else if (drag.id.substr(0,2) == 'mu') {
			o_options = {method: 'get', onSuccess: this.RefreshPage.bind(this), onComplete: doLoadMenu};
			var nid = drag.id.substr(4);
			if ($('upWrapper')) {
				var CurUpTitle = $('myConcerts').select('.curUserPlaylistTitle').first();
				var curplid = CurUpTitle.id.substr(2);
				if (curplid == nid) {
					o_options = {method: 'get', onSuccess: this.RefreshPageAndPlaylist.bind(this)};
				}
			}
			var laRequete = new Ajax.Request('index2.php?q=updelete/' + nid, o_options);
		}
		else {
			o_options = {method: 'get', onSuccess: this.RefreshPage.bind(this), onComplete: doLoadMenu};
			var nid = drag.id.substr(2);
			if ($('upWrapper')) {
				var CurUpTitle = $('myConcerts').select('.curUserPlaylistTitle').first();
				var curplid = CurUpTitle.id.substr(2);
				if (curplid == nid) {
					o_options = {method: 'get', onSuccess: this.RefreshPageAndPlaylist.bind(this)};
				}
			}
			var laRequete = new Ajax.Request('index2.php?q=updelete/' + nid, o_options);
		}
	}*/
};

