/*
Modulo Audio

*/
Audio = Class.create();
Object.extend(Audio.prototype, {
	dataArray: null,
	dataXML: "",
	viewXML: "",
	viewDOM: "",			//Object HTMLElement template
	ObjImg: "",
	ObjTitle: "",
	ObjTexto: "",
	cActual: "",
	cnt: 0,
	work: false,
	timer: null,
	lcid: null,
	flashProxy: null,
	
	//Data es opcional ya que puede ser cargado directamente.
	initialize: function(view, data){
		this.dataArray = new Array();
		this.setviewXML(view);
		if (data)
			this.setDataXML(data);
		
		//LOAD Template
		var me = this;
		var rqD= new Requester("GET");
		me.work = true;
		rqD.request(this.getviewXML(), "", function(doc) {
			me.setTemplate($Rel(doc, "Audio"));
			
			if (data){
				var rq = new Requester("GET");				
				rq.request(me.getDataXML(), "", function(d) {
					var img = new Array();
					var coll = d.getElementsByTagName("imagen");

					for(var i=0; i<coll.length;i++){
						var src = $Value(coll[i].getElementsByTagName("src")[0]);
						var titulo = $Value(coll[i].getElementsByTagName("titulo")[0]);
						var texto = $Value(coll[i].getElementsByTagName("texto")[0]);

						me.addItem(src, titulo, texto);
					}
					
					me.setImages(img);
				});
			}
			me.work = false;
		});
	},
	
	write: function(id){
		if(!this.work){
			var O = this.getTemplate();
			var f = $Rel(O, "Flash");
				this.setObj(f);

			this.ObjTitle 	= $Rel(O, "Title");
			this.ObjTexto 	= $Rel(O, "Text");
			this.cActual 		= $Rel(O, "Actual");

			var cT = $Rel(O, "Total");
			var bt_l = $Rel(O, "left");
			var bt_r = $Rel(O, "right");
			
			//var d = new Date();
			this.lcid = "flA_"+Math.floor(Math.random()*11);

			var mp3ply = new FlashObject("../media/mp3PlayerConsola_medium.swf", this.lcid, "318", "30", "8", "");
				mp3ply.addParam("allowScriptAccess", "sameDomain");
				mp3ply.addParam("movie", "../media/mp3PlayerConsola_medium.swf");
				mp3ply.addParam("quality", "high");
				mp3ply.addParam("scale", "noscale");
				mp3ply.addVariable("lcId", this.lcid);
				// Poner el primer Audio.
				mp3ply.addVariable("miSonido", "./../_temp/audio/1.mp3"); //?
			mp3ply.write(f);

			var me= this;
			bt_l.onclick = function(){	me.prev();}
			bt_r.onclick = function(){	me.next();}
			cT.replaceChild(document.createTextNode(this.dataArray.length), cT.firstChild);

			setTimeout(function(){me.place();}, 1000);
			$(id).appendChild(O);

		}else{			var me = this; setTimeout(function() {me.write(id)}, 1000);		}
	},

	addItem: function(src, title,texto){		
		var item = new AudioItem(src, title , texto);
		this.dataArray.push(item);
	},

	place: function(){
		//this.Obj.src = this.dataArray[this.cnt].getSrc();
		var me = this;
		if(!this.flashProxy)
			this.flashProxy = new FlashProxy(this.lcid, "../media/JavaScriptFlashGateway.swf");	
		this.flashProxy.call("addItem",
		{
			snd: me.dataArray[me.cnt].getSrc()
		});
		
		
		//FlashProxy le pasa las cosas

		//Cambia el Titulo!

		if(this.ObjTitle.firstChild)	this.ObjTitle.replaceChild(document.createTextNode(this.dataArray[this.cnt].getTitulo()), this.ObjTitle.firstChild);
		else													this.ObjTitle.appendChild(document.createTextNode(this.dataArray[this.cnt].getTitulo()));

		if(this.ObjTexto.firstChild)	this.ObjTexto.replaceChild(document.createTextNode(this.dataArray[this.cnt].getTexto()), this.ObjTexto.firstChild);
		else													this.ObjTexto.appendChild(document.createTextNode(this.dataArray[this.cnt].getTexto()));

		this.upCounter();
	},

	upCounter: function(){
		this.cActual.replaceChild(document.createTextNode(this.cnt+1), this.cActual.firstChild);
	},

	next: function(){
		if(this.cnt < (this.dataArray.length - 1))
			this.cnt++;
		else
			this.cnt = 0;
		this.place();
	},

	prev: function(){
		if(this.cnt > 0)
			this.cnt--;
		else
			this.cnt = (this.dataArray.length - 1);
		this.place();
	},
	
	// SETTERS
	setDataXML: function(sf){
		this.dataXML =	XMLPATH + "/" + sf;
	},

	setviewXML: function(sf){
		this.viewXML =	XMLPATH + "/audio/" + sf;
	},
	
	setTemplate: function(xn){
		this.viewDOM = Element.importToDocument(xn, true);
	},
	
	setObj: function(o){
		this.Obj = o;
	},
	
	setText: function(s){
		this.ImageText = s;
	},

	// GETTERS

	getDataXML: function(){
		return this.dataXML;
	},

	getviewXML: function(){
		return this.viewXML;
	},

	getImages: function (){
		return this.dataArray;
	},

	getTemplate: function(){
		return this.viewDOM;
	},

	getText: function(){
		return this.Text;
	},
	
	getObj: function(){
		return this.Obj;
	}

});

AudioItem = Class.create();
Object.extend(AudioItem.prototype, {
	src: "",
	Titulo: "",
	Texto: "",
	
	initialize: function(src, titulo, texto){
		this.setSrc(src);
		this.setTitulo(titulo);
		this.setTexto(texto);
	},

//Setters
	
	setSrc: function(src){
		this.src = src;
	},

	setTitulo: function(Titulo){
		this.Titulo = Titulo;
	},

	setTexto: function(Texto){
		this.Texto = Texto;
	},
	
//Getters

	getSrc: function(){
		return this.src;
	},

	getTitulo: function(){
		return this.Titulo;
	},

	getTexto: function(){
		return this.Texto;
	}
})