/***************************
Scripts Cpech Online 2011
v1.7.5

0. FAKE TWITS PARA PRUEBAS
0. SHOW/HIDE PANEL
0. CLEAR VIDEO
1. VIDEOS
2. AVONNI
3. CONTACTO
4. WIDGET TWITTER
****************************/
$(document).ready(function(){
	var body = $('body');
	videos();
	avonni();
	//contacto();
	getTwits()
	//fakeTwits();
});

/**************************
0. FAKE TWITS PARA PRUEBAS
***************************/
function fakeTwits(){
	var base = $('#social .twitterWidget'),
		twit = 'No dejen de <a href="#">asistir</a> y participar de los talleres de ejercitaci&oacute;n de estas dos &uacute;ltimas semanas.',
		
		newdate = new Date();
		ano = newdate.getFullYear(),
		mes = newdate.getMonth(),
		dia = newdate.getDate(),
		hora = newdate.getHours() + (newdate.getTimezoneOffset()/60),
		minutos = newdate.getMinutes(),
		
		nmonth = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'),
		original = 'Wed Dec 15 12:14:48 +0000 2010',
		twitdate = 'Wed Dec 21 0:00 +0000 2010',
		datesplit = twitdate.split(' '),
		hoursplit = datesplit[3].split(':'),
		tyear = datesplit[5],
		tmonth = datesplit[1],
		tdate = datesplit[2],
		thour = parseInt(hoursplit[0]),
		tmin = parseInt(hoursplit[1]),
		fecha = '';

		if(ano==tyear) { /*Comprueba ano*/
			if(nmonth[mes]==tmonth) { /*Comprueba mes*/
				if(dia==tdate) { /*Comprueba dia*/
					if(hora==thour) { /*Comprueba hora*/
						var diff0 = minutos-tmin;
						if(diff0==30) { fecha = 'Hace media hora'; }
						if(minutos>tmin) {fecha = 'Hace '+(minutos-tmin)+' minutos'; }
						if(diff0==1) { fecha = 'Hace un minuto'; }
						if(minutos==tmin) { fecha = 'Hace menos de un minuto'; }
					}/*Distinta hora*/
					else {
						var diff1 = hora-thour, diff2 = ((hora*60+minutos)-(thour*60+tmin)), diff3 = diff2%60;
						if(diff2==60) {	fecha = 'Hace 1 hora'; }
						if(diff2<60) { fecha = 'Hace '+diff2+' minutos'; }
						if(diff2>60) {
							if(diff1==1) { var hsince = 'Hace 1 hora'; }
							else { hsince = 'Hace '+diff1+' horas'; }
							if(diff3==1) { var msince = ' minuto'; }
							else { msince = ' minutos'; }
							if(diff3==0) { var minsince = '' }
							else { minsince = ', '+diff3+msince; }
							fecha = hsince+minsince;
						}						
					}
				}/*Distinto dia*/
				else {
					var diff4 = dia-tdate;					
					if(diff4==1) { fecha = 'Ayer, a las '+thour+':'+tmin }
					if(diff4>1 && diff4<7) { fecha = 'Hace '+diff4+' d&iacute;as' }
					if(diff4==7) { fecha = 'Hace una semana' }
					if(diff4>7) { fecha = 'Hace '+Math.ceil(diff4/7)+' semanas' }
				}
			}/*Distinto mes*/
			else {
				for(i=0;i<=11;i++) { if( nmonth[i]==tmonth ) { var tmonthnum = i; } }
				var diff4 = mes-tmonthnum;
				if(diff4==1) { fecha = 'El mes pasado' }
				if(diff4>1) { fecha = 'Hace '+diff4+' meses' }
			}
		}/*Distinto ano*/
		else { fecha = 'Hace m&aacute;s de un a&ntilde;o' }
		
	base.append('<h3>&Uacute;ltimo post</h3>')
		.append('<ul id="lastTwit"></ul>');
	base.find('#lastTwit')
		.append('<li><h4>'+twit+'</h4></li>')
		.find('li').append('<p>'+fecha+'</p>');
	base.append('<h4>Twits anteriores</h4>')
		.append('<ul id="oldTwits"></li>');
	var animoTarget = base.find('#oldTwits');
	for(i=1;i < 3 - 1 ; i++) {
		//animoTarget.width(ancho * (numTwits -1));
		animoTarget.append( '<li class="twitMain">'+twit+'</li>' );		
	};
}

