/* js for http://hipertipo.com/
Gustavo Ferreira, 2010-2012 */

/* ----- controller ----- */

function hipertipo() {
	var w = window,
		d = document,
		section = getSection(d),
		s = readCookie('h_mode');
	if (s) {
		setActiveStyleSheet(s);
	}
	moveScroller();
	// interaction
	$(w).jkey('i', function() {
		if (w.getSelection().anchorNode !== null) {
			var thiselement = w.getSelection().anchorNode.tagName;
			if (thiselement != 'FORM') {
				switchStyleSheet();
			} else {
				pass
			}
		} else {
			switchStyleSheet();		
		}
	})
	$(w).jkey('g', function() {
		if (w.getSelection().anchorNode !== null) {
			var thiselement = w.getSelection().anchorNode.tagName;
			if (thiselement != 'FORM') {
				showGrid();
			} else {
				pass
			}
		} else {
			showGrid();
		}
	})
	// section-specific
	if ( section != "Home") {
		highlightMenu();
	}
	if ( section == "Tweets" || section == "Tags" ) {
		tweets();
	}
	if ( section == "Wiki") {
		$(d).ready(function() {
			$("#nodes-index").tablesorter();
		}); 
	}
	if ( section == "Code") {
		$(d).ready(function() {
			$("#commits-index").tablesorter({
				sortList: [[1,1]], 
			});
		}); 
	}
	if ( section == "Links") {
		$(d).ready(function() {
			$("#links-index").tablesorter();
		}); 
	}
	if ( section == "Books") {
		$(d).ready(function() {
			$("#books-index").tablesorter();
		}); 
	}
	if ( section == "Hours") {
		$(d).ready(function() {
			$("#hours-index").tablesorter();
		}); 
	}
	if ( section == "Intranet") {
		$(d).ready(function() {
			$(".tablesorter").tablesorter();
		}); 
	// modular
	if ( section === "Modular") {
		Modular();
	}

	}
	if ( section == "Modular" ) {
		Modular();
	}
	if ( section == "Imperial" ) {
		Imperial();
	}	
	if ( section == "Geometrica" ) {
		Geometrica();
	}
	if ( section == "Gothica" ) {
		Gothica();
	}
	if ( section == "Segments" ) {
		Segments();
	}
	if ( section == "Elementar" ) {
		Elementar();
	}
	if ( section == "Quantica Bitmap" ) {
		QuanticaBitmap();
	}
	if ( section == "Guaraná" ) {
		hFont('guarana');
	}
	if ( section == "Synthetica" ) {
		hFont('synthetica');
	}
	if ( section == "Quantica" ) {
		hFont('quantica');
	}
	if ( section == "Mechanica" ) {
		hFont('mechanica');
	}
	if ( section == "Publica" ) {
		hFont('publica');
	}
	if ( section == "Magnetica" ) {
		hFont('magnetica');
	}
	if ( section == "Jornalistica" ) {
		hFont('jornalistica');
	}
}

/* ----- fonts ----- */

function hFont(familyName) {
	function font_name(familyName, wt) {
		var name = familyName + '_' + wt + '5';
		return name;
	}
	function update(familyName) {
		var wt = $('#param_weight').val();
		var sc = $('#param_scale').val();
		$('#font_name p').removeClass();
		$('#font_name p').addClass(font_name(familyName, wt));
		$('#font_name p').css({
			'font-size' : sc + 'px',
			'line-height' : '110%'
		});
	}
	$(document).ready(function () {
		update(familyName);
		$('#font_family').change(function () {
			if ($(this).val() !== '') {
				$('#font_menu').attr('action', $(this).val());
				$('#font_menu').submit();
			}
		});
		$('#param_weight').change(function () {
			update(familyName);
		});
		$('#param_scale').change(function () {
			update(familyName);
		});
	});
}

