/**
 * @fileOverview This file contains the Models pertaining to the Radio 
 * @author Jacob Fierro
 */


/*=========================================
	TRACK
==========================================*/

VV.Radio.Models.Track = Backbone.Model.extend({
 	initialize : function() {
 		// log('*track model: ', this.get('trackId'));
 	}
 });



/*=========================================
	RADIO
==========================================*/

 VV.Radio.Models.Radio = Backbone.Model.extend({
 	defaults : {
 		trackListVisible : false,
 		isPlaying : false,
 		trackId : null,
 		trackTitle : "",
 		trackPerformer : "",
 		nativeMp3 : false
 	},

 	/*
 	* Set the initial state from the first model in the collection.
 	* Other views are listening for radio model changes to update the UI.
 	*/
 	initialize : function() {
 		var track = this.get('collection').at(0);
 		this.set({
 			trackTitle : track.get('title'),
 			trackPerformer : track.get('performer'),
 			trackId : track.get('trackId')
 		});

 		// test to see if this browser can handle mp3's, being used to force IE's hand at times. 
 		if (Modernizr.audio.mp3 === "maybe" || Modernizr.audio.mp3 === "probably" ) {
 			// log('*doesMp3: ', Modernizr.audio.mp3);
 			this.set({ nativeMp3 : true });
 		}
 	},


 	/**
 	* Set the trackId, title and performer of a new track. triggers change event
 	*/
 	setNewTrack : function(trackId) {
 		var model = this.get('collection').detect(function(track) {
 			return track.get('trackId') === Number(trackId);
 		});

 		log('Radio: Model: setNewTrack: ', model.get('title'));

 		this.set({
 			trackTitle : model.get('title'),
 			trackPerformer : model.get('performer'),
 			trackId : model.get('trackId')
 		});
 	},

 	/**
 	* Used to force IE to register a title change after it throws an error on creating a new audio element
 	*/
 	forceChangeTitleTrigger : function() {
 		this.trigger('change:trackTitle');
 		log('FORCE change trigger : ', this.get('trackTitle'));
 	}
 });