/******************
0. SHOW/HIDE PANEL
*******************/
var vel = 500;
function showHide(src){
	var det=$('.detalle'),feat=$('#featured'),ctrl=src.parent().find('.control'),txt=ctrl.attr('alt');

	if($('.activo').length>1) { //Si hay otro panel desplegado
		det.toggleClass('activo').addClass('ocultar');
		src.toggleClass('activo').removeClass('ocultar');
		//feat.addClass('ocultar');
	}
	for(i=0;i<=det.length;i++) { //Restablece texto de boton control
		var curctrl = det.eq(i).parent().find('.control');
		curctrl.contents().replaceWith(curctrl.attr('alt'));
	}
	if(src.hasClass('activo')) { //Cambia texto de boton control actual
		ctrl.contents().replaceWith('cerrar');
	} else {
		ctrl.contents().replaceWith(txt)
	}
	//Anima despliegue
	if($('.ocultar').length>0) { //Si hay otro panel desplegado
		$('.ocultar').animate({'height':'toggle'},vel,
			function(){
				det.removeClass('ocultar');
				src.animate({'height':'toggle'},vel);
			}
		);
	}
	else if(src.hasClass('activo')) {
		feat.animate({'height':'toggle'},vel,
			function(){
				src.animate({'height':'toggle'},vel,
					function(){ clearVid();}
				);
			}
		);
	}
	else {
		src.animate({'height':'toggle'},vel,
			function(){
				feat.animate({'height':'toggle'},vel);
			}
		);
	}
}

/**************
0. CLEAR VIDEO
***************/
function clearVid(){
	$('#myVid, #videoDownload').remove();
	$('#featured').find('.playing').removeClass('playing');
	$('#featured').find('img').animate({'opacity':'1'},vel);
	$('#vidWrap').hide(0);
}

/*********
1. VIDEOS
**********/
function videos(){
	var cont = $('#featured'),
		li = cont.find('li'),
		vid = cont.find('#video'),
		vidCont = vid.find('#vidWrap');
	
	vidCont.hide(0);

	for(i=0;i<=li.length;i++) {
		var cur = li.eq(i);
		if( cur.attr('id')!='video') {
			cur.attr('id','feature'+(i+1));
			cur.find('a').attr('id','featureLink'+(i+1));
			cur.find('img').attr('id','featureImg'+(i+1));
		}
	}
	//li.find('a').css({'opacity':'0.7'});
	li.find('a').hover(
		function(){
			var cur = $('#'+this.id);
			if(cur.hasClass('playing')) {
				return false;
			}
			else {
				cur.prepend('<div class="hovervid" style="opacity:0;"><h3>Haz click para reproducir video</h3></div>');
				cur.find('img').animate({opacity:0.1},vel/2);
				cur.find('.hovervid').animate({opacity:1},vel/2);
			}
		},
		function(){
			var cur = $('#'+this.id);
			if(cur.hasClass('playing')) { return false; }
			else {
				cur.find('.hovervid').animate({opacity:0},vel/2, function() { cur.find('.hovervid').remove(); } );
				cur.find('img').animate({opacity:1},vel/2);
			}
		}
	);
	li.find('a').click(
		function(){
			var src = $('#'+this.id),
				title = src.find('img').attr('title'),
				tar = src.attr('alt');
				//tar = tar+'/'+tar; /*Para ruta con subdirectorio*/
				tar = 'http://www.cpechonline.cl/videos/'+tar; /*Para ruta absoluta*/
			//alert('TP1');
			src.find('.hovervid').remove();
			src.find('img').animate({'opacity':'0.5'},vel);

			if(src.hasClass('playing')) { return false; }
			else {
				vidCont.animate({'height':'hide'},vel,
					function(){
						clearVid();
						$('.playing').removeClass('playing');
						vidCont.find('h3').text(title);
						vidCont.find('.ctrl').text('cerrar');

          				//Carga Flash si no es compatible con video HTML
          				var v = document.createElement('video');
						if( !v.play ) {
							$('#myVid').remove();
							vidCont.append('<div id="myVid"></div>');
							var so = new SWFObject(""+tar+".swf", "myVid", "630", "354", "8", "#ffffff");
							so.addParam("wmode", "transparent");
							so.addParam("menu", "false");
							so.write("myVid");
          					//	]]>
						} else {/*Si es compatible con video HTML*/
							//Agrega video HTML
          					vidCont.append('<video width="630" height="354" controls="controls" autoplay="autoplay" id="myVid"></video>');
          					$('#myVid').append('<source src="'+tar+'.mp4">')
          							   .append('<source src="'+tar+'.ogv" type="video/ogg">');
						}
						//Agrega link de descarga
						vidCont.append('<p id="videoDownload" class="video link"><span>Descargar video:</span><a class="video mp4" href="'+tar+'.mp4">MP4</a><a class="video ogg" href="'+tar+'.ogv">OGG</a></p>');
          				
          				src.addClass('playing');
          				vidCont.animate({'height':'show'},vel);
   						$('html,body').animate({scrollTop:vidCont.offset().top},vel);
					}
				);

			}
			return false;
		}
	);
	li.find('.ctrl').click(
		function(){
			$('.playing').removeClass('playing');
			vidCont.animate({'height':'hide'},vel,function(){clearVid()});
			return false;
		}
	);
}

