var DT = {
xmlHttp: true,
getXmlHttpObject:function() {
DT.xmlHttp=null;
try {
// Firefox, Opera 8.0+, Safari
DT.xmlHttp=new XMLHttpRequest();
} catch (e) {
//Internet Explorer
try {
DT.xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (ex) {
DT.xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return DT.xmlHttp;
},
ajax:function(url,reload){
DT.xmlHttp=DT.getXmlHttpObject();
if (DT.xmlHttp===null) {
alert ("Browser does not support HTTP Request");
return;
}
url+="&sid="+Math.random();
DT.xmlHttp.onreadystatechange=DT.stateChanged;
DT.xmlHttp.open("GET",url,true);
DT.xmlHttp.send(null);
if(reload){
// DT.Page.startPageReload(DT.Page.globalLocation,'');
}
},
stateChanged:function() {
if ((DT.xmlHttp.readyState==4 || DT.xmlHttp.readyState=="complete") && DT.xmlHttp.responseText != "") {
DT.Notify.just(DT.xmlHttp.responseText,2500);
}
},
statechanged_inputNotify:function(){
if((DT.xmlHttp.readyState==4 || DT.xmlHttp.readyState=="complete") && DT.xmlHttp.responseText != "") {
DT.Notify.input(DT.xmlHttp.responseText);
}
}
};
/******************************************************************************/
DT.Notify = {
hide:function() {
var myEffect = new Fx.Morph('notifications', {duration: '700', transition: Fx.Transitions.Linear});
myEffect.start({
//Fade out and move up.
'opacity': '0.0',
'top': window.getScrollTop() + 200
});
},
just:function(msg, time) {
document.getElementById("notifications").innerHTML=msg; /*Set Text for Div*/
if(time < 2500){
time = 2500;
}
//Mootools 1.2.1
var myEffect = new Fx.Morph('notifications', {duration: '700', transition: Fx.Transitions.Linear}).set({
'height': 'auto',
'width': '520px',
'left': (window.getWidth() / 2 - 260),
'top': window.getScrollTop() + 260
});
myEffect.start({
//Fade in.
'opacity': '0.8'
});
setTimeout("DT.Notify.hide()",time);
},
input:function(msg) {
document.getElementById("notifications").innerHTML=msg; /*Set Text for Div*/
//Mootools 1.2.1
var myEffect = new Fx.Morph('notifications', {duration: '700', transition: Fx.Transitions.Linear}).set({
'height': 'auto',
'width': '520px',
'left': (window.getWidth() / 2 - 260),
'top': window.getScrollTop() + 260
});
myEffect.start({
//Fade in.
'opacity': '0.95'
});
}
};
/******************************************************************************/
DT.Content = {
slidePanel: function(buttonel,pageNo){
var button = $(buttonel);
var nav = button.getParent().getParent();
var container = nav.getParent().getElement('.container');
var slider = container.getElement('.slider');
nav.getElements('a').each(function(item){
item.removeClass('selected');
});
button.addClass('selected');
var pageWidth = container.getStyle('width').replace('px','');
var newPos = -1 *((pageNo-1) * pageWidth);
// mooTools 1.1
//slider.setStyle('left',newPos);
// mooTools 1.2
var myEffect = new Fx.Morph(slider, {duration: 'short', transition: Fx.Transitions.Sine.easeOut});
myEffect.start({
'left': newPos
});
},
getMusicVideos:function(artist,numberofvideos){
clearList('ul1');
insertVideos('ul1','search',artist,numberofvideos,'0');
},
loadNewsBar:function(artist) {
var newsBar;
var options = {
largeResultSet : true,
horizontal : false,
linkTarget : GSearch.LINK_TARGET_BLANK,
autoExecuteList : {
executeList : [artist]
}
};
newsBar = new GSnewsBar(document.getElementById("newsBar-bar"), options);
}
};
/******************************************************************************/
DT.Friend = {
add:function(str) {
var url="../profile/add-friend.php";
url+="?id="+str;
DT.ajax(url);
},
confirm:function(str) {
var url="../profile/confirm-friend.php";
url+="?id="+str;
DT.ajax(url);
},
addMulti:function(str) {
var url="../profile/add-multi-friends.php";
url+="?id="+str;
DT.ajax(url);
},
remove:function(str) {
var url="../profile/remove-friend.php";
url+="?id="+str;
DT.ajax(url,true);
}
};
/******************************************************************************/
DT.Favourites = {
add:function(id,media) {
/*Catch Unloaded Player*/
if(id == '0') {
DT.Notify.just("Play a track first then you may show it some Love!",2500);
return;
}
var url="../profile/add-fav.php";
url+="?id="+id;
url+="&media="+media;
DT.ajax(url,true);
},
remove:function(id) {
var url="../profile/remove-fav.php";
url+="?id="+id;
DT.ajax(url,true);
},
ban:function(id,media) {
/*Catch Unloaded Player*/
if(id == '0') {
DT.Notify.just("Play a track first, then you may ban it.",2500);
return;
}
var url="../profile/add-ban.php";
url+="?id="+id;
url+="&media="+media;
DT.ajax(url);
}
};
/******************************************************************************/
DT.Share = {
music:function() {
/*if($('my_playlists')!=null){ Check if user is signed in */
if(DT.Player.getShareData() !== 0) {
DT.xmlHttp=DT.getXmlHttpObject();
/* Check Ajax */
if (DT.xmlHttp===null) {
alert ("Browser does not support HTTP Request");
return;
}
var url="../profile/share-music-form.php";
url+="?"+DT.Player.getShareData();
url+="&sid="+Math.random();
//DT.xmlHttp.onreadystatechange = statechanged_inputNotify
//DT.xmlHttp.open("GET",url,true)
//DT.xmlHttp.send(null)
/*initialise multibox*/
var box = {};
window.addEvent('domready', function(){
box = new MultiBox('mb', {descClassName: 'multiBoxDesc', useOverlay: true});
});
/*invoke action to open multibox*/
box.open($('mbsharemusic'));
} else {
DT.Notify.just("Play a track first, then you can share it",2500);
}
/*
} else {
DT.Notify.just('To share music sign in or create an account.',8000);
}*/
},
sender:function(sender,recipient,message) {
var url="../profile/share-music.php";
url+="?"+DT.Player.getShareData();
url+="&sender="+sender;
url+="&recipient="+recipient;
url+="&message="+message;
DT.ajax(url);
},
nowPlaying:function(i) {
var nowPlaying = [];
nowPlaying = DT.Player.getNowPlayingData();
nowPlaying = nowPlaying[i];
return nowPlaying;
//var tmp = document.getElementById("itmsDat");
//tmp.innerHTML = title;
},
twitter:function() {
/*initialise multibox*/
var box = {};
window.addEvent('domready', function(){
box = new MultiBox('mb', {descClassName: 'multiBoxDesc', useOverlay: true});
});
/*invoke action to open multibox*/
box.open($('mbtwitter'));
},
launchInvite:function() {
/*initialise multibox*/
var box = {};
window.addEvent('domready', function(){
box = new MultiBox('mb', {descClassName: 'multiBoxDesc', useOverlay: true});
});
/*invoke action to open multibox*/
box.open($('mblaunchinvite'));
}
};
/******************************************************************************/
DT.Feedback = {
/*OBSOLETE?*/
form:function () {
/*initialise multibox*/
var box = {};
window.addEvent('domready', function(){
box = new MultiBox('mb', {descClassName: 'multiBoxDesc', useOverlay: true});
});
/*invoke action to open multibox*/
box.open($('mbfeedbackform'));
},
formSender: function(sender,subject,message) {
var url="../profile/feedback-form-sender.php";
url+="?sender="+sender;
url+="&subject="+subject;
url+="&message="+message;
DT.ajax(url);
}
};
/******************************************************************************/
DT.Facebook = {
connect:function () {
/*initialise multibox*/
var box = {};
window.addEvent('domready', function(){
box = new MultiBox('mb', {descClassName: 'multiBoxDesc', useOverlay: true});
});
/*invoke action to open multibox*/
box.open($('mbfbconnect'));
},
};
/******************************************************************************/
DT.VideoOverlay = {
video:function(vid) {
/*initialise multibox*/
var box = {};
window.addEvent('domready', function(){
box = new MultiBox('mb', {descClassName: 'multiBoxDesc', useOverlay: true});
});
/*invoke action to open multibox*/
$('mblaunchvideo').href = "../music/launch-video.php?ID="+vid;
box.open($('mblaunchvideo'));
}
};
/******************************************************************************/
DT.Gift = {
form:function () {
/*initialise multibox*/
var box = {};
window.addEvent('domready', function(){
box = new MultiBox('mb', {descClassName: 'multiBoxDesc', useOverlay: true});
});
/*invoke action to open multibox*/
box.open($('mbgift'));
},
formSender: function(code) {
var url="../store/gift-form-sender.php";
url+="?code="+code;
var req = new Request.HTML({
method: 'get',
url:url,
onComplete: function(response) {
if (response.item(0).data == 'true') {
window.location = "https://spreedly.com/desitouchtest/";
} else {
DT.Notify.just('Code is invalid, please try again',2500);
}
}
}).send();
},
upgrade:function () {
DT.Notify.just('We are upgrading, please try this later...',2500);
},
browser:function () {
DT.Notify.just('Upgrade your browser to IE8, Chrome, Firefox or Safari. We detect you have an old browser that does not support our music technology.',5000);
}
};
/******************************************************************************/
DT.Basket = {
/*Add Item to Basket*/
add:function(id,media) {
var url="../profile/add-basket.php";
url+="?id="+id;
url+="&media="+media;
DT.ajax(url);
},
/*Remove Item From Basket*/
remove:function(id) {
var url="../profile/remove-basket.php";
url+="?id="+id;
DT.ajax(url);
},
empty:function(id) {
var url="../profile/empty-basket.php";
url+="?id="+id;
DT.ajax(url);
}
};
/******************************************************************************/
DT.Playcount = {
/*Update Meta data - ft is set to Y only if its a Full Track*/
get:function(id,media,ft) {
var url="../profile/playcount.php";
url+="?id="+id;
url+="&media="+media;
url+="&ft="+ft;
DT.ajax(url);
}
};
/******************************************************************************/
DT.Alert = {
subscription:function() {
parent.document.getElementById("notifications").innerHTML='Get our Pass - play any tune, anytime, anywhere!';
parent.document.getElementById("notifications").className='show';
setTimeout("hide('notifications')",7000);
}
};
DT.Buy = {
paypal:function() {
DT.Notify.just('Pay securely with Paypal...loading please wait ',3000);
window.location = "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4943773";
}
};
DT.Download = {
app:function() {
DT.Notify.just('Now Downloading.. runs beautifully on PC & Mac. Adobe AIR is required.',5000);
window.location = "http://wpc.008D.edgecastcdn.net/00008D/Desitouch_1_03.air";
}
};
/******************************************************************************/
DT.Playlist = {
add:function(name,desc,tags) {
var url="../profile/add-playlist.php";
url+="?name="+name;
url+="&desc="+desc;
url+="&tags="+tags;
if(tags=='DTReturnID'){
url+="&sid="+Math.random();
var req = new Request.HTML({
method: 'get',
url:url,
onComplete: function(response) {
DT.sidePanel.playlistCreated(response.item(0).data);
}
}).send();
} else {
DT.ajax(url,true);
}
},
addAlbum:function(albumId, tags) {
var url="../profile/add-playlist-album.php";
url+="?aid="+albumId;
url+="&tags="+tags;
if(tags=='DTReturnID'){
url+="&sid="+Math.random();
var req = new Request.HTML({
method: 'get',
url:url,
onComplete: function(response) {
DT.sidePanel.playlistFromAlbumCreated(response.item(0).data);
}
}).send();
} else {
DT.ajax(url,true);
}
},
remove:function(id) {
var url="../profile/remove-playlist.php";
url+="?id="+id;
DT.ajax(url,true);
},
update:function(id,name,desc,priv,tags) {
var url="../profile/update-playlist-properties.php";
url+="?id="+id;
if(name!=''){
url+="&name="+name;
}
if(desc!=''){
url+="&desc="+desc;
}
url+="&priv="+priv;
url+="&tags="+tags;
DT.ajax(url,true);
},
active:function(id) {
var url="../profile/update-active-playlist.php";
url+="?id="+id;
DT.ajax(url);
DT.Page.startPageReload(DT.Page.globalLocation,'cnr=body');
},
addFav:function(id) {
var url="../profile/add-fav-playlist.php";
url+="?id="+id;
DT.ajax(url,true);
},
removeFav:function(id) {
var url="../profile/remove-fav-playlist.php";
url+="?id="+id;
DT.ajax(url,true);
},
updateFavStatus:function(id,status) {
var url="../profile/update-fav-playlist-status.php";
url+="?id="+id;
url+="&status="+status;
DT.ajax(url,true);
},
addTrack:function(playlistid,trackid) {
//if($('my_playlists')!==null){
var url="../profile/add-playlist-track.php";
url+="?pid="+playlistid;
url+="&tid="+trackid;
DT.xmlHttp.onreadystatechange=DT.stateChanged;
DT.ajax(url,true);
//} else {
// DT.Notify.just('To use playlists sign in or create an account.',8000);
//}
},
loadFile:function(theFile) {
//if($('my_playlists')!=null){
DT.Player.currentItem = -1;
DT.Player.previousItem = -1;
DT.Player.player.sendEvent('ITEM', 0);
DT.Player.player.sendEvent('LOAD', theFile);
/*}else{
DT.Notify.just('To play music you need to be registered & signed in.',15000);
}*/
},
/*Modified to force reset playlist item*/
/*
function addPlaylistTrack_Sync(playlistid,trackid) {
DT.xmlHttp=GetXmlHttpObject();
if (DT.xmlHttp==null) {
alert ("Browser does not support HTTP Request");
return;
}
var url="../profile/add-playlist-track.php";
url+="?pid="+playlistid;
url+="&tid="+trackid;
url+="&sid="+Math.random();
DT.xmlHttp.open("GET",url,false);
DT.xmlHttp.send(null);
DT.Notify.just(DT.xmlHttp.responseText,2500);
}
*/
removeTrack:function(id) {
var url="../profile/remove-playlist-track.php";
url+="?id="+id;
DT.ajax(url,true);
},
/*
function removePlaylistTrack_Sync(id) {
DT.xmlHttp=GetXmlHttpObject()
if (DT.xmlHttp==null) {
alert ("Browser does not support HTTP Request");
return;
}
var url="../profile/remove-playlist-track.php";
url+="?id="+id;
url+="&sid="+Math.random();
DT.xmlHttp.open("GET",url,false);
DT.xmlHttp.send(null);
DT.Notify.just(DT.xmlHttp.responseText,2500);
}
*/
updateTrackPosition:function(id,pos) {
var url="../profile/update-track-position.php";
url+="?id="+id;
url+="&pos="+pos;
DT.ajax(url,true);
},
share:function(username, pid) {
var url="../profile/share-playlist.php";
url+="?username="+username;
url+="&pid="+pid;
DT.ajax(url,true);
},
editDescriptions:function() {
//find the editable areas
$$('.editable').each(function(el) {
//add double-click and blur events
el.addEvent('dblclick',function() {
//store "before" message
var before = el.innerHTML;
before = before.trim();
//var matchTag = /<(?:.|\s)*?>/g;
//before.replace(matchTag, "");
//erase current
el.innerHTML = "";
//replace current text/content with input or textarea element
var input = new Element('input', {'class':'box', 'value':before});
//blur input when they press "Enter"
//input.addEvent('keydown', function(e) { if(true) { } });
input.inject(el).select();
//add blur event to input
input.addEvent('blur', function() {
//get value, place it in original element
//Edit Description
var val2 = input.value.trim();
var val = input.value.trim();
if(el.hasClass('desc')){
el.innerHTML = val2;
DT.Playlist.update(el.id,val,val2,'public','');
} else { //Edit Title
el.innerHTML = val;
DT.Playlist.update(el.id,val,val2,'public','');
}
});
});
});
}
};
DT.sidePanel = {
// fired when user clicks on the "+ Add new playlist" text
createPlaylistInput: function() {
$('addNewPlaylist').removeEvents('click');
var el = $('newPlaylistName');
el.set('html','');
var input = new Element('input', {'value':''});
input.addEvent('keydown', function(e) {
if(e.key == 'enter') {
this.fireEvent('blur');
}
});
input.inject(el);//.select();
input.addEvent('blur', function() {
val = input.get('value').trim();
if (val !== '') {
el.set('text','Please wait, creating playlist');
//create playlist
creatingPlaylistName = val;
$('addNewPlaylist').removeEvents('click');
DT.Playlist.add(val, 'New playlist', 'DTReturnID');
} else {
el.set('text','+ Add playlist');
}
$('addNewPlaylist').addEvent('click', DT.sidePanel.createPlaylistInput);
});
},
// called after AJAX request finishes. The one which was creating the new playlist
playlistCreated: function(playlistId) {
this.injectPlaylist(playlistId, creatingPlaylistName);
$('addNewPlaylist').addEvent('click', DT.sidePanel.createPlaylistInput);
},
// called after AJAX request finishes. The one which was creating the playlist from the album
playlistFromAlbumCreated: function(response) {
var object = JSON.decode(response);
if (object.id === 0) {
DT.Notify.just('There was a problem creating new playlist');
} else {
this.injectPlaylist(object.playlistId, object.playlistName);
}
},
// private method which inserts new playlist DOM and all initialization invloved
injectPlaylist: function(playlistId, playlistName) {
var el = new Element('li', {"class": "playlist", id: playlistId+"_playlistId", html: playlistName});
el.grab(new Element('a', {'class': "delete_side_playlist", style:"display: none;", href:'javascript:void();'}));
$$('.available_playlists').grab(el);
$('newPlaylistName').set('html','+ Add playlist');
this.initTracks();
this.initPlaylists();
},
// fired when user clicks on delete button
removePlaylist: function(playlistId) {
$(playlistId + '_playlistId').dispose();
DT.Playlist.remove(playlistId);
return false;
},
// needs to be called when a page which contains some tracks is loaded
initTracks: function() {
// console.log('initTracks');
$$('li.draggable_track').each(function(drag) {
var myDrag = new Drag.Move(drag);
myDrag.detach();
var tr = new Drag.Move(drag, {
//stopPropagation: true,
//prevenDefault: true,
onStart: function(drag) {
$('body_wrapper').setStyles({'overflow': 'visible'});
drag.setStyle('z-index',3).fade(0.5);
},
onComplete: function(drag) {
$(drag).setStyles({'left': 0, 'top':0});
$('body_wrapper').setStyles({'overflow': 'hidden'});
drag.setStyle('z-index',0).fade(1);
},
droppables: $$('.playlist'),
onDrop: function(el, droppable) {
if(droppable) {
$(droppable).removeClass('playlistOver');
var $playlistId = $(droppable).getAttribute('id').toInt(10);
var $trackId = $(drag).getAttribute('id').toInt(10);
DT.Playlist.addTrack($playlistId, $trackId);
}
},
onEnter: function(el, droppable) {
$(droppable).addClass('playlistOver');
},
onLeave: function(el, droppable) {
$(droppable).removeClass('playlistOver');
}
});
}.bind(this));
},
// needs to be called when a page which contains some albums is loaded
initAlbums: function() {
//console.log('initAlbums');
$$('.album_image').each(function(drag) {
var myDrag = new Drag.Move(drag);
myDrag.detach();
var al =new Drag.Move(drag, {
//stopPropagation: true,
//prevenDefault: true,
options: {position: 'relative'},
onStart: function(drag) {
$('body_wrapper').setStyles({'overflow': 'visible'});
drag.setStyle('z-index',2).fade(0.5);
},
onComplete: function(drag) {
$(drag).setStyles({'left': 0, 'top':0});
$('body_wrapper').setStyles({'overflow': 'hidden'});
drag.setStyle('z-index',0).fade(1);
},
droppables: $('addNewPlaylist'),
onDrop: function(el, droppable) {
if(droppable) {
$(droppable).removeClass('playlistOver');
var $albumId = $(drag).getAttribute('id').toInt(10);
DT.Playlist.addAlbum($albumId, 'DTReturnID');
}
},
onEnter: function(el, droppable) {
$(droppable).addClass('playlistOver');
},
onLeave: function(el, droppable) {
$(droppable).removeClass('playlistOver');
}
});
}.bind(this));
},
// called when sidebar playlist is loaded
initPlaylists: function() {
//console.log('initPlaylists');
$$('.playlist').each(function(playlist) {
playlist.removeEvents('dblclick');
playlist.addEvent('dblclick',function(event) {
$clear(timer);
var $playlistId = $(playlist).getAttribute('id').toInt(10);
DT.Playlist.loadFile('../music/plist-pl.php?ID='+$playlistId);DT.Playcount.get($playlistId,'playlist','');
return false;
});
playlist.removeEvents('click');
playlist.addEvent('click',function() {
$clear(timer);
timer = (function() {
var $playlistId = $(playlist).getAttribute('id').toInt(10);
var href = '/album/profile/plist-detail.php?plt='+$playlistId;
DT.Page.startPageReload(href,'');
return false;
}).delay(200, this);
return false;
});
playlist.removeEvents('mouseover');
playlist.addEvent('mouseover',function(e) {
$(playlist).getChildren('a').show();
e.stop();
});
playlist.removeEvents('mouseout');
playlist.addEvent('mouseout',function(e) {
$(playlist).getChildren('a').hide();
e.stop();
});
var deleteLink = $(playlist).getChildren('a');
deleteLink.removeEvents('click');
deleteLink.addEvent('click',function(e) {
DT.sidePanel.removePlaylist($(playlist).getAttribute('id').toInt(10));
e.stop();
});
}.bind(this));
}
};