(function($) {
	$.fn.tvguide = function(params){
		
		//The default opctions
		$.fn.tvguide.opc_default = {
			textShows: "",
			numShows: 0,
			b: -1,
			imgLoader: 'images/loader.gif',
			pass: 5,
			rows: 7,
			rowspass: 1,
			fechasParrilla: new Date(),
			hoyNoModificado: new Date(),
			diasAbreviacion: new Array('Dom','Lun','Mar','Mie','Jue','Vie','Sab'),
			mesesName: new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'),
			showDiaAbreviado: new Array(),
			showMes: new Array(),
			showNumDia: new Array(),
			numJsonsSemana: 7,
			parrillas: new Array(),
			pathJsons: new Array(''),
                        numPathJsons: 0
		};
		
		// check if params are sent, else defaults is asigned
		opc = $.extend( $.fn.tvguide.opc_default,params);

                opc.numPathJsons = opc.pathJsons.length;
                
		function dobleDigito (d) {
			if(d<10) d = '0'+d;
			return d;
		}
		function divideAnio(a){
			return a.toString().substr(2,4);
		}
			
		
		if(opc.numPathJsons>1){ // Entonces cargamos por canal y mostramos horario/canal
					
		}else{ // Un solo canal y mostramos horario/dias
			for(opc.armaUlrJsons=0;opc.armaUlrJsons<opc.numJsonsSemana;opc.armaUlrJsons++){
				if(opc.armaUlrJsons!=0)	opc.fechasParrilla.setDate(opc.fechasParrilla.getDate()+1);
				opc.parrillas[opc.armaUlrJsons] = opc.pathJsons[0] + divideAnio(opc.fechasParrilla.getFullYear()) + '' + dobleDigito((opc.fechasParrilla.getMonth()+1)) + '' + dobleDigito(opc.fechasParrilla.getDate()) + '' + '.js?'+Math.random();
				opc.showDiaAbreviado[opc.armaUlrJsons] = opc.diasAbreviacion[opc.fechasParrilla.getDay()];
				opc.showNumDia[opc.armaUlrJsons] = opc.fechasParrilla.getDate();
				opc.showMes[opc.armaUlrJsons] = opc.mesesName[opc.fechasParrilla.getMonth()];
			}
		}
		
		$(".loader").html('<img src="'+opc.imgLoader+'" alt="" title="" \/>');
		
		function loadParrillas(){
			opc.b++;
			if(opc.b+1<=opc.parrillas.length){
				$.ajax({
					dataType: 'json',
					success: function(data) {
						//console.log(data);
						numShows = data.PROGRAMACION.CANAL.SHOWS.length;
						opc.textShows += '<ul class="gridm">';
						if(opc.numPathJsons>1){
							opc.textShows += '<li class="logo"><img src="images/tvsa_parr_lg_telehit.gif" alt="" title="" /></li>';
						}else{
							opc.textShows += '<li class="logo"><h6>'+opc.showDiaAbreviado[opc.b]+'</h6><span>'+opc.showNumDia[opc.b]+' de '+opc.showMes[opc.b]+'</span></li>';
						}
						borderL = parseFloat($(".hours li").css('border-left-width'));
						borderR = parseFloat($(".hours li").css('border-right-width'));
						mediaHoraSize = $(".hours li").outerWidth(true) - borderL - borderR;
						for(i=0;i<numShows;i++){
							title = data.PROGRAMACION.CANAL.SHOWS[i].title;
							duration = data.PROGRAMACION.CANAL.SHOWS[i].duration;
							url_officialSite = data.PROGRAMACION.CANAL.SHOWS[i].url_officialSite;
							url_episodeSite = data.PROGRAMACION.CANAL.SHOWS[i].url_episodeSite;
							thumbnail = data.PROGRAMACION.CANAL.SHOWS[i].thumbnail;
							descripcion = data.PROGRAMACION.CANAL.SHOWS[i].descripcion;
							durationShow = Math.floor((duration*(mediaHoraSize))/(1800));
							durationShowExtra = (duration/1800)-1;
							if( durationShowExtra >= 1) {
								durationShow += Math.floor((durationShowExtra)*(borderL+borderR));
							}
							startTime = 0;
							if(i==0){
								startTime = data.PROGRAMACION.CANAL.SHOWS[0].horario.split(":");
								startTimeHr = parseFloat(startTime[0]);
								startTimeMin = parseFloat(startTime[1]);
								if(startTimeHr>0 || startTimeMin>0){
									if(startTimeMin>0) { startTime = 1}
									if(startTimeHr>0) { startTime = (startTimeHr*2)+startTime; }
								}
								startTime = startTime*$(".hours li").outerWidth(true);
							}
							opc.textShows += '<li style="width:'+Math.floor(durationShow)+'px; margin-left:'+startTime+'px">';
							opc.textShows += '<p class="title">'+title+'</p>';

							if(url_officialSite!='')
								opc.textShows += '<p class="site"><a href="'+url_officialSite+'" target="_blank">Ir al sitio oficial</a></p>';
							if(url_episodeSite!='')
								opc.textShows += '<p class="chapter"><a href="'+url_episodeSite+'" target="_blank">Ver cap&iacute;tulos &raquo;</a></p>';
							opc.textShows += '</li>';
						}
						opc.textShows += "</ul>";
						$(".maingridcontent").html(opc.textShows);
						if(opc.b+1==opc.parrillas.length){
						
							
						}	
						loadParrillas();				
					},
					url: opc.parrillas[opc.b],
					error: function (msg) {
						//console.log(msg);
						if(opc.rows>1) opc.rows=opc.rows-1;
						loadParrillas();
					}
				});
			}else{
                            var w = $(".hours li").outerWidth(true);
                            var l = $("li.logo").width();
                            var u = $(".maingridcontent ul").outerHeight(true);
                            var g=u*opc.rowspass;
                            var r = 0;
                            var j = w*opc.pass;
                            var sumafilas = opc.rows;
                            var cuantospasar = 0;
                            var numULs = $(".maingridcontent ul").length;
                            var k=opc.rows*u;

                            $(".hours li").each(function(){
                                    r += $(this).outerWidth(true);
                            });
                            $('.maingrid').css('height',k+'px');
                            $('.tvgrid .hours').css('width',(w*($(".hours li").length))+'px');
                            $('.tvgrid .forward').get(0).disabled = false;
                            $('.tvgrid #backward').get(0).disabled = false;
                            $('.tvgrid .bottomward').get(0).disabled = false;
                            $('.tvgrid #upward').get(0).disabled = false;

                            $('.tvgrid .forward').click(function(){
                                    var x = r+(parseFloat($(".hours").css('margin-left')));
                                    if( ($(".hoursContent").width()) < x ){
                                            if( !this.disabled ){
                                                    this.disabled = true;
                                                    if( (x-j) < $(".hoursContent").width() ) {
                                                            j = x-$(".hoursContent").width();
                                                    }
                                                    $(".hours").animate({"margin-left": "-="+j+"px"}, "slow", function() {
                                                            $('.tvgrid .forward').get(0).disabled = false;
                                                     });
                                                    $(".gridm").animate({"margin-left": "-="+j+"px"}, "slow");
                                                    j = w*opc.pass;
                                                    $(".gridm li").each(function(){
                                                            if( $(this).hasClass("logo")){
                                                                    $(this).css("left",l+"px");
                                                            }
                                                    });
                                            }
                                    }
                            });

                            $('.tvgrid #backward').click(function(e){
									e.preventDefault();
                                    var h = parseFloat($(".hours").css('margin-left'));
                                    if(h!=0){
                                            if(!this.disabled){
                                                    this.disabled = true;
                                                    if(h+j>0) {
                                                            j = Math.abs(h);
                                                    }
                                                    $(".hours").animate({"margin-left": "+="+j+"px"}, "slow", function() {
                                                            $('.tvgrid #backward').get(0).disabled = false;
                                                     });
                                                    $(".gridm").animate({"margin-left": "+="+j+"px"}, "slow");
                                                    $(".gridm li").each(function(){
                                                            if( $(this).hasClass("logo")){
                                                                    $(this).css("left",l+"px");
                                                            }
                                                    });
                                            }
                                    }
                            });

                            $('.tvgrid .bottomward').click(function(){
                                    var r = 0;
                                    if( (sumafilas+opc.rowspass) < numULs ) {
                                            sumafilas += rowspass;
                                            cuantospasar = u*rowspass;
                                    }else{
                                            cuantospasar = u*(numULs-sumafilas);
                                            sumafilas=numULs;
                                    }
                                    $(".maingridcontent ul").each(function(){
                                            r += g;
                                    });
                                    if(k<$('.maingridcontent').outerHeight(true)){
                                            if(!this.disabled){
                                                    this.disabled = true;
                                                    $(".maingridcontent").animate({"margin-top": "-="+cuantospasar+"px"}, "slow", function() {
                                                            $('.tvgrid .bottomward').get(0).disabled = false;
                                                     });
                                                    g=u*rowspass;
                                            }
                                    }
                            });

                            $('.tvgrid #upward').click(function(e){
									e.preventDefault();
                                    var n=parseFloat($(".maingridcontent").css('margin-top'));
                                    if( (sumafilas-opc.rowspass) >= opc.rows ) {
                                            sumafilas -= rowspass;
                                            cuantospasar = u*rowspass;
                                    }else{
                                            cuantospasar = u*(sumafilas-opc.rows);
                                            sumafilas=opc.rows;
                                    }

                                    if(n!=0){
                                            if(!this.disabled){
                                                    this.disabled = true;
                                                    $(".maingridcontent").animate({"margin-top": "+="+cuantospasar+"px"}, "slow", function() {
                                                            $('.tvgrid #upward').get(0).disabled = false;
                                                     });
                                            }
                                    }
                            });
                            var dateNow = new Date();
                            horas = dateNow.getHours();
                            activeMedia = 0;
                            minutos = 0;
                            if(dateNow.getMinutes()>29) {
                                    minutos = 30;
                                    activeMedia = 1;
                            }else{
                                    minutos = 00;
                            }
                            var t=0;
                            $(".hours li").each(function(){
                                    if(t==(horas*2)+activeMedia){
                                            $(this).addClass('active');
                                            var x = r+(parseFloat($(".hours").css('margin-left')));
                                            if( ($(".hoursContent").width()) < x ){
                                                    if( (x-j) < $(".hoursContent").width() ) {
                                                            j = x-$(".hoursContent").width();
                                                    }
                                                    j = ((horas*2)+activeMedia)*$(".hours li").outerWidth(true);
                                                    $(".hours").animate({"margin-left": "-="+j+"px"}, 0);
                                                    $(".gridm").animate({"margin-left": "-="+j+"px"}, 0);
                                                    j = w*opc.pass;
                                                    $(".gridm li").each(function(){
                                                            if( $(this).hasClass("logo")){
                                                                    $(this).css("left",l+"px");
                                                            }
                                                    });
                                            }
                                    }
                                    t++;
                            });
                            $(".loader").css('display','none');
                            $(".content").css('visibility','visible');
                        }
		}
	
		loadParrillas();

	}
	
})(jQuery);
