/*
================================================================
Scripts Cpech Online v1.7.3

1. ROTACION DE BANNER
2. WIDGET TWITTER
3. ADS
   3.1 MATRICULAS
   3.2 AVONNI
   3.3 MIEDO!!!!!
4. CONTENIDOS
5. LEER MAS
6. STAT MENU
7. HORARIO DE CURSOS
8. PAGE PEEL

================================================================
*/
$(document).ready(function(){
	$('a[rel*=facebox]').facebox();
	animaAds();
	rotaBanner();
	leermas();
	contenidos();
	statMenu();
	getTwits();
	horarioOnline();
	pagePeel();
});
/*
================================================================
1. ROTACION DE BANNER
================================================================
*/
function rotaBanner() {
	var cont = $('#banners'), primo = cont.children(':first'),
		vel = 1000, pausa = 6000; /* Velocidad y pausa de animacion en ms */
	// Prepara divs para menu
	cont.wrap('<div id="bannerWrap"></div>');
	$('#bannerWrap').prepend('<div id="bannerFrame"><img src="img/banner_frame.png" /></div>');
	$('#bannerFrame').append('<div id="bannerClick"></div>');
	$('#bannerFrame').append('<ul id="bannerList"></ul>');

	var list = $('#bannerList'), nodes = cont.children();
	// Asigna ID y crea Menu
	for(i=0;i<nodes.length;i++) {
		var j = (i+1), row = cont.find('.banner:eq('+i+')'), titulo = row.find('img').attr('alt');
		row.attr('id','banner'+j);
		//list.append('<li class="banner'+(i+1)+'"><a href="#" id="nav'+(i+1)+'">' +titulo+ '</a></li>' );
		list.append('<li class="banner'+(i+1)+'" id="nav'+j+'">' +titulo+ '</li>' );
	}
	//Prepara animacion
	cont.width(2*cont.children().width());
	primo.clone().insertAfter(cont.children(':last')).attr('id','bannerCopy');
	primo.addClass('actual');
	list.children(':first').addClass('boldMe');
	//Activa primer link
	bannerLink(primo);
	//Activa navegacion
	$('#bannerList').children().click(function(){ listLink(this.id) });
	//Loop de animacion
	animoNow = setInterval(function(){animar();},pausa);

	//Funcion animar banners y marcar menu
	function animar() {
		var cur = cont.find('.actual'), sig = cur.next();
		sig.addClass('siguiente');
		//limpia links de banners
		$('#bannerClick').empty();
		//anima banners
		cur.animate({marginLeft:"-="+cur.width()+"px"},vel,
			//despues de animar:
			function(){
				//Base: reformatea banners para loop
				cur.css({'margin-left':'0'}).removeClass('actual');
				sig.removeClass('siguiente');
				list.find('.boldMe').removeClass('boldMe');
				//Condicional: Si no es el ultimo banner
				if(sig.attr('id')!='bannerCopy') {
					sig.addClass('actual');
					list.find('.'+sig.attr('id')).addClass('boldMe');
					bannerLink(sig);
				}
				//Condicional: Si es el ultimo banner
				else {
					primo.addClass('actual');
					list.children(':first').addClass('boldMe');
					bannerLink(primo);
				}
			}
		);
	}
	//Funcion link banner
	function bannerLink(src){
		//Ejecuta solo si existe link
		if(src.find('a').length>0) {
			var cLink = src.find('a').attr('href'),
				lTarget = src.find('a').attr('target'),
				cArea = $('#bannerClick');
			if(lTarget == 'undefined') { lTarget = '' }
			cArea.append('<a href="'+cLink+'" target="'+lTarget+'" class="cLink"><img src="img/trans.gif" width="100%" height="100%" /></a>');
		} else { return false; }
	}
	//Funcion link navegacion
	function listLink(src){
		//Ignora si esta activo
		if( $('#'+src).hasClass('boldMe') ) { return false; }
		var tarNav = cont.find('#banner'+src.replace('nav',''));
		clearInterval(animoNow);
		cont.find('.siguiente').removeClass('siguiente');
		tarNav.addClass('navegar');
		cont.find('.actual').animate({opacity:'hide'},vel/2,
			function(){
				cont.find('.actual').removeClass('actual').css({'display':'block'});
				tarNav.removeClass('navegar').addClass('actual');
				list.find('.boldMe').removeClass('boldMe');
				$('#'+src).addClass('boldMe');
				bannerLink(tarNav);
				animoNow = setInterval(function(){animar();},pausa);
			}
		);
	}
	//Funcion rotacion banner Intensivo
	setInterval(function(){intSwitch();},pausa*(cont.children().length-1));
	function intSwitch(){
		var img = $('#banners .intensivo img'), src = 'pitbull';
		img.toggleClass('mago');
		if(img.hasClass('mago')) { src = 'mago' }
		img.attr('src','banners/intensivo_'+src+'.jpg');
	}
}
/*
================================================================
2. 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 = 210,
		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) {
		// 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>')
		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>>');
				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 */ }
}

