1 URL.internetradioFavorites = "/internetradio/web/getfavoriteslist";
2 URL.internetradioAddFavorite = "/internetradio/web/addfavorite";
3 URL.internetradioRemoveFavorite = "/internetradio/web/removefavorite";
4 URL.internetradioRenameFavorite = "/internetradio/web/renamefavorite";
5 URL.internetradioStatus= "/internetradio/web/status";
6 URL.internetradioPlay = "/internetradio/web/play?";
7 URL.internetradioStop = "/internetradio/web/stopplaying";
9 URL.tpl = "/internetradio/tpl/"
11 var InternetRadioFavorite = Class.create({
12 initialize: function(xml){
13 this.name = getNodeContent(xml, 'e2favoritename', "");
14 this.text = getNodeContent(xml, 'e2favoritetext', "");
15 this.type = getNodeContent(xml, 'e2favoritetype', "");
16 this.tags = getNodeContent(xml, 'e2favoritetags', "").split(' ');
17 this.country = getNodeContent(xml, 'e2favoritecountry');
18 this.homepage = getNodeContent(xml, 'e2favoritehomepage', "");
25 'country' : this.country,
26 'homepage' : this.homepage
36 var InternetRadioFavoriteList = Class.create({
37 initialize: function(xml){
38 this.list = this.parse(xml);
42 var items = xml.getElementsByTagName("e2internetradio_favorite_item");
44 var len = items.length;
45 for(var i = 0; i < len; i++){
46 var fav = new InternetRadioFavorite(items[i]).toJSON();
59 * Handles a list of movies including deleting actions
61 var InternetRadioFavoritesProvider = Class.create(AbstractContentProvider, {
64 * See the description in AbstractContentProvider
66 initialize: function($super, showFnc){
67 $super(URL.internetradioFavorites, showFnc);
72 * See the description in AbstractContentProvider
74 renderXML: function(xml){
75 var list = new InternetRadioFavoriteList(xml).getArray();
76 return {favorites : list};
80 var InternetRadioFavoritesHandler = Class.create(AbstractContentHandler, {
81 initialize: function($super, target, statusTarget, stopTarget){
82 $super('tplFavorites', target);
83 this.provider = new InternetRadioFavoritesProvider(this.show.bind(this));
86 this.statusTarget = statusTarget;
87 this.stopTarget = stopTarget;
89 getData: function(element){
91 name: unescape(element.readAttribute('data-name')),
92 text: unescape(element.readAttribute('data-text')),
93 type: unescape(element.readAttribute('data-type')),
94 tags: unescape(element.readAttribute('data-tags')),
95 country: unescape(element.readAttribute('data-country')),
96 homepage: unescape(element.readAttribute('data-homepage'))
102 var values = form.serialize(true);
103 this.provider.refresh = true;
104 this.provider.simpleResultQuery(
105 URL.internetradioAddFavorite,
109 favoritetype : values.favoritetype,
111 country : values.country,
112 homepage : values.homepage
114 this.simpleResultCallback.bind(this)
118 rename: function(form){
119 var values = form.serialize(true);
121 this.provider.refresh = false
122 if(values.newname != null && values.newname != "" && values.newname != values.name){
123 this.provider.refresh = true;
124 this.provider.simpleResultQuery(
125 URL.internetradioRenameFavorite,
129 favoritetype : values.favoritetype,
130 newname : values.newname
132 this.simpleResultCallback.bind(this)
137 remove: function(element){
138 favorite = this.getData(element);
140 var result = confirm( "Are you sure want to remove the internet Radiostation\n\n" +
141 favorite.name + "\n\n" +
142 " from your favorites?");
144 this.provider.refresh = result;
146 this.provider.simpleResultQuery(
147 URL.internetradioRemoveFavorite,
149 name : favorite.name,
151 favoritetype :favorite.type
153 this.simpleResultCallback.bind(this)
158 play: function(element) {
159 favorite = this.getData(element);
160 this.provider.simpleResultQuery(
161 URL.internetradioPlay,
163 name : favorite.name,
166 this.simpleResultCallback.bind(this)
170 quickPlay: function(form){
171 var values = form.serialize(true);
172 this.provider.simpleResultQuery(
173 URL.internetradioPlay,
178 this.simpleResultCallback.bind(this)
183 this.provider.simpleResultQuery(
184 URL.internetradioStop,
186 this.simpleResultCallback.bind(this)
190 getStatus: function(){
191 this.provider.simpleResultQuery(
192 URL.internetradioStatus,
194 this.onStatusReady.bind(this)
198 onStatusReady: function(transport){
199 var result = this.provider.simpleResultRenderXML(this.provider.getXML(transport));
200 $(this.statusTarget).update(result.getStateText());
201 var stop = $(this.stopTarget);
202 if(result.getState()){
203 $(this.stopTarget).show();
205 $(this.stopTarget).hide();
211 var Controller = Class.create({
212 initialize: function(handler){
213 this.handler = handler;
214 this.handler.onFinished.push(this.registerEvents.bind(this));
215 this.handler.onFinished.push(this.onFinished.bind(this));
216 this.eventsregistered = false;
219 registerEvents: function(){
220 this.eventsregistered = true;
223 onFinished: function(){}
226 var InternetRadio = Class.create(Controller, {
227 initialize: function($super, target, statusTarget, stopTarget){
228 $super(new InternetRadioFavoritesHandler(target, statusTarget, stopTarget));
235 play: function(element){
236 this.handler.play(element);
239 quickPlay: function(form){
240 this.handler.quickPlay(form);
243 stop: function(element){
244 this.handler.stop(element);
248 this.handler.add(form);
251 remove: function(element){
252 this.handler.remove(element);
255 rename: function(element){
256 this.handler.rename(element);
259 getStatus: function(){
260 this.handler.getStatus();
264 var Radio = Class.create({
265 initialize: function(){
266 this.internetRadio = new InternetRadio('contentMain', 'currentText', 'stop');
271 this.internetRadio.load();
272 this.registerListeners();
276 pollStatus: function(){
277 if(this.poller == null){
279 this.poller = setInterval(_this.pollStatus.bind(this), 5000);
281 this.internetRadio.getStatus();
284 registerListeners: function(){
285 var content = $('contentMain');
289 function(event,element){
291 this.internetRadio.play(element);
297 function(event, element){
299 var edit = element.up('.listItem').down('.editEntry');
309 function(event, element){
311 var button = element.next();
322 function(event, element){
324 var entry = element.up('.listItem').down('.irListEntry');
325 this.internetRadio.remove(entry);
332 function(event, element){
334 var id = element.readAttribute("data-form-id");
336 this.internetRadio.rename(form);
342 function(event, element){
345 this.internetRadio.quickPlay(form);
351 function(event, element){
354 this.internetRadio.add(form);
359 function(event, element){
361 this.internetRadio.stop();
366 function(event, element){
373 $('contentMain').scrollTop = 0;
379 var radio = new Radio();