﻿//Définition du type du navigateur
window.isIE = navigator.appName.substring(0,9) == 'Microsoft';

function replaceEntities(url)
{
	var out = url.replace('&','&amp;')
	out = url.replace('<','&lt;')
	out = url.replace('>','&gt;')
	out = url.replace('"','&quot;')
	out = url.replace("'",'&apos;')
	return out;
}

/**
* Do not call it from <head>
*/
function addJavascript(url)
{
	var xScript = document.createElement('SCRIPT');
	xScript.setAttribute('type','text/javascript');
	xScript.setAttribute('src',replaceEntities(url));
	return document.getElementsByTagName('HEAD')[0].appendChild(xScript);
}

function windowOnLoadHandler()
{
	setCurrentTab();
	setLinksToBlank();
	twitterCall();
	googleAnalytics();
	hitPost();
}

/**
 * Gestion de la sélection active sur les onglets
 */
function setCurrentTab()
{
	if(typeof document.getElementById == 'undefined')
		return;

	var menu = document.getElementById('tab-menu');
	var aUrl = window.location.href.split('/');

	var aArr= new Array();
	for(var i=0; i<menu.childNodes.length; i++)
		if(menu.childNodes[i].nodeName.toLowerCase() == 'a')
			aArr.push(menu.childNodes[i]);

	//cv.tekool.net est un cas particulier
	if(aUrl[2] == 'cv.tekool.net')
		return aArr[2].className = 'currentTab';

	//Accueil est un cas particulier
	if(aUrl.length < 4)
		return aArr[0].className = 'currentTab';

	switch(aUrl[3].toLowerCase())
	{
		case '' :
		case 'index.php' :
		case 'blog' :
			aArr[0].className = 'currentTab';
		break;

		case 'cv' :
			aArr[1].className = 'currentTab';
		break;

		case 'about' :
			aArr[2].className = 'currentTab';
		break;
	}
}

if(typeof document.readyState != "undefined")
{
	window.readyStateIntervalHeaderJs = setInterval('onReadyStateIntervalHeaderJs()',20);
	onReadyStateIntervalHeaderJs = function()
	{
		if(document.readyState == 'complete')
		{
			clearInterval(window.readyStateIntervalHeaderJs);
			windowOnLoadHandler();
		}
	}
}
else
if(typeof window.addEventListener != "undefined")
{
	window.addEventListener("load", windowOnLoadHandler, false);
}

function setLinksToBlank()
{
	if(typeof document.getElementsByTagName == 'undefined')
		return;

	var arrA = document.getElementsByTagName('a');
	for(var i=0; i<arrA.length; i++)
		if(typeof arrA[i].href != 'undefined' && arrA[i].href.indexOf('www.tekool.net') == -1)
			arrA[i].target = '_blank';
}

/*****************************************************************************/
// Twitter
/*****************************************************************************/

function twitterCall()
{
	addJavascript('http://twitter.com/statuses/user_timeline/tekool.json?callback=twitterCallback&count=3');
}

function twitterCallback(obj)
{
	var twitters = obj;
	var statusHTML = "";
	var username = "";
	for(var i=0; i<twitters.length; i++)
	{
		username = twitters[i].user.screen_name;
		var text = twitters[i].text;
		text = addUrls(text);
		text = addAts(text);
		statusHTML += '<div class="tweet"><span>'+text+'</span> <a class="twitterago" style="font-size:85%" href="http://twitter.com/'+username+'">'+relative_time(twitters[i].created_at)+'</a></div>';
	}

	var twitterDiv = document.getElementById('twitter_div');
	
	if( twitterDiv )
	twitterDiv.innerHTML = '<div id="twitter_update_list">' + statusHTML + '</div>';

}

function relative_time(time_value)
{
	var values = time_value.split(" ");
	time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];

	var parsed_date = Date.parse(time_value);
	var relative_to = (arguments.length > 1) ? arguments[1] : new Date();

	var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
	delta = delta + (relative_to.getTimezoneOffset() * 60);

	if (delta < 60)
		return 'less than a minute ago';
	else 
	if(delta < 120)
		return 'about a minute ago';

	else
	if(delta < (60*60))
		return (parseInt(delta / 60)).toString() + ' minutes ago';
	else
	if(delta < (120*60))
		return 'about an hour ago';
	else
	if(delta < (24*60*60))
		return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
	else
	if(delta < (48*60*60))
		return '1 day ago';
	else
		return (parseInt(delta / 86400)).toString() + ' days ago';
}

function addUrls(text)
{
	var out = text;

	var i=0;
	var start;
	while( ( start = out.toLowerCase().indexOf("http://",i) ) != -1)
	{
		i = start+1;

		while("abcdefghijklmnopqrstuvwxyz0123456789%.-?&|()*+'$!:,;_/#~=@".indexOf(out.charAt(i).toLowerCase()) != -1 && i<out.length)
			i++;

		var end = i;

		var url = out.substring(start,end);
		var miniurl = url.substring(7,7+12);
		var replacement = '<a class="twitterlink" title="' + url + '" href="' + url + '">' + miniurl + '…</a>';
		out = out.substring(0,start) + replacement + out.substr(end);

		i = start + replacement.length;
	}

	return out;
}

function addAts(text)
{
	var re = new RegExp('@([A-Za-z0-9_]*)','g');
	return text.replace(re,'<a class="twitterpeople" href="http://twitter.com/$1">@$1</a>');
}

function getXMLHttpRequest()
{
	if( window.XMLHttpRequest )
	{// code for IE7+, Firefox, Chrome, Opera, Safari
		return xmlhttp=new XMLHttpRequest();
	}
	else
	{// code for IE6, IE5
		return xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
}

function hitPost()
{
	var xmlhttp = getXMLHttpRequest();

	var req = "";
	if( typeof window.singlePostId == "string" )
		req = "?post_id=" + escape(window.singlePostId);

	xmlhttp.open( "GET", "http://www.tekool.net/blog/hit.php" + req, true );
	xmlhttp.onreadystatechange = function()
	{
		if( xmlhttp.readyState==4 && xmlhttp.status==200 )
			onHitCount(xmlhttp.responseText);
	}

	xmlhttp.send( req );
}

function onHitCount( result )
{
	try
	{
		eval('var obj = ' + result + ';');
	}
	catch( e )
	{
		//ParseError nothing to do here
		return;
	}

	for( var id in obj )
	{
		var count = obj[id];
		var htmlElement = document.getElementById('hit' + id);
		if( htmlElement == null || htmlElement.className == null )
			continue;

		var lang = htmlElement.className.split(' ').pop();
		if( lang == 'fr' )
			htmlElement.innerText = hitCountFr( count );
		else
			htmlElement.innerText = hitCountEn( count );
	}
}

function hitCountEn( count )
{
	switch( count )
	{
		case 0:
			return 'Never read';

		case 1:
			return 'One read';
		break;

		case "":
			return 'Reads count deactivated';

		default:
			return count + ' reads';
	}
}

function hitCountFr( count )
{
	switch( count )
	{
		case 0:
			return 'Aucune lecture';

		case 1:
			return 'Une lecture';
		break;

		case "":
			return 'Comptage des lectures désactivé';

		default:
			return count + ' lectures';
	}
}

/*****************************************************************************/
// Google analytics
/*****************************************************************************/
function googleAnalytics()
{
	var pageTracker = window._gat._getTracker("UA-4777798-3");
	pageTracker._initData();
	pageTracker._trackPageview();
}