function Elementar() {
	function font_name(st, ht, vs, hs, wd) {
		var name = 'E' + st + ht + vs + hs + wd + 'A';
		console.log(name);
		return name;
	}
	function update() {
		var st = $('#param_style').val(),
			ht = $('#param_height').val(),
			vs = $('#param_vstroke').val(),
			hs = $('#param_hstroke').val(),
			wd = $('#param_width').val(),
			sc = $('#param_scale').val();
		// $('#font_name p').removeClass();
		// $('#font_name p').addClass(font_name(st, ht, vs, hs, wd));
		$('#font_name p').css({
			'font-family' : font_name(st, ht, vs, hs, wd),
			'font-size' : (ht * sc) + 'px',
			'line-height' : parseInt(ht * sc) + 4 + 'px'
		});
	}
	$(document).ready(function () {
		update();
		$('#font_family').change(function () {
	        if ($(this).val() !== '') {
				$('#font_menu').attr('action', $(this).val());
				$('#font_menu').submit();
			}
		});
		$('#param_style').change(function () {
			update();
		});
		$('#param_height').change(function () {
			update();
		});
		$('#param_vstroke').change(function () {
			update();
		});
		$('#param_hstroke').change(function () {
			update();
		});
		$('#param_width').change(function () {
			update();
		});
		$('#param_scale').change(function () {
			update();
		});
	});
}

function Imperial() {
	function font_name(st, wt, wd) {
		var name = 'imperial_' + st + '_18_' + wt + '_' + wd;
		return name;
	}
	function update() {
		var st = $('#param_style').val(),
			wt = $('#param_weight').val(),
			wd = $('#param_width').val(),
			sc = $('#param_scale').val();
		$('#font_name p').removeClass();
		$('#font_name p').addClass(font_name(st, wt, wd));
		$('#font_name p').css({
			'font-size' : (18 * sc) + 'px',
			'line-height' : (22 * sc) + 'px'
		});
	}
	$(document).ready(function () {
		update();
		$('#font_family').change(function () {
	        if ($(this).val() !== '') {
				$('#font_menu').attr('action', $(this).val());
				$('#font_menu').submit();
			}
		});
		$('#param_style').change(function () {
			update();
		});
		$('#param_weight').change(function () {
			update();
		});
		$('#param_width').change(function () {
			update();
		});
		$('#param_scale').change(function () {
			update();
		});
	});
}

function Segments() {
	function font_name(sz, wd) {
		var name = 'segments_' + sz + '_' + wd;
		return name;
	}
	function update() {
		var sz = $('#param_size').val(),
			wd = $('#param_width').val(),
			sc = $('#param_scale').val(),
			lineheight = (parseInt(sz) + 4) * sc;
		$('#font_name p').removeClass();
		$('#font_name p').addClass(font_name(sz, wd));
		$('#font_name p').css({
			'font-size' : (sz * sc) + 'px',
			'line-height' : lineheight + 'px'
		});
	}
	$(document).ready(function () {
		update();
		$('#font_family').change(function () {
			if ($(this).val() !== '') {
				$('#font_menu').attr('action', $(this).val());
				$('#font_menu').submit();
			}
		});
		$('#param_size').change(function () {
			update();
		});
		$('#param_width').change(function () {
			update();
		});
		$('#param_scale').change(function () {
			update();
		});
	});
}

function QuanticaBitmap() {
	function font_name(sz) {
		var name = 'quantica_bitmap_' + sz + '_1_1';
		return name;
	}
	function update() {
		var sz = $('#param_size').val();
		var sc = $('#param_scale').val();
		$('#font_name p').removeClass();
		$('#font_name p').addClass(font_name(sz));
		$('#font_name p').css({
			'font-size' : (sz * sc) + 'px',
			'line-height' : ((sz * sc) + 5) + 'px'
		});
	}
	$(document).ready(function () {
		update();
		$('#font_family').change(function () {
			if ($(this).val() !== '') {
				$('#font_menu').attr('action', $(this).val());
				$('#font_menu').submit();
			}
		});
		$('#param_size').change(function () {
			update();
		});
		$('#param_scale').change(function () {
			update();
		});
	});

}

function Geometrica() {
	function font_name(wt) {
		var name = 'geometrica_' + wt;
		return name;
	}
	function update() {
		var wt = $('#param_weight').val();
		var sc = $('#param_scale').val();
		$('#font_name p').removeClass();
		$('#font_name p').addClass(font_name(wt));
		$('#font_name p').css({
			'font-size' : (35 * sc) + 'px',
			'line-height' : (39 * sc) + 'px'
		});
	}
	$(document).ready(function () {
		update();
		// change font family
		$('#font_family').change(function () {
			if ($(this).val() !== '') {
				$('#font_menu').attr('action', $(this).val());
				$('#font_menu').submit();
			}
		});
		// weight callback
		$('#param_weight').change(function () {
			update();
		});
		// resolution callback
		$('#param_scale').change(function () {
			update();
		});
	});
}