/*
================================================================
3. ADS
================================================================
*/
function animaAds() {
	var who = $('#ads');
	if(who.children().length > 0) {
		who.css({ 'left':'320px' });
		setTimeout( function () {
			who.animate({top:'40px'},300)
			   .animate({top:'-40px'},250)
			   .animate({top:'10px'},250)
		   	.animate({top:'-5px'},250);
		},1000 );
		setInterval( function () {
			who.animate({top:'-=5px',left:'+=5px'},100)
			   .animate({top:'+=10px',left:'-=10px'},100)
			   .animate({top:'-=5px',left:'+=5px'},100);
		},10000);
	} else { /*Nada*/ }
}

/*
================================================================
	3.1 MATRICULAS
================================================================
*/

function matriculas() {
	$('#general').prepend('<div id="matriculas"></div>');
	var mat = $('#matriculas'), link = 'http://www.cpech.cl/comercio';
	if($('body').hasClass('home')) { var img = 'img/matriculas.png' }
	else { var img = '../img/matriculas.png' }
	
	mat.append('<a href="'+link+'" target="_blank"><img src="'+img+'" alt="Matr&iacute;culas abiertas" /></a>');
	mat.prepend('<!--[if lt IE 7]><script>DD_belatedPNG.fix("#matriculas img");</script><![endif]-->');
	
	animoAD(mat);
}

/*
================================================================
	3.2 AVONNI
================================================================
*/

function avonni() {
	$('#avonni').css({ 'left':'410px' });
	setTimeout( function () { $('#avonni').animate({top:'70px'},500).animate({top:'-10px'},250).animate({top:'40px'},250).animate({top:'20px'},250) },2300 );
}
/*
================================================================
	3.3 MIEDO!!!!!
================================================================
*/

function miedo() {
	$('#general').prepend('<div id="miedo"></div>');
	var psu = new Date(2009,10,30),hoy = new Date(),
		dias = psu.getDate() - hoy.getDate(),
		miedo = $('#miedo');
	if($('body').hasClass('home')) { var path = 'img/cal/'; }
	else { var path = '../img/cal/'; }
		
	if(dias==10) {
		miedo.append('<img src="'+path+'cal'+dias+'.png" title="'+dias+' d&iacute;as para la PSU" />');
	} else if(dias<=9) {
		miedo.append('<img src="'+path+'cal0'+dias+'.png" title="'+dias+' d&iacute;as para la PSU" />');
	} else if(dias==1) {
		miedo.append('<img src="'+path+'cal0'+dias+'.png" title="'+dias+' d&iacute;a para la PSU" />');
	} else if(dias<1 || dias==29) {
		miedo.append('<img src="'+path+'cal00.png" title="HOY ES LA PSU" />');
	} else if(dias<29 && dias>10) { /*Nada*/ }
	
	miedo.prepend('<!--[if lt IE 7]><script>DD_belatedPNG.fix("#miedo img");</script><![endif]-->');
	animoAD(miedo);

}

