/*
================================================================
Scripts Cpech Online v1.6.2

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

================================================================
*/
$(document).ready(function(){
	$('a[rel*=facebox]').facebox();
	animaAds();
	rotaBanner();
	leermas();
	contenidos();
	statMenu();
	getTwits();
});
/*
================================================================
1. ROTACION DE BANNER
================================================================
*/
function rotaBanner() {
	if($('body').hasClass('front')) { var ruta = ''; }
	else { var ruta = '../'; }
	
	var cont = $('#banners'),
		vel = 1000, pausa = 8000, /* Velocidad y pausa de animacion en ms */
		ancho = 450;
	// Prepara divs para menu
	cont.wrap('<div id="bannerWrap"></div>');
	$('#bannerWrap').prepend('<div id="bannerFrame"><img src="'+ruta+'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 row = cont.find('.banner:eq('+i+')'),
			titulo = row.find('a').attr('title');
		row.attr('id','banner'+(i+1));
		//list.append('<li class="banner'+(i+1)+'"><a href="#" id="nav'+(i+1)+'">' +titulo+ '</a></li>' );
		list.append('<li class="banner'+(i+1)+'">' +titulo+ '</li>' );
	}
	
	//list.find('li a').click(function() { bannerNav(this.id); return false; });
	cont.width(ancho * cont.children().length);
	animar('auto');
	
	/* Rotacion de banners */
	function animar(estado) {
		mark(0);	
		if (estado == 'auto') { setInterval ( function(){ ani('auto'); }, pausa); }
		if (estado == 'nav') { ani('sig'); }
		/* Anima cambio */
		function ani(caso) {
			mark(2);
			cont.find('div:first').animate({marginLeft:"-="+ancho+"px"},vel);			
			setTimeout( function() {
				cont.find('div:first').css({'margin-left':'0'});
				if(caso == 'auto') { cont.find('div:first').remove().clone().insertAfter(cont.find('div:last')); }
				if(caso == 'nav') { cont.find('div:first').remove().clone().insertBefore(cont.find('#banner'+(parseInt(cont.find('div:first').attr('id').replace('banner',''))+1)));
				}
			},vel);
		}
		/* Destaca banner activo */
		function mark(when) {
			var list = $('#bannerList'), nodes = list.children();

			if(when==0){ var current = cont.find('div:first'); }
			if(when==1){ var current = cont.find('div:last'); }
			if(when==2){ var current = cont.find('div:first').next(); }
			//Elimina marca de banner anterior en menu
			if(list.find('.boldMe').length > 0) {
				/*list.find('li.boldMe').contents().wrap('<a href="#" id="'+list.find('.boldMe').attr('class')
																		.replace('banner','nav')
																		.replace(' boldMe','')+'"></a>');*/
				list.find('li.boldMe').removeClass('boldMe');
			}
			//Destaca banner actual en menu
			list.find('li.'+current.attr('id')).addClass('boldMe');
											   //.find('a')
											   //.replaceWith(list.find('li.'+current.attr('id')).find('a').text());
			/* Agrega area clickeable */
			var cLink = current.find('a').attr('href'),
				lTarget = current.find('a').attr('target');
			if(cLink != "") {
				$('.cLink').remove(); /*Borra links anteriores*/
				//Tiene Target
				if(lTarget != "") {
					$('#bannerClick').append('<a href="'+cLink+'" target="'+lTarget+'" class="cLink"><img src="'+ruta+'img/trans.gif" class="cLink" /></a>');
				//No tiene target
				} else {
					$('#bannerClick').append('<a href="'+cLink+'" class="cLink"><img src="'+ruta+'img/trans.gif" class="cLink" /></a>');
					}
			//No tiene link
			} else { $('.cLink').remove(); }
		}
	}
	/*Funcion navegar con menu*/
	function bannerNav(who) {
		var nid = who.replace('nav','');
			link = $('#'+who),
			li = $('li.banner'+nid);
			tar = cont.find('#banner'+nid);
		//Encuentra posicion de click
		for(i=0;i<nodes.length;i++) {
			myTar=i;
			if(cont.find('.banner:eq('+i+')').attr('id') == 'banner'+nid) { break; }
		}
		//Reordena banners
		count = 0;
		for(i=myTar;i<=nodes.length;i++) {
			cont.find('.banner:eq('+i+')').insertAfter(cont.find('.banner:eq('+count+')'));
			count++;
		}
		animar('nav');
	}
}
/*
================================================================
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 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>');
	}
	//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');
	//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; });
	}
	//Funcion click para navegacion
	function navega(who) {
		//Variables
		var tar = $('#cont'+who.replace('link','')),
			src = $('#'+who);
		//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');
			//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','../');
	}
}