function Gothica() {
	function font_name(st) {
		var name = 'gothica_' + st;
		return name;
	}
	function update() {
		var st = $('#param_style').val();
		var sc = $('#param_scale').val();
		$('#font_name p').removeClass();
		$('#font_name p').addClass(font_name(st));
		$('#font_name p').css({
			'font-size' : (16 * sc) + 'px',
			'line-height' : (14 * sc) + 'px'
		});
	}
	$(document).ready(function () {
		update();
		$('#font_family').change(function () {
			if ($(this).val() !== '') {
				$('#font_menu').attr('action', $(this).val());
				$('#font_menu').submit();
			}
		});
		$('#param_style').change(function () {
			update();
		});
		$('#param_scale').change(function () {
			update();
		});
	});
}

function Modular() {
	// make font name from parameters
	function font_name(wt, sz, rs) {
		var name = 'modular_' + wt + '_' + sz + '_' + rs;
		return name;
	}
	// update sample
	function update() {
		var sz = $('#param_size').val(),
			wt = $('#param_weight').val(),
			rs = $('#param_resolution').val(),
			sc = $('#param_scale').val();
		$('#font_name p').removeClass();
		$('#font_name p').addClass(font_name(sz, wt, rs));
		$('#font_name p').css({
			'font-size' : sz * sc,
			'line-height' : ((sz * sc) + 6) + 'px'
		});
	}
	// jump menu
	$(document).ready(function () {
		update();
		$('#font_family').change(function () {
			if ($(this).val() != '') {
				$('#font_menu').attr('action', $(this).val());
				$('#font_menu').submit();
			}
		});
		$('#param_size').change(function () {
			update();
		});
		$('#param_weight').change(function () {
			update();
		});
		$('#param_resolution').change(function () {
			update();
		});
		$('#param_scale').change(function () {
			update();
		});
	});
}

/* ----- utilities ----- */

function jump(form) {
	var myindex = form.menu.selectedIndex;
	if (form.menu.options[myindex].value != "0") {
		window.open(form.menu.options[myindex].value,
		target="_blank");
	}
}

function highlightMenu() {
	// highlight menu
	var url = window.location.pathname;
	var a = url.split('/');
	var section;
	$("a[href$='" + url + "']").addClass('current');
	if (a.length > 3) { 
		section = a.reverse().slice(2,3);
		if (section != 'demos') {
			url_section = a.slice(2,-1);
			url_section.reverse();
			url_section = '/' + url_section.join('/') + '/';
			$(".nav_main a[href$='" + url_section + "']").addClass('current');
		}
	}
}

function showGrid() {
	// 16 columns
	if ( $('#container').hasClass('container_16') ) {
		$('#container').toggleClass('showgrid_16');
	}
	// 12 columns
	else if ( $('#container').hasClass('container_12') ) {
		$('#container').toggleClass('showgrid_12');
	}
}

function switchStyleSheet() {
	// toggle between pos/neg stylesheets
	var c = getActiveStyleSheet();
	if ( c == 'hipertipo_pos' ) {
		setActiveStyleSheet('hipertipo_neg');
		createCookie('h_mode', 'hipertipo_neg', 7);
	}
	else {
		setActiveStyleSheet('hipertipo_pos');
		createCookie('h_mode', 'hipertipo_pos', 7);
	}
}

function getSection(d) {
	// get section name from document
	var section = d.title;
	var l = section.split(" · "); //.slice(1);
	if (l.length > 1) {
		section = l.slice(1);
	}
	return section;
}

function tweets() { 
	// linkify tweets
	$('.hTweet').each(function() {
		var txt = $(this).text().slice(11);
		txt = linkify(txt);
		$(this).html(txt);
	});
}
	
function RGBtoHex(R, G, B) {
	// convert RGB color to hexadecimal
	return toHex(R) + toHex(G) + toHex(B)
}
	
function goToPage(url) {
	if (url != "") {
		window.open(url);
	}
}

function moveScroller() {
	var a = function() {
		var b = $(window).scrollTop(),
			d = $("#scroller-anchor").offset().top,
			c = $("#scroller");
		if (b > d) {
			c.css({
				position : "fixed",
				top : "12px"
			})
		} else {
			if (b <= d) {
				c.css({
					position : "relative",
					top : ""
				})
			}
		}
	};
	$(window).scroll(a);
	//a();
}