/*
================================================================
4. CONTENIDOS
================================================================
*/
function contenidos(){
if($('body').hasClass('servicios-de-cpech-online')||$('body').hasClass('especialistas-en-psu')) {
	//Variables
	var cont = $('#principal_int').find('.view'),
		row = cont.find('.row'),
		list = cont.children().length;
	//Creacion de navegacion
	cont.append('<div id="cont-nav"></div>');
	//Creacion de menu
	$('#lateral').append('<div class="block-wrap menu"><div class="block-inner"></div></div>');
	var menu = $('#lateral .block-wrap.menu'),
		menu2 = menu.find('.block-inner');
	menu2.append('<h2>'+$('#principal_int').find('h1').text()+'</h2>');
	menu2.append('<div class="content"><ul class="menu"></ul></div>');
	
	for(i=0;i<list;i++) {
		if(i==0) { var pos = ' first';}
		else if(i==list-1) { var pos = ' last';}
		else { var pos = '';}
		menu2.find('ul.menu').append('<li class="leaf'+pos+'"><a href="#">'+cont.find('.row:eq('+i+')').find('h2').text()+'</a></li>');
		$('#cont-nav').append('<span class="nums '+pos+'">'+(i+1)+'</span>');
	}
	
	//Preparacion
	//cont.width(list * (row.width()+30) );
	//Agrega clases para activo/oculto
	cont.find('.row:first').addClass('contActivo');
	cont.find('.row:not(:first)').addClass('contOculto').hide(0);
	menu.find('li:first').addClass('activo');
	$('#cont-nav span:first').addClass('activo');
	//Asigna IDs a contenido y menu. Agrega click a menu
	for(i=0;i<list;i++) {
		cont.find('.row:eq('+i+')').attr('id','cont'+(i+1));	
		menu.find('li:eq('+i+')').attr('id','link'+(i+1))
								 .click(function() { navega(this.id); return false; });
		$('#cont-nav span').eq(i).attr('id','cont-nav'+(i+1));
	}
	$('#cont-nav').prepend('<span class="titulo">'+$('#principal_int .titulo').text()+' | </span>');
	$('#cont-nav .nums').click(function(){ navega(this.id);return false; });
	//Funcion click para navegacion
	function navega(who) {
		//Variables
		var numID = who.replace(/(link|cont-nav)/g,''),
			tar = $('#cont'+numID), nav = $('#cont-nav'+numID), src = $('#link'+numID);
		//Si esta activo -> hacer nada.
		if( src.hasClass('activo') ) { return false; }
		//Si no esta activo...
		else {
			menu.find('.activo').removeClass('activo');
			src.addClass('activo');
			cont.find('.contActivo').removeClass('contActivo').addClass('exActivo');
			tar.removeClass('contOculto').addClass('preActivo');
			$('#cont-nav').find('.activo').removeClass('activo')
			$('#cont-nav').find('.titulo span').contents().replaceWith(tar.find('h2').text());
			nav.addClass('activo');
			//Anima cambio
			/*cont.animate({marginLeft:'-='+(row.width()+30)+'px'},500,function () { restore(tar) } );
			function restore(current) {
				current.addClass('contActivo').removeClass('preActivo');
				$('.exActivo').removeClass('exActivo').addClass('contOculto');
				cont.css({'margin-left':'0'});
			}*/
			$('.exActivo').animate({height:'hide'},500,function(){restore()});
			function restore() {
				$('.preActivo').animate({height:'show'},500)
							   .removeClass('preActivo')
							   .addClass('contActivo');
				$('.exActivo').removeClass('exActivo').addClass('conOculto');				
			}
		}
	}
} else {/*Nada*/}
}

