var Modulos = new Class({
	Implements: [Events, Options],
	options: { 
		curve: 	        { tl: { radius: 5 }, tr: { radius: 5 },  bl: { radius: 5 }, br: { radius: 5 }, antiAlias: true },
		curvetop: 	{ tl: { radius: 5 }, tr: { radius: 5 },  bl: { radius: 0 }, br: { radius: 0 }, antiAlias: true },
		curvebot: 	{ tl: { radius: 0 }, tr: { radius: 0 },  bl: { radius: 5 }, br: { radius: 5 }, antiAlias: true },
		curveint: 	{ tl: { radius: 0 }, tr: { radius: 0 },  bl: { radius: 0 }, br: { radius: 0 }, antiAlias: true }
	},
	initialize: function() {  // capturo todos los elementos "modulo" y segun su tipo lanzo las ordenes.

	},


	getModulos : function(){		

		var d = $$('div.tipos','div.tipos_nopad','div.tipos_separador').each(function(item,index){
				this.switchModulo(item);	
		}.bind(this));

	

	},


	switchModulo: function (element){

		switch( (element.id)){
			case 'modulo_buscador_cabecera': 
			case 'modulo_buscador': this.modulo_buscador(element); break;
			case 'comentarios': this.comentarios(element); break;
			case 'chat_desarrollado': this.chat_desarrollado(element); break;
			case 'modulo_formatea_fecha': this.modulo_format_date(element); break;			
			case 'noticia_carrousel': this.noticia_carrousel(element); break;
			case 'noticia_desarrollada': this.noticia_desarrollada(element); break;
			case 'noticia_multimedia': this.noticia_multimedia(element); break;
			case 'encuesta': this.encuesta(element); break;
			case 'menu': this.menu(element); break;
			case 'modulo_videos_canales': this.modulo_videos_canales(element); break;
			case 'modulo_newsletter': this.modulo_newsletter(element); break;
			case 'modulo_baja_boletin': this.modulo_baja_boletin(element); break;
			case 'modulo_blogs_formulario': this.modulo_blogs_formulario(element); break;
			case 'blogs':this.modulo_seccion_tv(element); break;
			case 'modulo_galeria_desarrollo':this.modulo_seccion_tv(element); break;
			case 'modulo_seccion_tv': this.modulo_seccion_tv(element); break;
			case 'modulo_videos_desarrollo': this.modulo_seccion_desarrollo(element); break;
		};
	},
	nocache: function(){
		return Math.floor(Math.random()*99999);
	},
	ajaxmoduloform: function(modulo,form,data,onSuccess){
		data = $(form).toQueryString() + data;
		this.ajaxmodulo(modulo,data,onSuccess);
	},
	ajaxmodulo: function(modulo,data,onSuccess){
		var modulo    = (arguments.length > 0) ? modulo		: 0;
		var data      = (arguments.length > 1) ? data		: {};
		var onSuccess = (arguments.length > 2) ? onSuccess 	: $empty;

		// compatibilidad si data es string u Object.
		if (typeOf(data) == 'object') Object.append(data,{'ajax-modulo':modulo,'ajaxcontrol':'1','nocache': this.nocache()});
		else data = data + '&ajax-modulo='+ modulo +'&ajaxcontrol=1&nocache=' + this.nocache();

		var success = function(responseJSON, responseText){
			onSuccess(responseJSON, responseText);
		}
		new Request.JSON({	
				method:'post',
				url:'/index.php',
				data:data,
				evalScripts: 'true',
				evalResponse:true,
				onSuccess: success
			}
		).send();
		return false;
	},

	launchmodal:function(modulo,data,params,ckaction,onSuccess){
		var modulo    = (arguments.length > 0) ? modulo		: 0;   // definicion del controlador que va a responder
		var data      = (arguments.length > 1) ? data		: {};  // array de variables post
		var params    = (arguments.length > 2) ? params		: {};  // array de variables para el render-modal
		var ckaction  = (arguments.length > 3) ? ckaction 	: $empty;  // que hacemos cuando se haga click en el boton?
		var onSuccess = (arguments.length > 4) ? onSuccess 	: $empty;  // que hacemos cuando suceda?
		// compatibilidad si data es string u Object.
		if (typeOf(data) == 'object') Object.append(data,{'ajax-modulo':modulo,'ajaxcontrol':'1','json_encode':'false','nocache': this.nocache()});
		else data = data + '&ajax-modulo='+ modulo +'&ajaxcontrol=1&json_encode=false&nocache=' + this.nocache() ;
		this.options.MyModal = new SimpleModal(params);  // simple-modal
  		this.options.MyModal.addButton(params.button, "btn primary", ckaction);
 		this.options.MyModal.show({
		       "model":"modal-ajax",
		       "title":params.title,
		       "param":{ "url":"/index.php","data":data }
		});

	},

	comentarios:function(element){	
		var obj = this;


		var onsend = function(){   // cuando pulso enviar el form.. 
			 var form = new FormCheck('myform',{display : {errorsLocation : 3,indicateErrors : 2,flashTips : true,fadeDuration : 1000,scrollToFirst:false}});
			 if( form.isFormValid() ){ this.ajaxmoduloform('comentarios','myform','',onrequest.bind(this));}else{	form.onSubmit(); }
		};
		var onrequest = function(JSON){
			if(JSON.ID) this.options.MyModal.hide();
			var msg = new Element('div').set('html',JSON.MSG).inject(element,'top').tween('opacity','0','1'); 
			
			(function(){msg.tween('opacity',1,0);}).delay(4000);
			(function(){msg.destroy(); listado.start(element.getElement('.listado'));  }).delay(5000);
		};

		var enviar_respuesta_modal = function(send){  // abro un modal con el formulario de respuesta o de nuevo comentario.
			var parts = send.id.split('|');
			var data = {'method':'response_form','cod_pieza':parts[0],'tipo_pieza':parts[1],'commentID':parts[2]};
			var params = {"width":800,"title":send.title,"button":"Enviar Respuesta"};
			send.removeEvents('click');
			send.addEvent('click',function(){ this.launchmodal('comentarios',data,params, onsend.bind(this) ,$empty ); }.bind(this));
		};

		var listado = {
			cod_pieza:null, tipo_pieza:null, element:null,
			start: function(element){
				if(!element) return false;
				this.element = element;
				var parts = element.id.split('|');
				this.cod_pieza = parts[0]; this.tipo_pieza = parts[1];
				this.get_page(0);
			},
			get_page:function(n){
				var data = {'ajax-modulo':'comentarios','method':'get_responses','cod_pieza':this.cod_pieza,'tipo_pieza':this.tipo_pieza,'pieces':0,'page':n,'json_encode':false};
				new Request.HTML({method:'post',url:'/index.php',data:data,update:this.element,onSuccess: this.onPageLoad.bind(this)}).send();
			},
			onPageLoad:function(){
				this.element.getElements('.res').each(enviar_respuesta_modal.bind(obj));
			}

		};
		listado.start(element.getElement('.listado'));
		element.getElements('.res').each(enviar_respuesta_modal.bind(this));

	},

	chat_desarrollado: function(element) {
		date_options = {
			contenedor: element.getElement('.todate'),
			lang: "es-ES"
		}
		var ToDate = new FormDates(date_options);

		if(element.getElement('div#chat_preguntas')){
			var window = element.getElement('div#chat_preguntas');
			var area = window.getSize().y / (2.5);
			var myScroller = new Scroller(window,{area: area,velocity:0.2}).start();
		}

		if(element.getElement('a#send')){
			 element.getElement('div[id=mensaje]').setStyle('opacity',0);
			 var form = new FormCheck('form_chat');
			 var obj = this;
			 element.getElement('a#send').addEvent('click',function(){

		 		 if( form.isFormValid() ){		
						obj.ajaxmoduloform('chats_desarrollo','form_chat','',function(JSON){

								var mensaje = element.getElement('div[id=mensaje]');
								var chat = element.getElement('div[id=formu]');
								var myFx = new Fx.Slide(chat);
								mensaje.tween('opacity',0,1);
								myFx.slideOut();
						});
							


				 }else{
					form.onSubmit();
				 }
			});


		}
	},	
	
	modulo_format_date: function(element){
		date_options = {
			contenedor: element.getElement('#cont_fecha'),
			lang: "es-ES"
		}
		var ToDate = new FormDates(date_options);
	},	
	
	modulo_buscador: function(element) {	
		var go = function(){
			if(f.value != ''){
				var valor = f.value.replace(/ /g,"-");
				document.location.href="/buscador/" + valor;
			 }
		}	
		var f = element.getElement('input[id=query]').addEvents({
			'keypress': function(event){ if(event.key == 'enter') go(); },
			'focus':  function(event){this.value = '';}
			,'mouseout':   function(event){ if(this.value == '') this.value = 'Buscar...';}


		});
		if (element.getElement('[id=buscar]'))
		element.getElement('[id=buscar]').addEvent('click',go);

		
	},

	noticia_carrousel: function(element) {

		var actual     = 0; var estado     = 1; 		
		var limbo      = new Element('div');
		var contenedor = element.getElement('div[id=contenedor_piezas]');
		var piezas     = element.getElements('div[id=pieza]');
		element.getElement('div.paginacion').setStyle('width',element.getSize().x + 'px');
		var botones    = element.getElements('div[id=boton]').each(function(item,index){item.addEvents({'mouseover' : function(){ item.addClass('boton_over');    },'mouseout'  : function(){ item.removeClass('boton_over'); },'click'	    : function(){load(index);}});});
		var controles   = element.getElements('div[id=control]').each(function(item,index){	item.addEvent('click', function(){ switch(index){case 0: anterior(); break;case 1: toogle_play(); break;case 2: siguiente(); break;}}); });
		var load = function(index){
			actual = index;
			piezas.inject(limbo);
			piezas[index].tween('opacity',['0.6','1']).inject(contenedor);
			botones.removeClass('boton_over');
			botones[index].addClass('boton_over');

		}
		var toogle_play =  function(){if(estado){controles[1].addClass('play');estado = 0;clearInterval(timer);}else{controles[1].removeClass('play');estado = 1;siguiente();timer = siguiente.periodical(10000);}}
		var siguiente = function(){actual = (actual < (piezas.length -1)) ? actual + 1 : 0;load(actual);}
		var anterior  = function(){actual = (actual != 0) ? actual - 1 : (piezas.length -1);load(actual);}
		var timer      = siguiente.periodical(10000);


		load(0);		
	},

	noticia_multimedia: function(element) {
		var actual     = 0; var estado     = 1; 
		var piezas     = element.getElements('div[id=pieza]');
		var conta      = piezas.length;
		var limbo      = new Element('div');
		var contenedor = element.getElement('div[id=contenedor_piezas]');
		if(conta!=1){
			element.getElement('a#ant').addEvent('click',  function(){anterior();     }     );
			element.getElement('a#sig').addEvent('click',  function(){siguiente();    }     );
			var toogle_e = element.getElement('a#toogle').addEvent('click',  function(){toogle(); });
			var siguiente = function(){actual = (actual < (piezas.length -1)) ? actual + 1 : 0;load(actual);}
			var anterior  = function(){actual = (actual != 0) ? actual - 1 : (piezas.length -1);load(actual);}
			var toogle    =  function(){
				if(estado){
					toogle_e.getChildren().set('src','http://statics.miamidiario.com/imagenes/btn_play_galeria.gif');
					estado = 0;
					clearInterval(timer);
				}else{
					toogle_e.getChildren().set('src','http://statics.miamidiario.com/imagenes/btn_pausa.gif');
					estado = 1;
					timer = siguiente.periodical(5000);
				}
			}
		var load = function(index){
			actual = index;
			if (typeof slimbox != 'undefined'){
				$$("#pieza a").slimbox({
					counterText: "Imagen {x} de {y}"
				});
			}
			piezas.inject(limbo);
			piezas[index].tween('opacity',['0.6','1']).inject(contenedor);
		}
		load(0);
		var timer = siguiente.periodical(5000);
		}else{
			if (typeof slimbox != 'undefined'){
				$$("#pieza a").slimbox({
					counterText: "Imagen {x} de {y}"
				});
			}
			element.getElement('div[class=contenedor_btns_galeria]').dispose();
		}
		
	},

	noticia_desarrollada: function(element) {
		var size = 1.2; 
		var deslizante = $('deslizante'); 

		var ctext = element.getElement('div.desarrollo_noticia');

		var din  = function(){ deslizante.slide('in'); }; var dout = function(){ deslizante.slide('out') };
		var up = function(){ size = size + 0.001; ctext.setStyle('font-size' , size + 'em'); };

		var dw = function(){ size = size - 0.001; ctext.setStyle('font-size' , size + 'em'); };

		var period = null; var stop = function(){ clearInterval(period); };

		deslizante.addEvents({ 'mouseover': din, 'mouseout': dout }).slide('hide');


		element.getElements('div.icn_noticia').each(function(icono,index){
			icono.addEvents({'mouseover': function(){ icono.tween('opacity','0.5'); },'mouseout':  function(){ icono.tween('opacity','1'); }});
			switch(icono.id){
				case 'at': icono.addEvents({ 'mousedown':function(){ period = up.periodical(10); } , 'mouseup':stop}); break;
				case 'dt': icono.addEvents({ 'mousedown':function(){ period = dw.periodical(10); } , 'mouseup':stop}); break;				
				case 'ct': icono.addEvents({ 'mouseover': din, 'mouseout': dout }); break;
			}
		});
	},

	encuesta: function(element){		
		element.getElement('div[id=respuestas]').getChildren().each(function(item){
			item.addEvent('click',function(){
				new Request.JSON({url: '/index.php', onSuccess: function(JSON){
				var params = {menu:"false",scale:"noScale",allowFullScreen:"true",wmode:"transparent"};
				var flashvars = {'library_path':'http://nrw.miamidiario.com/assets/charts_library/',
						 'xml_source':'http%3A%2F%2Fnrw%2Emiamidiario%2Ecom%2Findex%2Ephp%3Fajax%2Dmodulo%3Dencuesta%26cod%5Fencuesta%3D' + JSON.cod_encuesta};
						  swfobject.embedSWF('http://nrw.miamidiario.com/assets/charts.swf', 'grafica' +JSON.cod_encuesta , 150, 150, "9.0.0","", flashvars, params, {});
				}}).post( {'ajax-modulo':'encuesta','cod_respuesta':item.id} );
			});
		});
		var borde = element.getElement('div[class=wrap]');
		curvyCorners(this.options.curve,borde);
	},

	menu: function(element) {
		return false;
		var data = null;
		var submenu = element.getNext();
		var contenedor = new Element('div',{'id':'submenu'}).inject(element,'after').slide('hide').addEvents({'mouseover':function(){this.slide('in'); }, 'mouseout':function(){this.slide('out');}});
		var getData = function(id){
			if(data != null) load(id);
			else new Request.JSON({url: '/index.php', onSuccess: function(JSON){ data = JSON; load(id); }}).post({'ajax-modulo':'menu'} );
		}
		var load = function(id){
			contenedor.getChildren().destroy();
			var lista = new Element('ul',{'class':'submenu'});
			if(!data[id]) return false;
			data[id].each(function(item,index){
				new Element('a',{'href':item.link,'title':item.title}).set('html',item.nombre).inject(new Element('li').inject(lista));	
			});
			lista.inject(contenedor);submenu.slide('out');
			contenedor.slide('in');
			
		}
		element.getElements('a').addEvents({
			'mouseover': function(){ 
				getData(this.rel);		

			 }, 
			'mouseout':  function(){ /*contenedor.getChildren().destroy();*/ contenedor.slide('out'); 			submenu.slide('in'); }
		});


	},
	
	modulo_videos_canales: function(element){	
	  	new Fx.Accordion(element, 'div.canal', 'div.capa_canal');
		element.getElements('div.pieza_canal').addEvents({
			'mouseover': function(){ this.tween('background-color','#FEFEFE'); },
			'mouseout': function(){ this.tween('background-color','#F2F2F2'); },
		});
	},
	modulo_newsletter: function(element){
		 var form = new FormCheck('form_newsletter');

		 var header = element.getElement('ul[id=fondo]');
		 var footer = element.getElement('div[id=footer]');
		 var capa = element.getElement('div#slide_newsletter');
		 curvyCorners(this.options.curvetop,header);
		 curvyCorners(this.options.curvebot,footer);
		 curvyCorners(this.options.curveint,capa);
		 var myFX = new Fx.Slide(capa).hide(); 
		 element.getElement('li#mtoogle').addEvent('click',function(){  myFX.slideIn(); }.bind(this));
		 element.getElement('a#send').addEvent('click',function(){  

 		 if(form.isFormValid()){
				this.ajaxmoduloform('newsletter','form_newsletter','',function(JSON){ 
					roar.alert(JSON.msg);
					(function(){ myFX.slideOut(); }).delay(1000);
				}.bind(this));  
		 }else{
			form.onSubmit();
		 }

		}.bind(this));
	},

	modulo_blogs_formulario: function(element){
		  var capa = element.getElement('div#capa_form');
		  var myFX = new Fx.Slide(capa).hide(); 
		  element.getElement('a#toogle').addEvent('click',function(){ myFX.slideIn(); });
		//  element.getElement('a#send').addEvent('click',function(){ this.ajaxmoduloform('newsletter','form_newsletter','',function(JSON){ capa.set('html',JSON.msg); myFX.slideIn(); });  }.bind(this));
	},

	modulo_baja_boletin: function(element){
		  var capa  = element.getElement('div#respuesta');
		  var hash  = element.getElement('input#hash').value;
		  var envio = function(valor){
			this.ajaxmodulo('baja',{'valor':valor,'hash':hash},function(JSON){ 
				capa.set('html',JSON.msg); 
			});
		  }.bind(this);

		  element.getElement('a#si').addEvent('click',function(){ envio('si'); });
		  element.getElement('a#no').addEvent('click',function(){ envio('no'); });
	},

	modulo_seccion_tv: function(element){
		var borde = element.getElement('div[id=wrap]');
		curvyCorners(this.options.curve,borde);
		//console.log(element.getElement('div[class=capa_trans]'));
		//element.getElement('div[class=capa_trans]').setStyle('width',element.getSize().x + 'px');
	},
	modulo_seccion_desarrollo: function(element){
		var top = element.getElement('div[id=top]');
		var footer = element.getElement('div[id=footer]');
		curvyCorners(this.options.curvetop,top);
		curvyCorners(this.options.curvebot,footer);
	}

	
});

