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)); } };