/*
================================================================
5. LEER MAS
================================================================
*/
function leermas() {
	//Envuelve en contenedor, agrega control y oculta texto
	$('.leermas').wrap('<div class="leer-mas"></div>')
				 .removeClass('leermas')
				 .addClass('contenido')
				 .hide(0);
	$('.leer-mas').append('<div class="control">[<a href="#">leer m&aacute;s</a>]</div>');
	//Asigna ID a texto y control
	for(i=0;i<$('.leer-mas').length;i++){
		$('.leer-mas').eq(i).find('.contenido').attr('id','leer-cont-'+(i+1));
		$('.leer-mas').eq(i).find('.control a').attr('id','leer-ctrl-'+(i+1));
	}
	//Funcion control
	$('.control a').click(function() {leerClickr(this.id); return false });
	function leerClickr(src){
		var tar = src.replace('ctrl','cont'),
			leerCtrl = $('#'+src),
			leerCont = $('#'+tar);
		//Oculta o despliega segun estado actual
		leerCont.toggleClass('showing')
				.slideToggle(500);
		//Cambia texto de control segun estado
		if( leerCont.hasClass('showing') ){
			leerCtrl.contents().replaceWith('ocultar');
		} else {
			leerCtrl.contents().replaceWith('leer m&aacute;s');
		}
	}
}
/*
================================================================
6. STAT MENU
================================================================
*/
function statMenu() {
	var bodyClass = $('body').attr('class');
	$('#menu-principal').find('li#'+bodyClass).addClass('activo');
	$('#menu-principal').find('li#'+bodyClass+' a').click(function(){return false})
	//Actualiza ruta de menu
	if($('body').hasClass('front')) {/*Nada*/}
	else {
		for(i=0;i<=$('#menu-principal').find('li').length;i++) {
			current = $('#menu-principal').find('li:eq('+i+')');
			current.find('a').attr('href','../'+current.attr('id'));
		}
		$('#menu-principal').find('li:eq(0)').find('a').attr('href','../');
	}
}

/*
================================================================
7. HORARIO DE CURSOS
================================================================
*/
function horarioOnline() {
	var body = $('body');
	//Ejecuta solo en Home y Cursos
	if(body.hasClass('front')||body.hasClass('cursos-de-cpech-online')) {
		//Ejecuta solo si existe popup
		if( $('#modal').length > 0 ) {
			var cont = $('#modal'), curso = cont.find('#horarios .curso');
			curso.not('.'+cont.attr('class')).addClass('non');
		}
	}
	else {return false;}
}
/*
================================================================
8. Page peel
================================================================
*/
function pagePeel() {
	var peel = $('#peel'), vel = 350;
	if ($('body').hasClass('front')) { var ruta = ''; } else { ruta = '../'; }
	peel.remove().prependTo('#general');
	peel.children().wrapAll('<div id="peel-cont"></div>');
	peel.append('<img id="peel-ctrl" src="'+ruta+'img/page-peel.png" />');
	
	var ctrl = peel.find('#peel-ctrl'), cont = peel.find('#peel-cont');
	setSize(65,60,56);
	animaSize(150,158,150,vel);
	setTimeout(function(){animaSize(65,60,56,vel);},3000);
	wigglePeel('do');
	peel.hover( function() { wigglePeel('undo');animaSize(200,208,200,500); }, function() { animaSize(65,60,56,500);wigglePeel('do') } );
	
	function setSize(w,h1,h2) {
		peel.width(w+'px').height(h1+'px');
		cont.width(w+'px').height(h2+'px');
		ctrl.width(w+'px').height(h1+'px');
	}
	function animaSize(w,h1,h2,vel) {
		peel.animate({width:w+'px',height:h1+'px'},vel);
		cont.animate({width:w+'px',height:h2+'px'},vel);
		ctrl.animate({width:w+'px',height:h1+'px'},vel);
	}
	function wigglePeel(caso){
		if (caso=='do') { doLoop = setInterval(function(){ /*animaSize(63,57,53,500)*/animaSize(65,60,56,500);animaSize(75,70,66,500)},2000); }
		else { clearInterval(doLoop); }
	}
}