/*********
2. AVONNI
*********/
function avonni(){
	var cont = $('#avonni'),
		ctrl = cont.find('.control'),
		more = cont.find('.detalle');
	more.hide(0);
	ctrl.attr('alt','ver m&aacute;s');
	ctrl.click(
		function(){
			more.toggleClass('activo');
			showHide(more);
		}
	);
}

/***********
3. CONTACTO
************/
function contacto(){
	var cont = $('#contacto'),
		ctrl = cont.find('.control'),
		more = cont.find('.detalle');
	more.hide(0);
	ctrl.attr('alt','No dudes en contactarnos');
	ctrl.click(
		function(){
			more.toggleClass('activo');
			showHide(more);
		}
	);
}


/*****************
4. WIDGET TWITTER
******************/
function getTwits(){
if($('body').hasClass('front')) {
	var numTwits = 20,
		url = "http://twitter.com/statuses/user_timeline/cpechonline.json?count="+numTwits+"&callback=?",
		vel = 500, pausa = 10000, ancho = 228,
		base = $('#social .twitterWidget'),
		url1 = /(^|&lt;|\s)(www\..+?\..+?)(\s|&gt;|$)/g,
		url2 = /(^|&lt;|\s)(((https?|ftp):\/\/|mailto:).+?)(\s|&gt;|$)/g,
		tag = /(^|\s)(#)(.+?)(:|!|,|\s|\.|$)/g,
		user = /(^|\s)(@)(.+?)(\s)/g,
		reTag = "http://twitter.com/search?q=%23", reUser = "http://twitter.com/";

	// Rescata twits
	$.getJSON(url,function(data) {
		//Rescata fecha del post mas reciente
		function getTwitdate(twitdata) {
			newdate = new Date();
			ano = newdate.getFullYear(),
			mes = newdate.getMonth(),
			dia = newdate.getDate(),
			hora = newdate.getHours() + (newdate.getTimezoneOffset()/60),
			minutos = newdate.getMinutes(),
			
			nmonth = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'),
			twitdate = twitdata.created_at,
			datesplit = twitdate.split(' '),
			hoursplit = datesplit[3].split(':'),
			tyear = datesplit[5],
			tmonth = datesplit[1],
			tdate = datesplit[2],
			thour = parseInt(hoursplit[0]),
			tmin = parseInt(hoursplit[1]),
			fecha = '';
			
			if(ano==tyear) { /*Comprueba ano*/
				if(nmonth[mes]==tmonth) { /*Comprueba mes*/
					if(dia==tdate) { /*Comprueba dia*/
						if(hora==thour) { /*Comprueba hora*/
							var diff0 = minutos-tmin;
							if(diff0==30) { fecha = 'Hace media hora'; }
							if(minutos>tmin) {fecha = 'Hace '+(minutos-tmin)+' minutos'; }
							if(diff0==1) { fecha = 'Hace un minuto'; }
							if(minutos==tmin) { fecha = 'Hace menos de un minuto'; }
						}/*Distinta hora*/
						else {
							var diff1 = hora-thour, diff2 = ((hora*60+minutos)-(thour*60+tmin)), diff3 = diff2%60;
							if(diff2==60) {	fecha = 'Hace 1 hora'; }
							if(diff2<60) { fecha = 'Hace '+diff2+' minutos'; }
							if(diff2>60) {
								if(diff1==1) { var hsince = 'Hace 1 hora'; }
								else { hsince = 'Hace '+diff1+' horas'; }
								if(diff3==1) { var msince = ' minuto'; }
								else { msince = ' minutos'; }
								if(diff3==0) { var minsince = '' }
								else { minsince = ', '+diff3+msince; }
								fecha = hsince+minsince;
							}						
						}
					}/*Distinto dia*/
					else {
						var diff4 = dia-tdate;					
						if(diff4==1) { fecha = 'Ayer, a las '+thour+':'+tmin }
						if(diff4>1 && diff4<7) { fecha = 'Hace '+diff4+' d&iacute;as' }
						if(diff4==7) { fecha = 'Hace una semana' }
						if(diff4>7) { fecha = 'Hace '+Math.ceil(diff4/7)+' semanas' }
					}
				}/*Distinto mes*/
				else {
					for(i=0;i<=11;i++) { if( nmonth[i]==tmonth ) { var tmonthnum = i; } }
					var diff4 = mes-tmonthnum;
					if(diff4==1) { fecha = 'El mes pasado' }
					if(diff4>1) { fecha = 'Hace '+diff4+' meses' }
				}
			}/*Distinto ano*/
			else { fecha = 'Hace m&aacute;s de un a&ntilde;o' }
			return fecha;
		}
		//Fin rescate de fecha
		
		// Prepara divs y despliega ultimo twit
		base.append('<h3>&Uacute;ltimo post</h3>')
			.append('<ul id="lastTwit" style="width:'+(ancho *2)+'px;"></ul>')
		base.find('#lastTwit')
			.append('<li style="width:'+ancho+'px;"><h4 class="twitMain">'+data[0].text+'</h4></li>')
			.find('li').append('<p>'+getTwitdate(data[0])+'</p>');
		base.append('<h4>Twits anteriores</h4>')
			.append('<ul id="oldTwits"></li>');
		//Despliega twits anteriores
		var animoTarget = base.find('#oldTwits');
		for(i=1;i < numTwits - 1 ; i++) {
			animoTarget.width(ancho * (numTwits -1));
			animoTarget.append( '<li class="twitMain" style="width:'+ancho+'px;">'+data[i].text+'</li>' )
		};
		base.find('.twitMain').linkify();
		animaTwit(animoTarget,1);
		//setInterval ( function() {refreshTwits(data[0].user.statuses_count)}, 60000 );
	});
	// Refresco de Twits
	refreshTwits = function (twitCount)	{
		var target1 = base.find('#lastTwit'), target2 = base.find('#oldTwits');
		$.getJSON(url,function(newData) {
			if( newData[0].user.statuses_count > (twitCount) ) {
				target1.append('<li style="width:'+ancho+'px;"><h4 class="twitMain">'+newData[0].text+'</h4></li>>')
					   .find('li').append('<p>'+getTwitdate(newData[0])+'</p>');
				animaTwit(target1,0);
				target2.find('li:last').remove();
				target2.append('<li class="twitMain" style="width:'+ancho+'px;">'+newData[1].text+'</li>')
					   .find('li:last')
					   .remove()
					   .clone()
					   .insertAfter(target2.find('li:first'));
				animaTwit(target2,0);
				target2.empty();
				for(i=1;i < numTwits - 1 ; i++) {
					target2.width(ancho * (numTwits -1));
					target2.append( '<li class="twitMain" style="width:'+ancho+'px;">'+newData[i].text+'</li>' );
				};
				base.find('.twitMain').linkify();
				animaTwit(target2,1);
			} else { /* Nada */ }
		});
	}
	// Desplazamiento de twits
	animaTwit = function (animoTarget,loop) {
		if(loop == 1) {
			setInterval ( function () {
				animoTarget.find('li:first')
						   .animate({marginLeft:"-="+ancho+"px"},vel);
				setTimeout( function() {
					animoTarget.find('li:first')
							   .css({'margin-left':'0'})
							   .remove()
							   .clone()
							   .insertAfter(animoTarget.find('li:last'))
				},vel);
			}, pausa);
		} else {
			animoTarget.find('li:first')
					   .animate({marginLeft:"-="+ancho+"px"},vel);
			setTimeout( function() {
				animoTarget.find('li:first')
						   .css({'margin-left':'0'})
						   .remove();
			},vel);
		}
	}
	// Transforma links, tags y reply
	linkifyBack = function () {
		var childNodes = this.childNodes,
		i = childNodes.length;
		while(i--) {
			var n = childNodes[i];
			if (n.nodeType == 3) {
				var html = $.trim(n.nodeValue);
				if (html) {
					html =  html.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
								.replace(url1, '<span>$1</span><a href="http://$2" target="_blank">$2</a><span>$3</span>')
								.replace(url2, '<span>$1</span><a href="$2" target="_blank">$2</a><span>$5</span>')
								.replace(tag, '<span>$1</span><a href="'+reTag+'$3" target="_blank">$2$3</a><span>$4</span>')
								.replace(user, '$1@<a href="'+reUser+'$3" target="_blank">$3</a><span>&nbsp;</span>');					
					$(n).after(html).remove();
				}
			} else if (n.nodeType == 1  &&  !/^(a|button|textarea)$/i.test(n.tagName)) {
				linkifyThis.call(n);
			}
		}
	};
	$.fn.linkify = function () { return this.each(linkifyBack); };
} else { /* Evita error al cargarlo en paginas interiores */ }
}
