//if(!window.console)
//window.console = {debug:function(){},log:function(){}};

//$('a[title]').qtip({ style: { name: 'cream', tip: true } })
//charger le nombre de followers ici : http://twittercounter.com/api/?username=FGRibreau&output=xml&results=3

//http://www.rescuetime.com/chart/top_applications.xml?year=2009&month=6&day=23&view_type=week&FCTime=1516 <= resucetume
//

_ = {
v:'Alpha 1',

$console:$('#left'),
$consoleUl:$('#left ul'),
$center:null,
$content:$('.content'),
$right:$('#right'),
uri:{
	lifestream:'./lifestream/'
},

init:function(){
	//Firebug's king
	if(!("console"in window)||!("firebug"in console)){
		//came from tweeter
		var names=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];
		window.console={};
		for(var i=0;i<names.length;++i){
			window.console[names[i]]=function(){};
		}
	}
	
	$("img").lazyload({threshold:400});
	
	//$("a[href^='http://']").attr('target','_blank');
	$("a[href^='http://']").click(function(){
		//stats ?
		this.target = "_blank";
	});
	
	_.$center = $('#center');
	
	//si on est pas sous webkit
	if(!Modernizr.cssanimations)
		jQuery.getScript('/js/css3transition.js');
},

log:function(obj){
	//{txt:, id:, social:}
	/*_.$consoleUl
		.prepend('<li><div class="spriteS '+obj.social+'"></div><p id="'+obj.id+'">'+obj.txt+'</p><hr/></li>');
	_.$consoleUl.find('li:first').show(500);*/
},
strl:function(str){
	return (str && str.length > 50?str.substr(0,50)+'...':str);
},

ucfirst:function(str){
    str += '';
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1);
},

getJsCallback:function(uri){
	uri = uri.split('&');
	var i = uri.length-1;
	
	while(uri[i].indexOf('jsCallback') == -1){
		i--;
	}
	
	uri = (uri[i].split('='))[1];
	
	return _.resolveCallback.call(_,uri) || console.log('Error mauvais jsCallback !! ',uri);
},
resolveCallback:function(str){
	str = str.split('.');
	res = this;
	
	
	for(var i = 0; i < str.length;i++){
		res = res[str[i]];
	}
	return res;
},

urlToA:function(text)
{
if( !text ) return text;

text = text.replace(/((https?\:\/\/|ftp\:\/\/)|(www\.))(\S+)(\w{2,4})(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/gi,function(url){
	nice = url;

	if(url.match('^https?:\/\/'))
		nice = nice.replace(/^https?:\/\//i,'');
	else
	url = 'http://'+url;

	return '<a target="_blank" href="'+ url +'">'+ nice.replace(/^www./i,'') +'</a>';
});

return text;
},

createTooltip:function(data){
	return '<div class="tooltip">'
		+'<div class="tooltip-pointer-'+data.dir+'">'
			+'<div class="tooltip-pointer-'+data.dir+'-inner"></div>'
		+'</div>'
		+data.content
	+'</div>';
}
};

_.tick = {
	_hdl:null,
	_t:[],//[name,func, interval,const interval]
	_interval:1000,
	start:function(){
		_.tick._hdl = window.setInterval(_.tick._tick,_.tick._interval);
	},
	stop:function(){
		window.clearInterval(_.tick._hdl);
	},
	_tick:function(){
		var services = [];
		var date = [];
		
		for(var i = 0; i < _.tick._t.length; i++){
			_.tick._t[i][3] -= _.tick._interval;
			if(_.tick._t[i][3] <= 0){
				_.tick._t[i][3] = _.tick._t[i][4];
				
				//Pipes ?
				if(_.tick._t[i][2]){
					services.push(_.tick._t[i][0]);
					
					//date.push(1244828606);
					console.debug(_[_.tick._t[i][0]].lastcheck_ts + ' == ' + _.tick._t[i][0]);
					date.push(_[_.tick._t[i][0]].lastcheck_ts);
				}
				else{
					console.debug('starting... ' + _.tick._t[i][0]);
					_.tick._t[i][1]();
				}
			}
		}
		
		//lance la requête
		if(services.length > 0)
			_.pipes.get(services,date);
	},
	
	//usePipe (default false) use the homemade pipe
	suscribe:function(serviceName,funcOrBool,interval){
		var func = false;
		var usePipe = false;
		
		if(typeof funcOrBool === 'boolean' && funcOrBool == true)
			usePipe = true;
		else
			func = funcOrBool;
		
		if(jQuery.inArray(_.tick._t,serviceName) == -1){
			_.tick._t.push([serviceName,func,usePipe,interval,interval]);
			
			if(!usePipe)
				_.tick._t[_.tick._t.length-1][1]();
		}
		else
			alert(serviceName + 'déjà dans la liste');
	},
	
	//reçoit l'intégralité des données JSON et répartie
	parser:function(data){
		console.debug(data);
	}
};

//accès aux Pipes
_.pipes = {
	url: _.uri.lifestream + '?services=[services]&date=[date]&_callback=?',

	get:function(arrServices, arrDate){
		$.getJSON(_.pipes.url.replace('[services]',arrServices.join(',')).replace('[date]',arrDate.join(',')), _.pipes.spread);
	},
	
	spread:function(data){
		if(data.length == 1){
			data = data[0];
			
			for(services in data){
				if(_[services])
					_[services].parse(data[services]);
			}
			
			delete(data);
		}
	}
};

$(function(){
	_.init();//init core
	_.tick.start();//init pipes
});